Beiträge von raiserle
-
-
In der Doku hatte ich nichts zur Kompatibilität gelesen. Also dort steht nichts ob abwärts oder nicht.
AutoIT-Version: 3.3.0.0
Die ist vom Dezember 2008.Soll ich mal updaten?!
Aber nicht, dass die Neuste dann nicht mit meinem OS läuft.. und noch mehr BUGS hat
Kann man auch mehrere Versionen von AutoIT nebeneinander laufen lassen?! Und wenn ja: Wie?
vG Henrik
-
@name22
Danke für die Info. Das hatte ich mir schon gedacht.... dass es gehen sollte - *KOPFKRATZ* !@Andy
Bitteschön!
AutoIT v3 Window Info: Summary:Spoiler anzeigen
>>>> Window <<<<
Title: Unbenannt - Editor
Class: Notepad
Position: 453, 277
Size: 829, 604
Style: 0x14CF0000
ExStyle: 0x00000110
Handle: 0x001A0BA4>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle: 0x001B0BD2>>>> Mouse <<<<
Position: 308, 15
Cursor ID: 0
Color: 0x989898>>>> StatusBar <<<<
1:
2: Zeile 1, Spalte 1>>>> Visible Text <<<<
>>>> Hidden Text <<<<
-
Wie ich eingangs schon erwähnte, bekomme ich - egal welche WinXXX Funktion ich benutze - als Handle immer eine "1" zurück.
Es ist auch egal, ob ich den Fenstertitel oder den Klassennamen benutze!Noch eine Sache, die mit aufgefallen ist:
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
[/autoit] [autoit][/autoit] [autoit]
$hWnd = WinActivate( "Unbenannt - " )
ConsoleWrite( @extended & ", hWnd=" & $hWnd & @LF ); Close the Notepad window using the handle returned by WinWait.
[/autoit] [autoit][/autoit] [autoit][/autoit]
WinClose($hWnd)
EndFunc ;==>Example
Wenn ich schon ein offenes Notepad habe, wird dies in den Vordergrund geholt. Laut Doku gibt "WinActivate" das Handle zurück.
Und wie es halt bei mir so ist: es ist wieder "1". Das Notepad wird auch nicht geschlossen.Vllt. könnte das mal einer verifizieren, der auch noch ein XP besitzt, ob bei Ihm der selbe Effekt auftritt.
Wie sieht's bei den Win7(++) Nutzern aus? Funktioniert dort das Beispiel?vG Henrik
-
@Kanashius
Leider geht's so auch nicht. Er schließt das Fenster nicht. Das lässt wieder vermuten, dass das Handle nicht stimmt?Habt ihr das mal bei euch probiert? Vllt. liegt's ja auch an meinem System!? (XPSP3)
OT: Ich habe das ganze mal unter C# mit WinAPI probiert.. dort klappt es problemlos.
AutoIT greift doch auch auf die WinAPI zurück?! - Warum will das dort einfach nicht gelingen?vG Henrik
-
Nein, so funktioniert es auch nicht. Deswegen hab ich die Zeile ja auskommentiert.
Ich habe die Klasse mit Spy++ nachgeschaut und dort kommt "Edit" raus.Aber wie schon gesagt, auch mit
[autoit]Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)
[/autoit]funktioniert es nicht.
-
Lösung
Hallo Leute,
ich habe ein Problem mit WinActivate, bzw mit allen ähnlichen Funktionen.
In diesem Beispiel soll das Notepad geöffnet, aktiviert und wieder geschlossen werden.
Leider wird es nicht geschlossen und auch bei anderen Fenster funktioniert das so nicht.Ich habe mal ein "ConsoleWrite" rein gepackt.... $hWnd ist zwar 1.. sollte doch aber irgendwas mit "0x00000000" raus kommen.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Example()Func Example()
[/autoit] [autoit][/autoit] [autoit]
; Run Notepad
Run("notepad.exe"); Wait 10 seconds for the Notepad window to appear.
[/autoit] [autoit][/autoit] [autoit]
;Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)
Local $hWnd = WinWait("[CLASS:Edit]", "", 10); Activate the Notepad window using the handle returned by WinWait.
[/autoit] [autoit][/autoit] [autoit]
WinActivate($hWnd)
ConsoleWrite( @extended & ", hWnd=" & $hWnd & @LF )
;@extended ist 0 und $hWnd ist 1; Close the Notepad window using the handle returned by WinWait.
[/autoit] [autoit][/autoit] [autoit][/autoit]
WinClose($hWnd)
EndFunc ;==>ExampleDas Verhalten hab ich bei allen Fenstern, die ich versuche in den Vordergrund zu bringen.
Was mache ich falsch?Kleiner Link zu einem Post, der zeigt, dass es gehen sollte.. mit dem "0x00000000"
vG Henrik
-
Hallo autoBert,
danke für die Hilfe. Es funktioniert mit deinem Link.
Frage:Zitat... solange du nicht die nötigen Vorleistungen bringst...
Was meinst du damit? Ich denke, ich habe alles nötige gepostet. Wie die GUI aufgebaut wird, ist doch für die Frage nicht relevant - und würde den Code doch nur unnütz aufblähen. Welche Form-Elemente vorhanden sind, hatte ich doch geschrieben.
Für den doppel-Post hatte ich mich im Chat entschuldigt. Ich habe die Mitteilung nicht gelesen. Sry.
vG raiserle
-
Hallo Gemeinde,
ich befasse mich erst seit kurzer Zeit mit
[autoit][/autoit][autoit][/autoit][autoit]
AutoIT. Und nun stehe ich vor einem Problem, wo ich nicht weiß, wie ich
es lösen kann.
Es geht um eine GUI, die beim betätigen des Knopfes
"Start" eine Zählschleife hoch zählt ( 0 - 9 ). Ein weiterer Knopf
"Stop" soll die Zählschleife vorher beenden.#include <rcc_dialogs.au3> ; Dialog $btnStart und $btnStop auf Form platziert
[/autoit][autoit][/autoit][autoit]while 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg( 1 )
Switch $nMsg[ 0 ]
Case $GUI_EVENT_CLOSE
Switch $nMsg[ 1 ]
Case $frmMain
ExitLoop
EndSwitch
Case $btnStart
TestA()
Case $btnStop
MsgBox( 0, "abbruch", "Abbruch in GUI" )
EndSwitch
WEndFunc TestA()
[/autoit][autoit][/autoit][autoit][/autoit]
$i = 0
While $i < 10
ConsoleWrite( $i & @CRLF )
$nMsg = GUIGetMsg( 1 )
Switch $nMsg[ 0 ]
Case $btnStop
MsgBox( 0, "abbruch", "Abbruch in Zählschleife" )
ExitLoop
EndSwitch
Sleep( 2000 )
$i = $i +1
WEnd
EndFuncLeider
wird das Event in der Zählschleife nicht berücksichtigt. Er wird erst
nach dem Verlassen der Zählschleife wird der Event in der GUI-Loop
ausgelöst.So, nun aber zur Frage: Wie kann man das Event in der Zählschleife abfangen?
vG raiserle