ich wollte ein kleines Bild auf meiner GUI haben, aber habe es nicht hinbekommen, dass das Bild nur mit den eigenen Konturen erscheint, sondern es ist immer ein blöder Rahmen drumrum. Das Bild selber hat den rahmen nicht, denn es ist ein transparentes GIF. In meiner GUI habe ich auch alles versucht, u.a. transparent und layered, aber nichts hilft. Wie macht ihr das?
Beiträge von RedMoon
-
-
-
-
-
ich habe da ein Script mit der V.3.2.10.0 geschrieben und möchte es mit der aktuellen weiterbearbeiten, bekomme aber fehler. Ich ahbe inzwischen auch gefunden woran es liegt und zwar an den Includes. ich habe folgende:
#include <GUIConstants.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <IE.au3>muss aber noch folgende hinzufügen damit es funktioniert
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>das kann doch nicht sein, oder?
-
mit der GUI wirds auch nicht gehen, da innerhalb der GUI auch "gepollt" wird, also wird die andere Schleife acuh wieder unterbrochen...aber moment...ich denke ich kann anderes lösen: ich werde meine Schleife in die GUI Schleife mitintegrieren...das könnte gehen...danke für den gedankenstoss
OffTopic: ich muss sagen, dass ich dieses Forum und die Leute hier super finde...auf jede Frage bekommmt man eine Antwort, egal wie oft diese schonmal gestellt wurde. Hoffe das bleibt so...kenne aus anderen Foren auch negative Beispiele...TOP (Daumen hoch)
-
ok...hab es umgeschrieben, geht jetzt...sagt mal, wie kann ich eine blbg Aktion in einer Schleife ablaufen lassen, während gleichzeitig eine Eingabe in einer Inputbox abgefrgat wird? Sobald die Inputbox auftaucht, hört die Schleife auf durchzulaufen...ich benötige also so eine Art Multithread oder Multitasking
-
ich programmiere derzeit ein Programm, was erkennt wenn ein blbg. Browser startet. Das Programm ist recht komplex und in einer der Hauptfunktionen, was ständig die Prozesse durchpollt, gibt es ein Problem, dass es einen Stack Überlauf gibt, bzw. AutoIt vorher das ganze abbricht.
Das ganze sieht prinzipiell so aus:Func überwache_passwörter()
....x y z bla bla
überwache_browser()
EndFUncFunc überwache_browser()
..... badabing bum usw
überwache_passwörter()
EndFunces läuft also alles in einer Art Schleife, bis mal ein browser startet, die Passwortdateien manipuliert werden oder eine andere Art von Aktion gestartet wird. Ausserhalb dieser "Unterbrechungen" pollt das ganze innerhalb dieser beiden Funktionen durch. Habt Ihr eine Idee, wieso sich die beiden Aufrufe zu einem Stackoverflow aufschaukeln?
-
hmm..so habe ich das ja noch garnicht versucht...ich habe wohl verlernt einfach zu denken...ist eigentlich logisch
-
ok...das hätte ich nun gelöst...funktioniert alles prima....aber ich bekomme nun kein Tray Menu hin, weil ein Tray Menu, ebenso wie die GUI in einer While Schleife durchläuft....irgendwie finde ich das jetzt doch schlehct gelöst, denn wie soll ich denn beide whiles ineinander verschachteln, ohne dass die sich beissen? Geht irgendwie nicht. Und die GUI wie bei VB üblich als OnEvent ummodeln möchte ich jetzt auch nicht mehr
-
ja so könnte es auch gehen, aber ich habe mich in AutoIt mit Pointern noch nicht beschäftigt (hoffe es ist einfacher als in C++). Musst du die $Variable global deklarieren? Arbeite sehr ungerne mit globalen Variablen
-
aha...das mit der lokalen Variable ist interessant, da ich innerhalb der Funktion eben diese Variable nicht mehr deklarieren konnte und jetzt weiss ich dass das im Funktionskopf erledigt wird, gut. Sowas in der Art dachte ich mir aber schon.
Bei mir ist die Funktion eher universell und wird vielen anderen Funktionen mit verschiedenen Parametern aufgerufen. Dann könnte ich es also so machen, dass die Parameter immer andere Namen haben um diese besser zu unterscheiden. Aber bei einfacheren Funktionen nehme ich gleiche Namen und es treten auch keine Probleme auf, wie evtl. in C++ ? -
von C++ und VB.Net kenne ich eine Paramerterübergabe so in der Art:
.
.
.
function_bla(par_x, par_y)
.
.Func function_bla(par_a, par_b)
rechne dies
tue das
usw
return(par_a,par_b)
endfuncman kann also die Parameter als par_x an par_a usw. übergeben, nur die Reihenfolge innerhalb der Klammer ist entscheidend. Gilt auch für die Rückgabewerte. Nun kann man in C++ auch direkt par_x an par_x übergeben, ist aber nicht ganz koscher. Möglich ist das, aber nicht gerne gesehen, da sich diese variablen bzw. Parameter bei unaufmerksam programmiertem Code überschreiben können. ich habe dies auch in AutoIt versucht und es geht auch beides, aber wie ist es "autoit-konform" programmiert? Wie macht Ihr das in der Regel?
-
Ja, das funktioniert auch!
Edit: Wobei ja eigentlich die While...WEnd-Schleife besser ist, da bereits am Schleifenanfang geprüft wird und so die Schleife u.U. gar nicht durchlaufen werden muss (spart in dem Fall die 200 ms Wartezeit, falls bereits ein Browserfenster offen ist):
[autoit]
[/autoit]
While ProcessExists('firefox.exe') + ProcessExists('iexplore.exe') + ProcessExists('opera.exe') = 0
Sleep(200)
WEndprima...danke für die antworten
-
aha, das sieht ja vielsverprechend aus...funktionierts auch? (sitze nicht an meinem PC zum testen)
-
eine Schleife mit ProcessExistwollte ich vermeiden. Ich wollte Processwait benutzen da mir das damit ausgefeilter erscheint als eine Schelife mit verschachtelten IFs...sonst keine Chance?
-
Hallo Leute, ich habe da ein kleines Problem. Und zwar möchte ich erkennen, sobald ein Prozess eines Browsers gestartet wird. Das klappzt auch prima mit einem,a ber wenn ich mehrere Browser abfragen möchte, gehst nicht:
$IE="iexplore.exe"
$FF="firefox.exe"
$OP="opera.exe"
processwait($IE) ---> klappt ohne Probleme aberprocesswait($IE or $FF or $OP) ---> klappt nicht, da er immer noch auf den ersten Prozess wartet, er geht also immer auf den iexplore.exe Prozess
Was könnte man da tun? Eine IF Abfrage ist mir für sowas einfach zu verschachtelt und in einer while Schleife ständig durchlaufen lassen möchte ich nicht, da mir das zu Ressourcenaufwändig ist. DIe OR Verknüpfung muss doch aber gehen