|
You last visited: Today at 15:13
Advertisement
[Frage]Bei Button Func mit Hotkey einbauen
Discussion on [Frage]Bei Button Func mit Hotkey einbauen within the AutoIt forum part of the Coders Den category.
07/01/2011, 15:44
|
#1
|
elite*gold: 0
Join Date: Jun 2009
Posts: 121
Received Thanks: 13
|
[Frage]Bei Button Func mit Hotkey einbauen
Hallo erstma,
ich komm mal wieder mit einer meiner Fragen:
Ich hab hier ein Script zu übung:
PHP Code:
#include <GUIConstants.au3>
Global $FileTestScript = FileExists(@ScriptDir & "\Testscript.au3")
Global $File2GUI1L2B = FileExists(@ScriptDir & "\2GUI1L2B.au3")
HotKeySet("{F1}","Erstellen")
HotKeySet("{F2}","Loeschen")
HotKeySet("{F3}","LoeschenMitErstellen")
HotKeySet("{F4}","SciTEBeenden")
HotKeySet("{F5}","ScriptEnd")
HotKeySet("{F12}","HotkeyInfo")
$Form1 = GUICreate("Script - Ersteller",190,265,-1,-1)
$Label1 = GUICtrlCreateLabel("Testscript - Ersteller by Tobolobo",5,5,200,25)
$Button1 = GUICtrlCreateButton("GUI Mit 2 Buttons und 1 Label",5,35,180,40)
$Button2 = GUICtrlCreateButton("TestScript erstellen",5,80,180,40)
$Button3 = GUICtrlCreateButton("TestScript löschen",5,125,180,40)
$Button4 = GUICtrlCreateButton("TestScript löschen und neu erstellen",5,170,180,40)
$Button5 = GUICtrlCreateButton("Mit Hotkeys arbeiten",5,215,180,40)
GUISetState(@SW_SHOW)
WinSetOnTop("Script - Ersteller","",1)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$Tab = Send("{TAB}")
If $File2GUI1L2B = Not @error Then
MsgBox(16,"Fehler","Das Script existiert beteits!")
Else
FileWrite(@ScriptDir & "\2GUI1L2B.au3","#include <GUIConstants.au3>" & @CRLF & @CRLF & "$Form1 = GUICreate(""Titel"",200,200,-1,-1)" & @CRLF & "$Label1 = GUICtrlCreateLabel(""Text"",5,5,200,25)" & @CRLF & "$Button1 = GUICtrlCreateButton(""Text"",5,40,150,60)" & @CRLF & "$Button2 = GUICtrlCreateButton(""Text"",5,110,150,60)" & @CRLF & "GUISetState(@SW_SHOW)" & @CRLF & @CRLF & "While 1" & @CRLF & "$nMsg = GUIGetMsg()" & @CRLF & "Switch $nMsg" & @CRLF & "Case $GUI_EVENT_CLOSE" & @CRLF & "Exit" & @CRLF & "EndSwitch" & @CRLF & "WEnd")
EndIf
Case $Button2
If $FileTestScript = Not @error Then
MsgBox(16,"Fehler","Das Script existiert Bereits!")
Else
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
Case $Button3
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
EndIf
Case $Button4
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script existiert nicht einmal!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
Case $Button5
GUIDelete()
MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.")
While 1
Func Erstellen()
If $FileTestScript = Not @error Then
MsgBox(16,"Fehler","Das Script existiert Bereits!")
Else
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func Loeschen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
EndIf
EndFunc
Func LoeschenMitErstellen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script existiert nicht einmal!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func SciTEBeenden()
$SciTETest = ProcessExists("SciTE.exe")
If $SciTETest = @error Then
MsgBox(16,"Fehler","Der Prozess SciTE.exe existiert nicht!")
Else
ProcessClose("SciTE.exe")
EndIf
EndFunc
Func ScriptEnd()
Exit
EndFunc
Func HotkeyInfo()
MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.")
EndFunc
WEnd
EndSwitch
WEnd
Wenn ich es starten will, kommt diese Meldung:
PHP Code:
F:\AutoIt\TestScriptErsteller.au3(60,1) : ERROR: missing Wend.
Func
^
F:\AutoIt\TestScriptErsteller.au3(57,4) : REF: missing Wend.
While
^
F:\AutoIt\TestScriptErsteller.au3(60,1) : ERROR: missing EndSwitch.
Func
^
F:\AutoIt\TestScriptErsteller.au3(25,14) : REF: missing EndSwitch.
Switch $nMsg
~~~~~~~~~~~~^
F:\AutoIt\TestScriptErsteller.au3(60,1) : ERROR: missing Wend.
Func
^
F:\AutoIt\TestScriptErsteller.au3(23,1) : REF: missing Wend.
While
^
F:\AutoIt\TestScriptErsteller.au3(103,3) : ERROR: syntax error
WEnd
^
F:\AutoIt\TestScriptErsteller.au3 - 4 error(s), 0 warning(s)
Anscheinend dürfen Funcs nicht in While Sachen oder Switch Sachen vorkommen.
Jetzt zu meiner Frage:
Ich will, wenn man auf $Button5 drückt, dass es dann GUI löscht (was ja funktioniert) und dann die Funcs mit den Hotkeys ausführt, als ob das GUI da nicht da wäre.
Es sollte dann so Funktionieren wenn der Button gedrückt wurde:
PHP Code:
HotKeySet("{F1}","Erstellen")
HotKeySet("{F2}","Loeschen")
HotKeySet("{F3}","LoeschenMitErstellen")
HotKeySet("{F4}","SciTEBeenden")
HotKeySet("{F5}","ScriptEnd")
HotKeySet("{F12}","HotkeyInfo")
Func Erstellen()
If $FileTestScript = Not @error Then
MsgBox(16,"Fehler","Das Script existiert Bereits!")
Else
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func Loeschen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
EndIf
EndFunc
Func LoeschenMitErstellen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script existiert nicht einmal!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func SciTEBeenden()
$SciTETest = ProcessExists("SciTE.exe")
If $SciTETest = @error Then
MsgBox(16,"Fehler","Der Prozess SciTE.exe existiert nicht!")
Else
ProcessClose("SciTE.exe")
EndIf
EndFunc
Func ScriptEnd()
Exit
EndFunc
Func HotkeyInfo()
MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.")
EndFunc
|
|
|
07/01/2011, 15:58
|
#2
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Mach einfach die While, die die Funcs umschließt weg und setze das EndSwitch und WEnd nach pben zum letzten Case.
|
|
|
07/01/2011, 16:46
|
#3
|
elite*gold: 0
Join Date: Jun 2009
Posts: 121
Received Thanks: 13
|
mom ich machs
€: Code sieht jetz so aus geht aber immer noch nich
PHP Code:
#include <GUIConstants.au3>
Global $FileTestScript = FileExists(@ScriptDir & "\Testscript.au3") Global $File2GUI1L2B = FileExists(@ScriptDir & "\2GUI1L2B.au3")
HotKeySet("{F1}","Erstellen") HotKeySet("{F2}","Loeschen") HotKeySet("{F3}","LoeschenMitErstellen") HotKeySet("{F4}","SciTEBeenden") HotKeySet("{F5}","ScriptEnd") HotKeySet("{F12}","HotkeyInfo")
$Form1 = GUICreate("Script - Ersteller",190,265,-1,-1) $Label1 = GUICtrlCreateLabel("Testscript - Ersteller by Tobolobo",5,5,200,25) $Button1 = GUICtrlCreateButton("GUI Mit 2 Buttons und 1 Label",5,35,180,40) $Button2 = GUICtrlCreateButton("TestScript erstellen",5,80,180,40) $Button3 = GUICtrlCreateButton("TestScript löschen",5,125,180,40) $Button4 = GUICtrlCreateButton("TestScript löschen und neu erstellen",5,170,180,40) $Button5 = GUICtrlCreateButton("Mit Hotkeys arbeiten",5,215,180,40) GUISetState(@SW_SHOW) WinSetOnTop("Script - Ersteller","",1)
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $Tab = Send("{TAB}") If $File2GUI1L2B = Not @error Then MsgBox(16,"Fehler","Das Script existiert beteits!") Else FileWrite(@ScriptDir & "\2GUI1L2B.au3","#include <GUIConstants.au3>" & @CRLF & @CRLF & "$Form1 = GUICreate(""Titel"",200,200,-1,-1)" & @CRLF & "$Label1 = GUICtrlCreateLabel(""Text"",5,5,200,25)" & @CRLF & "$Button1 = GUICtrlCreateButton(""Text"",5,40,150,60)" & @CRLF & "$Button2 = GUICtrlCreateButton(""Text"",5,110,150,60)" & @CRLF & "GUISetState(@SW_SHOW)" & @CRLF & @CRLF & "While 1" & @CRLF & "$nMsg = GUIGetMsg()" & @CRLF & "Switch $nMsg" & @CRLF & "Case $GUI_EVENT_CLOSE" & @CRLF & "Exit" & @CRLF & "EndSwitch" & @CRLF & "WEnd") EndIf Case $Button2 If $FileTestScript = Not @error Then MsgBox(16,"Fehler","Das Script existiert Bereits!") Else FileWrite(@ScriptDir & "\Testscript.au3","") EndIf Case $Button3 If $FileTestScript = @error Then MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!") Else FileDelete(@ScriptDir & "\Testscript.au3") EndIf Case $Button4 If $FileTestScript = @error Then MsgBox(16,"Fehler","Das Script existiert nicht einmal!") Else FileDelete(@ScriptDir & "\Testscript.au3") FileWrite(@ScriptDir & "\Testscript.au3","") EndIf Case $Button5 GUIDelete() MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.") EndSwitch
Func Erstellen() If $FileTestScript = Not @error Then MsgBox(16,"Fehler","Das Script existiert Bereits!") Else FileWrite(@ScriptDir & "\Testscript.au3","") EndIf EndFunc
Func Loeschen() If $FileTestScript = @error Then MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!") Else FileDelete(@ScriptDir & "\Testscript.au3") EndIf EndFunc
Func LoeschenMitErstellen() If $FileTestScript = @error Then MsgBox(16,"Fehler","Das Script existiert nicht einmal!") Else FileDelete(@ScriptDir & "\Testscript.au3") FileWrite(@ScriptDir & "\Testscript.au3","") EndIf EndFunc
Func SciTEBeenden() $SciTETest = ProcessExists("SciTE.exe") If $SciTETest = @error Then MsgBox(16,"Fehler","Der Prozess SciTE.exe existiert nicht!") Else ProcessClose("SciTE.exe") EndIf EndFunc
Func ScriptEnd() Exit EndFunc
Func HotkeyInfo() MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.") EndFunc
WEnd
Die fehlermeldung:
PHP Code:
F:\TestScriptErsteller.au3(59,1) : ERROR: missing Wend. Func ^ F:\TestScriptErsteller.au3(23,1) : REF: missing Wend. While ^ F:\TestScriptErsteller.au3(101,1) : ERROR: syntax error WEnd ^ F:\TestScriptErsteller.au3 - 2 error(s), 0 warning(s)
Geht da vielleicht irgendwas mit exitloop?
|
|
|
07/01/2011, 17:14
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
du kannst nicht funktionen in einer schleife definieren.
damit würde die funktion ja immer wieder neu definiert werden.
funktionsdefinitionen immer ausserhalb von schleifen tätigen.
im falle von $button5 gedrückt, wird das gui zwar gelöscht, hierbei bleibt aber die endlosschleife selbstverständlich noch erhalten.
dh du brauchst keine extra schleife. könntest aber auf effizienzgründen noch eine art schlater einbauen, damit dein script erkennt, ob das gui vorhanden ist oder nicht. ist das gui nicht vorhanden, so braucht auch keine GuiGetMsg abfrage mehr statt zu finden =)
|
|
|
07/01/2011, 17:25
|
#5
|
elite*gold: 0
Join Date: Jun 2009
Posts: 121
Received Thanks: 13
|
Ich hätt gern ma sowas in code wenns geht...
|
|
|
07/01/2011, 18:10
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
ich persöhnlich bin immer dafür das leute selbst versuchen ein problem zu lösen, als dies von anderen erledigen zu lassen...
aber wenn du lieber nicht selbst versuchen willst umzusetzen, was bisher schon 2 erklärt haben, hier der code mit behobenem (haupt)fehler:
Code:
Dim $guiExists = True
Global $FileTestScript = FileExists(@ScriptDir & "\Testscript.au3")
Global $File2GUI1L2B = FileExists(@ScriptDir & "\2GUI1L2B.au3")
HotKeySet("{F1}","Erstellen")
HotKeySet("{F2}","Loeschen")
HotKeySet("{F3}","LoeschenMitErstellen")
HotKeySet("{F4}","SciTEBeenden")
HotKeySet("{F5}","ScriptEnd")
HotKeySet("{F12}","HotkeyInfo")
GUICreate("Script - Ersteller",190,265,-1,-1)
GUICtrlCreateLabel("Testscript - Ersteller by Tobolobo",5,5,200,25)
$Button1 = GUICtrlCreateButton("GUI Mit 2 Buttons und 1 Label",5,35,180,40)
$Button2 = GUICtrlCreateButton("TestScript erstellen",5,80,180,40)
$Button3 = GUICtrlCreateButton("TestScript löschen",5,125,180,40)
$Button4 = GUICtrlCreateButton("TestScript löschen und neu erstellen",5,170,180,40)
$Button5 = GUICtrlCreateButton("Mit Hotkeys arbeiten",5,215,180,40)
GUISetState(@SW_SHOW)
WinSetOnTop("Script - Ersteller","",1)
While Sleep(10)
If $guiExists Then
Switch GUIGetMsg()
Case -3
Exit
Case $Button1
$Tab = Send("{TAB}")
If $File2GUI1L2B = Not @error Then
MsgBox(16,"Fehler","Das Script existiert beteits!")
Else
FileWrite(@ScriptDir & "\2GUI1L2B.au3","#include <GUIConstants.au3>" & @CRLF & @CRLF & "$Form1 = GUICreate(""Titel"",200,200,-1,-1)" & @CRLF & "$Label1 = GUICtrlCreateLabel(""Text"",5,5,200,25)" & @CRLF & "$Button1 = GUICtrlCreateButton(""Text"",5,40,150,60)" & @CRLF & "$Button2 = GUICtrlCreateButton(""Text"",5,110,150,60)" & @CRLF & "GUISetState(@SW_SHOW)" & @CRLF & @CRLF & "While 1" & @CRLF & "$nMsg = GUIGetMsg()" & @CRLF & "Switch $nMsg" & @CRLF & "Case $GUI_EVENT_CLOSE" & @CRLF & "Exit" & @CRLF & "EndSwitch" & @CRLF & "WEnd")
EndIf
Case $Button2
If $FileTestScript = Not @error Then
MsgBox(16,"Fehler","Das Script existiert Bereits!")
Else
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
Case $Button3
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
EndIf
Case $Button4
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script existiert nicht einmal!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
Case $Button5
$guiExists = False
GUIDelete()
MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.")
EndSwitch
EndIf
WEnd
Func Erstellen()
If $FileTestScript = Not @error Then
MsgBox(16,"Fehler","Das Script existiert Bereits!")
Else
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func Loeschen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script kann nicht gelöscht werden, da es bereits existiert!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
EndIf
EndFunc
Func LoeschenMitErstellen()
If $FileTestScript = @error Then
MsgBox(16,"Fehler","Das Script existiert nicht einmal!")
Else
FileDelete(@ScriptDir & "\Testscript.au3")
FileWrite(@ScriptDir & "\Testscript.au3","")
EndIf
EndFunc
Func SciTEBeenden()
$SciTETest = ProcessExists("SciTE.exe")
If $SciTETest = @error Then
MsgBox(16,"Fehler","Der Prozess SciTE.exe existiert nicht!")
Else
ProcessClose("SciTE.exe")
EndIf
EndFunc
Func ScriptEnd()
Exit
EndFunc
Func HotkeyInfo()
MsgBox(64,"Info","'F1' erstellt ein Script," & @CRLF & "'F2' löscht das Script," & @CRLF & "'F3' löscht das Alte und erstellt das neues Script." & @CRLF & "'F4' beendet SciTE" & @CRLF & "'F5' beendet dieses Script" & @CRLF & "'F12' zeigt dieses Fenster nocheinmal." & @CRLF & "SciTE muss vor dem drücken eines HotKeys geschlossen werden.")
EndFunc
aber mal von dem schleifen-funktions problem, gibt fileexists jeweils 1 (true) oder 0 (false) zurück. es macht nicht wirklich sinn den rückgabewert mit @error zu vergleichen.
|
|
|
07/01/2011, 18:22
|
#7
|
elite*gold: 0
Join Date: Jun 2009
Posts: 121
Received Thanks: 13
|
Ich lern an beispielen
des mit @error geht aber deswegen mach ichs ^^
kann closed werden
|
|
|
 |
