#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: Jens Kröger (McPoldy)
Script Function:
Beispielskript, wie man auch Fenster steuern kann, die auf @SW_HIDE
gesetzt wurden.
F1 = Fenster verstecken
F2 = Fenster anzeigen
F3 = Etwas anderes schreiben
F4 = Skript beenden und aufräumen
Was mache ich hier?
===================
Ich prüfe ob eine Datei mit dem Namen versteck.txt in meinem Skript Verzeichnis
vorhanden ist, falls nein, erstelle ich sie. Dann rufe ich Notepad mit dieser
Datei auf. Wenn das Fenster vom Notepad da ist, hole ich mir den Titel des Fensters
und Verstecke es dann. Wenn der Titel bereits bekannt ist, kann man sich das
sparen und ihn direkt in der Variablen $titel speichern und das betreffende
Programm auch gleich mit @SW_HIDE starten.
Dann lasse ich eine Schleife laufen, welche im Sekundentakt immer die Uhrzeit
in das Notepad-Fenster mittels ControlSend schreibt. Nun kann man mit den
oben stehenden Tastenkombis Aktionen ausführen: verstecken, anzeigen, was
anderes schreiben oder das Programm beenden.
Wenn das Programm beendet wird, wird auch die Datei versteck.txt wieder gelöscht,
damit alles schön sauber ist.
Wozu ist das nun gut?
=====================
So, oder so ähnlich, könnte man das mit anderen Programmen auch machen, sie sind
zwar nicht sichtbar, können aber trozdem gesteuert werden.
#ce ----------------------------------------------------------------------------
; Umschalt und F-Tasten
HotKeySet('+{F1}','hWin')
HotKeySet('+{F2}','sWin')
HotKeySet('+{F3}','schreibwas')
HotKeySet('+{F4}','ProgEnde')
#Region Wenn man den Fenstertitel auslesen will
;#cs
; Prüfe ob Datei vorhanden ist, sonst erstelle sie
checkFile()
; Starte Notepad
Local $pid = run("notepad.exe versteck.txt",@ScriptDir,@SW_SHOWMAXIMIZED)
; Warten bis Programm gestartet ist
Sleep(1000)
; Den Fenstertitel in $titel speichern
local $titel = WinGetTitle("[active]")
; Fenster ausblenden
hWin()
;#ce
#EndRegion <== Wenn man den Fenstertitel auslesen will
#Region Wenn der Fenstertitel direkt in einer Variablen gespeichert wird
#cs
; Prüfe ob Datei vorhanden ist, sonst erstelle sie
checkFile()
; Starte Notepad
Local $pid = run("notepad.exe versteck.txt",@ScriptDir,@SW_HIDE)
; Den Fenstertitel in $titel speichern
local $titel = 'versteck.txt - Editor'
#ce
#EndRegion <== Wenn der Fenstertitel direkt in einer Variablen gespeichert wird
; Schleife, die jede Sekunde die Zeit schreibt
While True
$zeit = StringFormat('%s:%s:%s',@HOUR,@MIN,@SEC) & @CR
ControlSend($titel,'','[CLASS:Edit; INSTANCE:1]',$zeit)
Sleep(1000)
WEnd
; Fenster verstecken = Umschalttaste und F1
Func hWin()
WinSetState($titel,'',@SW_HIDE)
EndFunc
; Fenster anzeigen = Umschalttaste und F2
Func sWin()
WinSetState($titel,'',@SW_SHOW)
EndFunc
; Etwas anderes schreiben = Umschalttaste und F3
Func schreibwas()
ControlSend($titel,'','[CLASS:Edit; INSTANCE:1]','Mal etwas anderes....' & @CR)
EndFunc
; Prozess beenden, die Datei löschen und das Skript beenden = Umschalttaste und F4
Func ProgEnde()
ProcessClose($pid)
FileDelete('versteck.txt')
Exit
EndFunc
; Funktion zum prüfen ob die Datei vorhanden ist, ggf. erzeugen der Datei.
Func checkFile()
If Not FileExists('versteck.txt') Then
$f = FileOpen('versteck.txt',10)
FileClose($f)
EndIf
EndFunc