In dem Thread ging es auch um SVN. Ich nehme also stark an, dass es möglich ist.
Beiträge von SEuBo
-
-
Ich hatte es mal gestoppt und bei meinem Tests war das mehrzeilige If um ca. das 10fache schneller.
komisch
Naja gut dann weiß ich auch beischeid, danke für die aufklärung. -
Meinst du das vielleicht eher so:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
GUICreate("AD - User and Group Membership - Reader", 380, 100)
GUICtrlCreateLabel("Active Directory - UserName", 40, 5, 180, 20)
$hUserName = GUICtrlCreateInput("<UserName>", 40, 25, 150, 25)
GUICtrlCreateLabel("Active Directory - Context location", 40, 55, 220, 20)
$hCombo = GUICtrlCreateCombo("Intern", 40, 70, -1, -1, 0x003)
GUICtrlSetData(-1, "Extern|Schulung|Technisch|Temporaer|Temp|Testusers|Musteruser|Allgemeineuser|Alle|Keine|Stop")
; OU=Intern| OU=Extern|OU=Schulungsbenutzer|OU=Technische Accounts|OU=Temporaer Extern|OU=Temporaer Intern|Testbenutzer|
$hButton = GUICtrlCreateButton("OK", 270, 68, 100, 24)GUISetState()
[/autoit] [autoit][/autoit] [autoit]Global $sRead
[/autoit] [autoit][/autoit] [autoit]While 1 * Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hUserName, $hButton
_DeineFunktion(GUICtrlRead($hCombo), GUICtrlRead($hUserName))
EndSwitch
WEndFunc _DeineFunktion($sName, $sLocation)
[/autoit]
MsgBox(0, "", "An deine Funktion wurde folgendes übergeben: " & @CRLF & _
"Name: " & $sName & @CRLF & _
"Location: " & $sLocation)
EndFunc ;==>_DeineFunktion -
Beispiel zu 2 GUI
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
$gui1 = GUICreate('GUI 1', 500, 300, 100, 100)
$button1 = GUICtrlCreateButton('Aufruf GUI 2', 20, 20, 100, 21)$gui2 = GUICreate('GUI 2', 500, 300, 500, 500)
[/autoit] [autoit][/autoit] [autoit]
$button2 = GUICtrlCreateButton('Zurück zu GUI 1', 20, 20, 100, 21)GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$msg = GUIGetMsg(1) ; Advanced GUIGetMsg()-Mode (s. Hilfe)
Switch $msg[0] ; Ereignis
Case $button1
GUISetState(@SW_SHOW, $gui2)
Case $button2
GUISetState(@SW_HIDE, $gui2)
Case $GUI_EVENT_CLOSE
Switch $msg[1] ; Fenster
Case $gui2
GUISetState(@SW_HIDE, $gui2)
Case $gui1
Exit
EndSwitch
EndSwitch
WEnd -
Hier auch mal von mir:
Beispiel per GUIGetMsg()
[autoit]$hGUI = GUICreate("",140,140) ; Erstelle eine GUI
[/autoit] [autoit][/autoit] [autoit]
$Button = GUICtrlCreateButton("Klick mich",20,20,100,100) ; Erstelle einen Button,
; und speichere die "Control-ID", also einen Wert, den man zum abfragen usw. eines Buttons benutzt
; in der Variable $Button
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg() ; Aktuelle GUI-Ereignisse Finden
Switch $nMsg
Case -3 ; Falls das GUI geschlossen werden soll ( X )
Exit ; Beende das Script
Case $Button ; Falls der Button gedrück wurde
MsgBox(64,"Hinweis","Du hast den Knopf gedrückt!")
EndSwitch
WEndBeispiel für OnEvent
[autoit]
[/autoit] [autoit][/autoit] [autoit]
AutoItSetOption("GUIOnEventMode", 1) ; OnEvent-Mode einschalten.$hGUI = GUICreate("", 140, 140) ; Erstelle eine GUI
[/autoit] [autoit][/autoit] [autoit]
$Button = GUICtrlCreateButton("Klick mich", 20, 20, 100, 100) ; Erstelle einen Button
GUICtrlSetOnEvent(-1, "_Button")GUISetOnEvent(-3, "_Exit") ; Beim Klick auf Schließen wird das Script beendet.
[/autoit] [autoit][/autoit] [autoit]
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100000) ; Nichts tun.
WEndFunc _Button()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Hinweis", "Du hast den Knopf gedrückt!")
EndFunc ;==>_ButtonFunc _Exit()
[/autoit]
Exit
EndFunc ;==>_ExitEs gibt einen Haufen guter Tutorials, Zum Beispiel das hier:
Allgemeines Tutorial
GUI Tutorial
Youtube Hilfe Videos
AutoIt Dokumentation (da findest du alles grundlegende) -
'So vllt?"
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)
GUICreate("AD - User and Group Membership - Reader", 380, 100)
GUICtrlCreateLabel("Active Directory - UserName", 40, 5, 180, 20)
$UserName = GUICtrlCreateInput("<UserName>", 40, 25, 150, 25)
GUICtrlCreateLabel("Active Directory - Context location", 40, 55, 220, 20)
$combo = GUICtrlCreateCombo("", 40, 70)
GUICtrlSetData($combo, "Intern|Extern|Schulung|Technisch|Temporaer|Temp|Testusers|Musteruser|Allgemeineuser|Alle|Keine|Stop|")
; OU=Intern| OU=Extern|OU=Schulungsbenutzer|OU=Technische Accounts|OU=Temporaer Extern|OU=Temporaer Intern|Testbenutzer|
GUICtrlSetOnEvent($combo, "_comboread")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState()Global $sRead
[/autoit] [autoit][/autoit] [autoit]While 1 * Sleep(10)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _comboread()
[/autoit] [autoit][/autoit] [autoit]
$sSplit = "Intern|Extern|Schulung|Technisch|Temporaer|Temp|Testusers|Musteruser|Allgemeineuser|Alle|Keine|Stop"
$aSplit = StringSplit($sSplit, "|")
For $i = 1 To $aSplit[0]
If GUICtrlRead($combo) = $aSplit[$i] Then
$sRead = GUICtrlRead($combo)
ConsoleWrite($sRead & @CRLF)
Return
EndIf
Next
EndFunc ;==>_comboreadFunc _exit()
[/autoit]
Exit
EndFunc ;==>_exitWarum musst du überhaupt prüfen, was in der Combo steht?
[autoit]
Sicher, dass du nicht einfach das hier suchst:$combo = GUICtrlCreateCombo("", 40, 70,-1,-1,0x0003)
[/autoit]
-
Probier mal testweise so:
Spoiler anzeigen
[autoit]$hInput = GUICtrlGetHandle($Input1) ; Am besten außerhalb der Schleife
[/autoit] [autoit][/autoit] [autoit]Switch ControlGetHandle("", "", ControlGetFocus(""))
[/autoit]
Case $hInput
If _IsPressed("0D") Then
_1()
Do
Sleep(10)
Until Not _IsPressed("0D")
EndIf
EndSwitchIch schreib das ganze Do - Until Zeug ja nich aus Spaß an der Freude, sondern um damit unnötig viele Funktionsaufrufe zu verhindern.
(_Ispressed blockt ja keine Tasten)Außerdem:
Switch > Select > Mehrzeiliges If > Einzeiliges If -
Goto ist böse. Und nichts was man mit Goto machen kann, kann man mit dem schlauen einsatz von funktionen uund schleifen nicht auch.
Wenn du aber unbedingt wirrren und unverständlichen Code (Dank GoTo) haben willst, dann kannst du Sprungmarken Simulieren
[autoit]$Sprungmarke = True
[/autoit][autoit][/autoit][autoit]
$ZweiteSprungmarke = TrueMsgBox(0, "", "Hier sind wir vorbei")
[/autoit][autoit][/autoit][autoit]
While $Sprungmarke ; Sprungmarke initialisieren
If MsgBox(4, "", "Zurückspringen? (Mit Ja zurückspringen)") = 6 Then ContinueLoop
If MsgBox(4, "", "Bist du sicher? (Mit Nein zurückspringen)") = 7 Then ContinueLoop
While $ZweiteSprungmarke
MsgBox(0, "", "Wir haben die zweite Sprungmarke erreicht")
If MsgBox(1, "", "Es wird jetzt zu der ersten Sprungmarke gesprungen (Mit Ok zurückspringen)") = 1 Then ContinueLoop 2
If MsgBox(1, "", "Dann wengistens zu der zweiten? (Mit Ok zurückspringen)") = 1 Then ContinueLoop$ZweiteSprungmarke = False
[/autoit]
WEnd
$Sprungmarke = False ; Endlosschleife verhindern (Danach muss direkt das Wend folgen)
WEnd ; ab hier kannn man nicht mehr zurückspringen -
Das inputfeld sended $SS_NOTIFY erst, wenn es verändert und abgeschickt wurde.
Ob es den Focus hat kannst du mit
[autoit]If ControlGetHandle("","",ControlGetFocus("")) = GUICtrlGetHandle($Input) Then
[/autoit]
[autoit]
abfragen.
Wo dein Problem mit _IsPressed liegt versteh ich auch nicht.If ControlGetHandle("", "", ControlGetFocus("") = GUICtrlGetHandle($Input) Then
[/autoit]
If _IsPressed(01) Then
; hier das zeug was es machen soll
Do
Sleep(10)
Until Not _IsPressed(01)
EndIf
EndIf -
Vllt hilft _WinAPI_RedrawWindow()
Letzte Möglichkeit die mir spontan einfällt:
Setz den Button auf ein Child Window. Dann kannst du einfch per GDI den Bildausschnitt Zeichen, und dann nur das Child in den Vordergrund holen. -
Und was ist wenn der Bildschirmschoner deaktiviert ist?
Warum nicht einfach so in der Art:
[autoit]#include <Timers.au3>
[/autoit]
While 1 * Sleep(100)
ToolTip("Idle since: "&Floor(_Timer_GetIdleTime()/1000)&" sec.")
If _Timer_GetIdleTime() > 10000 Then
ToolTip("User is Idle")
While _Timer_GetIdleTime() > 10000
Sleep(100)
WEnd
ToolTip("User is Back")
EndIf
WEnd -
Bild per GDI in den Speicher laden und in Teile zerlegen. Die Teile kommen dann ins TempDir.
-> für jedes Teil ein control (logischerweise in einem Array)
dann kannst du doch ohne Probleme nur Teile anzeigen lassen. -
Warum änderst du das Bild nicht einfach per
[autoit]GUICtrlSetImage()
[/autoit]
oder habe ich da etwas übersehen?! -
-
-
Reicht eine prominent platzierte Verknüpfung auf dem Desktop nicht?
Leider nicht. Der Knopf auf dem Desktop wird genauso elegant übersehen, wie der Knopf "Ruhezustand", den ich schon ins Auswahlmenü eingebaut hab.
Ich muss wirklich roten leuchtenden Knopf "bearbeiten"ich habe schon ewig kein xp mehr drauf gehabt aber gucke mal in den Energieoptionen (Systemsteuerung) und dann auf der Kartei Erweitert und schaue dir mal die Einstellungen an. Ich meine mich zu Erinnern das es dort eine Einstellung zu diesem Thema gibt.
Jap, gibt es. Ich hab auch schon den Ruhezustand ins Auswahlmenü geholt, aber der wird anscheinend übersehen.Sollte doch auch gehen, indem du die Shutdown.exe umbenennst und an deren Stelle ein compiliertes AutoIt-Script erstellst mit dem Namen: Shutdown.exe.
das ist mal ne gute idee. Ich glaub da hätt ich selbst drauf kommen können. Ich teste nachher mal obs funktioniert. -
Hallo,
[Blockierte Grafik: http://i.d.com.com/i/dl/media/dlimage/86/07/0/86070_large.jpeg]
Ist es möglich den Aufruf, den dieser Knopf startet zu verändern? Ich will aus einem "Shutdown.exe" zu einem "rundll32 powrprof.dll,SetSuspendState" machen.
Hintergrund: Meine Mutter hat vor kurzem einen PC geschenkt bekommen. Leider ist das gute Stück schon etwas betagt, und braucht 200 Jahre zum hochfahren. Da ich oft etwas am PC erledigen soll, habe ich keine Lust so lange zu warten. Ich habe ihr schon soo oft gesagt, sie möge doch bitte den Ruhezustand nutzen, aber da es ihr
erster PC ist, drückt sie in 90% der Fällen auf "Ausschalten". Ich kann es ihr ja auch nicht übel nehmen.Jetzt möchte ich aber den Befehl hinter dem "Ausschalten" Knopf ändern. Dass der PC trotzdem in den Hibernate geht wenn man auf herunterfahren klickt.
Ich hoffe da weiß einer Rat
LG SEuBo -
Was soll den
AdlibRegister
sein?!
Edit: AdlibEnable?Wenn du noch auf AdlibEnable hast, dann solltest du dringentst deine Autoit version updaten. Seit 3.3.2.0 gibts AdlibRegister, das ist quasi AdlibEnable²
-
Vielleicht so?
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <String.au3>
#Region ### START Koda GUI section ### Form=c:\users\andi\desktop\starter.kxf
$Form2 = GUICreate("Starter", 412, 314, 783, 434)
GUISetIcon("D:\005.ico")
GUICtrlCreateTab(8, 8, 396, 256)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Daten")
$Label1 = GUICtrlCreateLabel("Gibt hier nur das Passwort für das Programm ein", 24, 48, 361, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Input1 = GUICtrlCreateInput("", 144, 72, 121, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateLabel("Geben sie hier den Pfad zu dem Programm an.", 112, 120, 195, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Input2 = GUICtrlCreateInput("", 72, 144, 273, 22)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Button4 = GUICtrlCreateButton("...", 192, 168, 35, 25, $WS_GROUP)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
GUICtrlCreateTabItem("")
$Button1 = GUICtrlCreateButton("&OK", 166, 272, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("&Abbrechen", 246, 272, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("&Hilfe", 328, 272, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###Opt("WinTitleMatchMode", 2)
[/autoit] [autoit][/autoit] [autoit]$check = FileExists(@ScriptDir & "\Daten.ini")
[/autoit] [autoit][/autoit] [autoit]
$Master = ("test")If $check = 1 Then
[/autoit] [autoit][/autoit] [autoit]$Passwort = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Passwort", "Fehler")
[/autoit] [autoit][/autoit] [autoit]
$Pfad = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Pfad", "Fehler")
$Passwortu = _StringEncrypt(0, $Passwort, $Master)GUICtrlSetData($Input1, $Passwortu)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Input2, $Pfad)EndIf
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button4$Path = FileSelectFolder("Ordner auswählen", "", 3, @DesktopDir)
[/autoit] [autoit][/autoit] [autoit]
If Not @error Then GUICtrlSetData($Input2, $Path)Case $Button1
[/autoit] [autoit][/autoit] [autoit]$readpass = GUICtrlRead($Input1)
[/autoit] [autoit][/autoit] [autoit]
$readpfad = GUICtrlRead($Input2)If $readpass = ("") Or $readpfad = ("") Then
[/autoit] [autoit][/autoit] [autoit]MsgBox(0, "Fehler", "Bitte geben sie sowohl das Passwort als auch den Pfad an.")
[/autoit] [autoit][/autoit] [autoit]
ExitElse
[/autoit] [autoit][/autoit] [autoit]$Passwortv = _StringEncrypt(1, $readpass, $Master)
[/autoit] [autoit][/autoit] [autoit]IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Passwort", $Passwortv)
[/autoit] [autoit][/autoit] [autoit]
IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Pfad", $readpfad)Run($readpfad)
[/autoit] [autoit][/autoit] [autoit]
WinWaitActive("Mode Activation Dialog.")
Send($readpass)
Sleep(200)
Send("{Enter}")EndIf
[/autoit] [autoit][/autoit] [autoit]Case $Button2
[/autoit]
Exit
EndSwitch
WEnd -
Poste mal bitte deinen Code, dann kann man dir helfen. Dieses Verhalten klingt so, als ob du in einer Schleife festhängst, also ein Logikfehler in deinem Script vorliegt.
MfG