Similar Threads
|
[Fragen zu] Gui Hide & Show / Admin Rights / Func in Func
12/12/2010 - AutoIt - 29 Replies
Hi Leute,
wie ihr oben ja bereits lesen könnt habe ich ein paar Fragen.
1. Könnte mir jmd. eine Hotkeyset-Func schreiben, womit ich mit nur einer (!) Taste die GUI verstecken und wieder anzeigen lassen kann ?
2. Gibt es etwas, dass dem gescripteten Tool von selbst Adminrechte verschafft? Ich rede NICHT von RequireAdmin, da muss man ja Administrator des PCs sein.
€:
Kann "#requireadmin" rausgezögert werden ?!
Ich möchte, dass das passiert, aber erst, wenn ich einen Knopf gedrückt...
|
AutoIt Script in Button einbauen?
06/09/2010 - AutoIt - 5 Replies
Hey,
nach langer Zeit wollt ich wieder mit AutoIt hantieren hab aber leider keine Ahnung mehr wie ich z.B. nen RunScript in nen Button einbaue.
bitte um Hilfe! >_<
Froce
|
Hotkey Button zuweisen?
02/25/2010 - AutoIt - 18 Replies
Hallo,
erster post in dieser section.
In letzter zeit hab ich mich mit dem Thema AutoIT befasst, hab auch schon paar programme erstellt, aber jetzt habe ich ein Problem!
Wie kann ich z.B Hotkey: F8 einem Button, von Koda-Designer, zuweisen?
Also dass wenn ich inGame bin nur F8 drücken muss das der Button gedrückt wird!!
Mfg!!!
|
Button mit hotkey verbinden?
01/09/2010 - AutoIt - 10 Replies
hallo
ich habe mir per autoit nen trainer fürn spiel gemacht..keine große sache..aber ich will per tastendruck INGAME das der im trainer einen button drückt....
hier mal der sourcecode:
#include <GUIConstants.au3>
#include <NomadMemory.au3>
|
Button mit Func belegen
04/07/2009 - General Coding - 2 Replies
Hi Leute
Ich habe hier ein Gui fenster mit koda gemacht und weiß aber nicht wie ich den Button mit einer Fuction belege kann mit das mal jmd sagen pls.
Hier der skript:
; Script Start - Add your code below here
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
|
All times are GMT +1. The time now is 15:14.
|
|