Vielleicht ist es einfacher, einfach vorher einen unsichtbaren Button zu erstellen, der dann einfach nur "visible" geschaltet wird?
Beiträge von KloMeister
-
-
Die bessere Möglichkeit wäre es, Winamp über API (Application Programming Interface) fernzusteuern.
Winamp hat diverse Steuerungsmöglichkeiten von sich aus eingebaut, ohne das man den Umweg gehen muss und Tasten(Kombinationen) bei aktivem Fenster senden muss.
Natürlich ist die Deklaration der Commands und das Einbinden erstmal etwas komplizierter, aber danach wird alles besser
Hier gibt es die Commands: http://forums.winamp.com/showthread.php?threadid=180297
Das ist kein "muss", aber ich wollte zumindest den besseren Weg mal erwähnen.
So hat es bei mir funktioniert:
[autoit];Dekleration der API Commands
[/autoit]
Global Const $cWA_WM_COMMAND = 0x0111
Global Const $WINAMP_BUTTON2 = 40045
ShellExecute("Winamp") ;Winamp Ausführen
Local $hWinamp = WinWait("[CLASS:Winamp v1.x]") ;Auf Winamp warten und das Handle herausbekommen
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWinamp, "int", $cWA_WM_COMMAND, "int", $WINAMP_BUTTON2, "int", 0) ;Druecke Winamp Play-Knopf -
Ich glaube nicht, dass man da so einfach etwas abfangen kann.
Es handelt sich hier ja nicht um eine Schnittstelle, über die diverse Datenpakete wie in einer Netzwerkverbindung gesendet werden.Es gibt die Möglichkeit mit "Memory Software" im Prozesspeicher zu schauen, was sich dort so ändert, während du das Logo entsprechend ein-/ausschaltest.
Mit fortgeschrittenen Kenntnissen im Assembler Bereich, kommst du da sicher weiter.
Wenn du Glück hast, wird der Befehl aus einer .dll "gecalled" und du hast evtl. die Möglichkeit diesen Aufruf von deiner Anwendung aus, auszuführen. Das klappt aber auch nur, wenn du die entsprechende .dll mit dem entsprechendem Befehl kennst.
Kann sein dass es da noch andere Möglichkeiten, gibt, aber das wäre so mein Einfall. Aber ich kann dir da von hier aus nicht helfen, dazu bräuchte ich die entsprechende Tastatur und Software.
-
Jo, dankeschön, dass funktioniert.
-
Hi,
Ich möchte meine Form einer bestimmten Gegebenheit anpassen. Leider habe ich ein Problem mit WinMove. Mit der Funktion WinMove, wird das Fenster immer etwas kleiner, als es eig. werden müsste.
Um das zu veranschaulichen, habe ich mal diesen Code vorbereitet:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
Example()
Func Example()
Local $hGUI = GUICreate("Example")
Local $iOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)
$hGui = GUICreate("Test", 600, 480,10,10)
GUISetState(@SW_SHOW, $hGUI)sleep(3000)
[/autoit][autoit][/autoit][autoit]
Local $aPos = WinGetPos($hGui)
WinMove($hGui, "",$aPos[0],$aPos[1],600, 480)While 1
[/autoit][autoit][/autoit][autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $iOK
ExitLoopEndSwitch
[/autoit][autoit][/autoit][autoit]
WEnd[/code]
[/autoit][autoit][/autoit][autoit][/autoit]Das Fenster wird auf die Größe 600x 480 mit WinMove verändert,es wird jedoch kleiner, als das vorher mit 600x 480 Pixel große über GUICreate erstellte Fenster.
Idealerweise sollte die Fenstergröße dann gleich bleiben.
Warum ist das so, welche Logik steckt dahinter? Ich könnte jetzt zwar durch herausfinden eine bestimmte Anzahl Pixel dazu addieren. Dann weiß ich aber nicht ob das Betriebssystem unabhängig ist oder von Windows-Styles beeinflusst wird etc.
-
Das ist einfach nur ein standard Label mit grauem Hintergrund. Um der Listbox und dem Label befindet sich noch ein Frame.
Hol dir den "Koda Form Designer", damit kannst du relativ easy GUI's erstellen.
-
Dein Vorschlag ist generell gut, aber in der Praxis nicht ganz so geeignet.
Die GDI+ Effekt Funktionen haben teilweise unterschiedliche Schrittweiten. So gibt es Schrittweiten von -180 bis +180, teilweise nur von 0-100 etc.
Es könnte relativ nervig werden, wenn man z.B 100 Stufen manuell klicken muss. Desweiteren sieht man auch die Minimal und Maximalwerte nicht bei einer "nur Zahl-Anzeige". Bei einem Slider kann man zumindest optisch erahnen wie weit der Wert noch einstellbar wäre.
Das man aber zusätzlich noch eine Zahl neben dem Slider einblendet oder einen Slider verwendet der auch per Buttons einstellbar ist, das wäre definitiv sinnvoll.
-
Hallo,
Ich arbeite gerade an einem Multiple-Image-Converter Programm, mit dem man z.B. seine Urlaubsbilder schnell und einfach anpassen und verkleinern kann. Dabei besteht die Möglichkeit alle Bilder mit den selben Einstellungen zu konvertieren, jedoch möchte ich auch die Möglichkeit anbieten, jedes Bild nacheinander anzupassen zu können (Was z.B. für Fotografen für Farbbalance etc.) sinnvoll ist.
Besonderen Wert möchte ich auf eine einfache Bedienung legen. Man soll sich nicht wie bei z.B. Photoshop oder Gimp durch 100 Menüs klicken müssen, um Bildparameter anzupassen, ich möchte eine sehr einfache "Step by Step" Oberfläche anbieten.
Was seht ihr für Möglichkeiten um übersichtlich, aber technisch einfach für den Nutzer, mehrere Controls darzustellen?
Eventuell dachte ich an ein Tab-Control?
Ich wollte mir einfach mal mehrere Ratschläge und Möglichkeiten von euch einholen.
Bisher sieht das ganze so aus [Anhang] (Was mir jedoch nicht gefällt). Da noch weitere Effektmöglichkeiten und Anzeigen (Bildauflösung vorher/nacher, Dateigröße vorher/nacher, etc) dazukommen, wird es nochmals mehr.
Mit meiner aktuellen Darstellung wird das definitiv zu sehr überladen und wirkt zusätzlich unprofessionell.
Danke schonmal
-
-
Schönen guten Tag,
Ich habe Pong programmiert (Einfach mal so, aus langerweile, irgendetwas muss man ja mal machen). Nun habe ich allerdings einen mir nicht erklärbaren Fehler, der entsteht wenn das Fenster inaktiv wird bzw. minimiert wird (Wobei der Fehler beim minimieren bereits durch eine Extra-Funktion korrigiert ist).
Theoretisch könnte ich durch eine etwas kompliziertere GUI-Abfrage Abfrage, die Inaktivität des Fensters erkennen und das Pong Skript pausieren (So habe ich das bereits auch schon beim minimieren eingebaut). Das ist allerdings nur eine nicht perfekte Not-Lösung.
Mir geht es eher darum zu erfahren warum dieser Fehler überhaupt eintritt und ob er nicht anderwärtig ausgebessert werden kann.
Hier ist der Source-Code:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <GuiEdit.au3>
Opt("GUIOnEventMode", 1)
$mainwindow = GUICreate("Pong - v0.12 Alpha - - - by KloMeister", 602, 250)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimiert")
GUISetOnEvent($GUI_EVENT_RESTORE, "maximiert")
$ball = GUICtrlCreateLabel("•", 2, 2)
$okbutton = GUICtrlCreateButton("Start Game", 250, 50, 100)
GUICtrlSetOnEvent($okbutton, "OKButton")
$Checkbox1 = GUICtrlCreateCheckbox("CPU Enable", 255, 80, 185, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateLabel("________________________________________________________________________________________________________________", -8, -2, 716, 14)
GUICtrlCreateLabel("¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯", -8, 200, 716, 14)
$controls1 = GUICtrlCreateLabel("Control: w = up, s = down", 25, 104, 124, 17)
$controls2 = GUICtrlCreateLabel("Control: Arowkeys", 490, 104, 100, 17)
$PtP1 = GUICtrlCreateLabel("Punkte P1:", 498, 230, 57, 17)
$PtP2= GUICtrlCreateLabel("Punkte P2:", 8, 230, 57, 17)
$PointsP1 = GUICtrlCreateLabel("0", 562, 230)
$PointsP2 = GUICtrlCreateLabel("0", 72, 230)
Local $Variable
Local $hoch
Local $hoch2
local $ballrechts
local $ballrunter
local $ballrichtunghoch
local $ballrichtungrechts
local $StartEnable
local $bothoch
local $Reaktion
local $idlemoverichtung
Local $aPos
Local $bPos
Local $ingame
$bothoch = 1
$Reaktion = 0
$ingame = 0
Call("randomstart")
$Paddel1 = GUICtrlCreateLabel("", 10, 70, 4, 36)
GUICtrlSetBkColor(-1, 0x000000)
$Paddel2 = GUICtrlCreateLabel("", 590, 70, 4, 36)
GUICtrlSetBkColor(-1, 0x000000)
$StartEnable = 0
GUISetState(@SW_SHOW)
HotKeySet("{UP}", "TOP")
HotKeySet("{DOWN}", "DOWN")
HotKeySet("{w}", "TOP2")
HotKeySet("{s}", "DOWN2")
While 1
Sleep(25)
if $StartEnable = 1 then ;Abfrage ob Gamestart - Button gedrueckt
;Paddel Abfrage und Bewegung Player1
if GUICtrlRead($Checkbox1) = 4 then ;Checke if CPU
$aPos = ControlGetPos("", "", $Paddel1)
if $aPos[1] >160 then
GUICtrlSetPos($Paddel1, 10, 160)
endif
if $aPos[1] <12 then
GUICtrlSetPos($Paddel1, 10, 12)
endif
if $hoch = 1 Then
$aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] -4)
ElseIf $hoch = 2 then
Local $aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] +4)
EndIf
Else
;wenn CPU
if $ballrichtungrechts = 1 then
Call("idlearound")
Else
$aPos = ControlGetPos("", "", $Paddel1)
$bPos = ControlGetPos("", "", $ball)
if $Reaktion = 2 then
if $aPos[1] + random(9,20) < $bPos[1] Then
$bothoch = 1
Else
$bothoch = 0
endif
$Reaktion = 0
endif
$Reaktion = $Reaktion +1
if $bpos[0] <175 then
if $bothoch = 1 Then
$aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] +6)
Else
$aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] -6)
endif
Else
Call("idlearound")
endif
endif
endif
;Paddel Abfrage und Bewegung Player2
$aPos = ControlGetPos("", "", $Paddel2)
if $aPos[1] >160 then
GUICtrlSetPos($Paddel2, 590, 160)
endif
if $aPos[1] <12 then
GUICtrlSetPos($Paddel2, 590, 12)
endif
if $hoch2 = 1 Then
$aPos = ControlGetPos("", "", $Paddel2)
GUICtrlSetPos($Paddel2, 590, $aPos[1] -4)
ElseIf $hoch2 = 2 then
Local $aPos = ControlGetPos("", "", $Paddel2)
GUICtrlSetPos($Paddel2, 590, $aPos[1] +4)
EndIf
;Ballrichtung
if $ballrichtunghoch= 0 then
$aPos = ControlGetPos("", "", $ball)
GUICtrlSetPos($ball, $aPos[0] , $aPos[1] + $ballrunter)
Else
$aPos = ControlGetPos("", "", $ball)
GUICtrlSetPos($ball, $aPos[0] , $aPos[1] - $ballrunter)
EndIf
if $ballrichtungrechts= 0 then
$aPos = ControlGetPos("", "", $ball)
GUICtrlSetPos($ball, $aPos[0] - $ballrechts, $aPos[1])
Else
$aPos = ControlGetPos("", "", $ball)
GUICtrlSetPos($ball, $aPos[0] + $ballrechts , $aPos[1])
EndIf
;Ballabfrage fuer Waende
$aPos = ControlGetPos("", "", $ball)
if $aPos[1] >190 then
$ballrichtunghoch=1
endif
$aPos = ControlGetPos("", "", $ball)
if $aPos[1] <10 then
$ballrichtunghoch=0
endif
;Abfrage Ball - Paddelkontakt P1
$aPos = ControlGetPos("", "", $Paddel2)
$bPos = ControlGetPos("", "", $ball)
if $bPos[0] >585 then
if $bPos[1] - $aPos[1] >-7 then
if $bPos[1] - $aPos[1] <34 then
$ballrichtungrechts=0
$ballrechts = $ballrechts * 1 + round(random(0.1,0.5),2)
$ballrunter = $ballrunter * 1 + round(random(0.1,0.3),2)Else ;Beim nicht Ball bekommen
[/autoit]
_GUICtrlEdit_SetText($PointsP2, _GUICtrlEdit_GetText($PointsP2) +1)
msgbox (0,"","Win P2")
Call("randomstart")
endif
Else
_GUICtrlEdit_SetText($PointsP2, _GUICtrlEdit_GetText($PointsP2) +1)
msgbox (0,"","Win P2")
Call("randomstart")
endif
endif
;Abfrage Ball - Paddelkontakt P2
$aPos = ControlGetPos("", "", $Paddel1)
$bPos = ControlGetPos("", "", $ball)
if $bPos[0] <15 then
if $bPos[1] - $aPos[1] >-7 then
if $bPos[1] - $aPos[1] <34 then
$ballrichtungrechts=1
$ballrechts = $ballrechts * 1 + round(random(0.1,0.5),2)
$ballrunter = $ballrunter * 1 + round(random(0.1,0.3),2)
Else ;Beim nicht Ball bekommen
_GUICtrlEdit_SetText($PointsP1, _GUICtrlEdit_GetText($PointsP1) +1)
msgbox (0,"","Win P1")
Call("randomstart")
endif
Else
_GUICtrlEdit_SetText($PointsP1, _GUICtrlEdit_GetText($PointsP1) +1)
msgbox (0,"","Win P1")
Call("randomstart")
endif
endif
endif
WEnd
;Tastenabfrage
Func TOP()
$hoch2 = 1
EndFunc ;
Func DOWN()
$hoch2 = 2
EndFunc ;
Func TOP2()
$hoch = 1
EndFunc ;
Func DOWN2()
$hoch = 2
EndFunc ;
Func OKButton()
$StartEnable = 1
$ingame = 1
ControlHide ( "", "", $okbutton)
ControlHide ( "", "", $Checkbox1)
ControlHide ( "", "", $controls1)
ControlHide ( "", "", $controls2)
if GUICtrlRead($Checkbox1) = 1 then $CPU= GUICtrlCreateLabel("CPU Enabled", 8, 210)
EndFunc
Func CLOSEClicked()
Exit
EndFunc
Func minimiert()
$StartEnable = 0
EndFunc
Func maximiert()
if $ingame = 1 then $StartEnable = 1
EndFunc
func idlearound()
$aPos = ControlGetPos("", "", $Paddel1)
if $aPos[1] <12 then
$idlemoverichtung = 0
endif
if $aPos[1] >160 then
$idlemoverichtung = 1
endif
if $idlemoverichtung = 1 then
Local $aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] -6)
Else
Local $aPos = ControlGetPos("", "", $Paddel1)
GUICtrlSetPos($Paddel1, 10, $aPos[1] +6)
endif
EndFunc
Func randomstart()
$random = random(1,4,1)
select
case $random = 1
GUICtrlSetPos($ball, 300, 90)
$ballrechts = 3
$ballrunter = 2
$ballrichtunghoch = 0
$ballrichtungrechts = 1
case $random = 2
GUICtrlSetPos($ball, 300, 90)
$ballrechts = 3
$ballrunter = 2
$ballrichtunghoch = 1
$ballrichtungrechts = 1
case $random = 3
GUICtrlSetPos($ball, 300, 90)
$ballrechts = 3
$ballrunter = 2
$ballrichtunghoch = 1
$ballrichtungrechts = 0
case $random = 4
GUICtrlSetPos($ball, 300, 90)
$ballrechts = 3
$ballrunter = 2
$ballrichtunghoch = 0
$ballrichtungrechts = 0
EndSelect
endfunc -
Alles klar, das funktioniert schonmal unter Windows 7. Unter XP hab ichs noch nicht getestet
-
Ich möchte gerne immer eine bestimmte Aktion auslösen, wenn der Computer aus dem Standby Modus aufwacht.
Gibt es da spezielle Methoden, wie man das erkennen kann?
-
Hier hab ich auch noch eine Möglichkeit herausgefunden:
So kann man mit Hilfe einer Timerschleife und einer selbst festgelegten Zeit des Timers, eine Variable auf einen Wert prüfen, ohne das andere Funktionen dabei gestoppt werden, wie es z.B bei einem Loop der Fall wäre
Ist aber wohl indirekt das selbe wie AdlibRegister? oder gibt es da einen Unterschied?
[autoit]Global $Label, $i = 0
[/autoit][autoit][/autoit][autoit]
Global $Label2, $i2 = 0
$hForm = GUICreate('Test', 400, 400)
$Label = GUICtrlCreateLabel('', 20, 20, 100, 16)
$Label2 = GUICtrlCreateLabel('', 20, 40, 100, 16)
GUISetState()
$hDll = DllCallbackRegister('_Timer', 'none', '')
DllCall('user32.dll', 'int', 'SetTimer', 'hwnd', 0, 'int', 0, 'int', 250, 'ptr', DllCallbackGetPtr($hDll))
$hDll = DllCallbackRegister('_Timer2', 'none', '')
DllCall('user32.dll', 'int', 'SetTimer', 'hwnd', 0, 'int', 0, 'int', 500, 'ptr', DllCallbackGetPtr($hDll))Do
[/autoit][autoit][/autoit][autoit]
Until GUIGetMsg() = -3
Func _Timer()
$i += 1
GUICtrlSetData($Label, $i)
if $i = 10 then MsgBox(1,"","Timer1 Zahl ist 10")EndFunc ;==>_
[/autoit]
Func _Timer2()
$i2 += 1
GUICtrlSetData($Label2, $i2)
if $i2 = 10 then MsgBox(1,"","Timer2 Zahl ist 10")
EndFunc ;==>_ -
Ja okay klar, die werden zeitlich versetzt in sehr kurzer Zeit nacheinander abgefragt. (Das reicht mir ja auch)
Aber ich habe kein einfrieren der anderen Funktionen
-
Das oben genannte Beispiel würde übrigens so mit Visual Basic 6 klappen:
[autoit]Private Sub Command1_Click()
[/autoit][autoit][/autoit][autoit]
Call loop1
Call loop2
Call loop3
End SubPrivate Sub loop1()
[/autoit][autoit][/autoit][autoit]
Do Until Text1 = "Test"
DoEvents
Loop
MsgBox "Text1 hat die Bezeichnung Test"
End SubPrivate Sub loop2()
[/autoit][autoit][/autoit][autoit]
Do Until Text2 = "Test"
DoEvents
Loop
MsgBox "Text2 hat die Bezeichnung Test"
End SubPrivate Sub loop3()
[/autoit]
Do Until Text3 = "Test"
DoEvents
Loop
MsgBox "Text3 hat die Bezeichnung Test"
End SubDank der DoEvents Funktion friert nichts ein und alle Funktionen laufen dann paralell ab.
In VB6 ist das halt mit 1 Befehl sehr leicht gelöst. Schade das das in AutoIT nicht geht.Man kann das sicher auch anders programmieren, so das man diese Funktion nicht benötigt.
Ich bin es halt gewohnt mit dieser Funktion zu arbeiten, da ich früher mit VB6 programmiert habe. Habe die Funktion da öfters verwendet was sich als recht praktisch herausgestellt hat.
-
Naja ich möchte nichts spezielles machen und habe auch keinen entsprechenden VB Code.
Ich war mit AutoIT am programmieren und wollte eben etwas programmieren was nicht geklappt hat.
War mehr oder weniger eh nur eine rumspielerei vondaher nicht so wichtig.Bei VB6 nehm ich dann meist mehrere Timer der die Sachen abfragt oder soetwas in der Richtung um dort das Problem zu lösen.
Ein Timer ist ja auch mehr oder weniger ne Schleife, aber paralell läuft alles andere weiter.Bei AutoIT habe ich leider keine Möglichkeit gefunden, wie ich das nun mache und deswegen wollt ich hier mal nachfragen.
Eine richtige Lösung habe ich leider bislang immer noch nicht. -
Unter Visual Basic 6 konnte ich z.B eine "Delay" Funktion erstellen, bei der paralell ablaufende Funktionen trotzdem weiter arbeiten:
Achtung nicht wundern das ist VB6 Code
Code
Alles anzeigenDeclare Sub Sleep Lib "kernel32" (ByVal dwMilliSeconds As Long) Sub Delay(ByVal t As Double, Optional ByVal Doev As Boolean = True, Optional ByVal Interval As Long = 1) Dim i As Long Dim tStart As Double t = t / 1000 tStart = Timer Do While Timer - tStart < t If Interval > 0 Then Sleep Interval End If If Doev = True Then DoEvents End If Loop End Sub
Und als Beispiel dann aufrufen für 1 Sek Pause:
Das schöne war eben, das alle anderen gerade auch ablaufenden Funktionen, ebenso weiterarbeiten obwohl eine Delay Funktion in einer anderen gerade ablaufenden Funktion eingebaut war.
-
Hab gerae nochmal ein wenig geforscht
Was sagt ihr zu dieser Variante?
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$counter1 = 0
$counter2 = 0
$counter3 = 0Opt("GUIOnEventMode", 1)
[/autoit][autoit][/autoit][autoit]
GuiCreate("Test",450,400)
$Zeit_1 = GuiCtrlCreateLabel("0",10,5,100,20)
$Zeit_2 = GuiCtrlCreateLabel("0",10,35,100,20)
$Zeit_3 = GuiCtrlCreateLabel("0",10,65,100,20)
$Button1 = GUICtrlCreateButton("Start", 152, 48, 153, 49)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("Stop", 152, 104, 153, 49)
GUICtrlSetOnEvent(-1, "Button2Click")
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetState(@SW_SHOW)do
[/autoit][autoit][/autoit][autoit]
$msg = GuiGetMsg()
until $msg = -3Func Form1Close()
[/autoit][autoit][/autoit][autoit]
exit
EndFuncFunc Button1Click()
[/autoit][autoit][/autoit][autoit]
AdlibRegister("_counter1",100) ; 10tel Sek
AdlibRegister("_counter2",500) ; 1/2 Sek
AdlibRegister("_counter3",1000) ; Sek
EndFuncFunc Button2Click()
[/autoit][autoit][/autoit][autoit]
AdlibUnRegister("_counter1")
AdlibUnRegister("_counter2")
AdlibUnRegister("_counter3")
EndFuncfunc _counter1()
[/autoit][autoit][/autoit][autoit]
$counter1= $counter1+ 1
GuictrlSetData($Zeit_1,$counter1)
endfuncfunc _counter2()
[/autoit][autoit][/autoit][autoit]
$counter2= $counter2+ 1
GuictrlSetData($Zeit_2,$counter2)
endfuncfunc _counter3()
[/autoit]
$counter3 = $counter3 + 1
GuictrlSetData($Zeit_3,$counter3)
endfuncAber sobald ich in irgendner Funktion ein Sleep oder nen Loop habe dann ists schon wieder vorbei... Naja schade
Es müsste echt noch einen DoEvents Befehl geben. Damit wäre das Problem gelöst.
-
Echt schade das das nicht geht.
Und so eine Art "DoEvents" Befehl wie in Visual Basic 6 gibt es auch nicht?
-
Ich habe ein Programm programmiert bei dem ich mit einem Button mehrere Funktionen aufrufe.
Beispielsweise:
Code
Alles anzeigenfunc OKButton() loop1() loop2() loop3() endfunc func loop1() do until blablabla = "blablabla" msgbox(1,"","Ereigniss erfüllt") end func func loop2() do until blablabla = "blablabla" msgbox(1,"","Ereigniss erfüllt") end func func loop3() do until blablabla = "blablabla" msgbox(1,"","Ereigniss erfüllt") end func
Das mal als Beispiel angenommen. Ich möchte das nun alle Funktionen gleichzeitig ablaufen. Zurzeit ist es aber so, das die Funktionen nacheinander ablaufen. Also erst wenn der 1. Loop vorbei is,t beginnt die zweite Funktion und nach der zweiten erst die Dritte.
Ich möchte das alle Funktionen paralell arbeiten.