Nabend
Wollte nur kurz fragen, ob es möglich ist, in auto it, über einen Prozess, den Pfad zu dem Programm herraus zu finden.
Also ich wähle über ProcessList einen Prozess aus und dann steht in einem GUI-Input der Pfad zu dem Programm.
MfG
Nabend
Wollte nur kurz fragen, ob es möglich ist, in auto it, über einen Prozess, den Pfad zu dem Programm herraus zu finden.
Also ich wähle über ProcessList einen Prozess aus und dann steht in einem GUI-Input der Pfad zu dem Programm.
MfG
ich denke dass könnte helfen:
Link
Ah super, thx
Mist, brauch doch nochmal hilfe
Ich weis nicht genau, wie ich das in mein script einbauen soll.
Hier mal mein script, die udf liegt bei:
If Not IsAdmin () Then
MsgBox (16, "Error", "Achtung, es wurden keine Admin-Rechte bei Ihnen erkannt!" & @CRLF & @CRLF & "Bitte melden Sie sich als Admin an." & @CRLF & "Sollten Sie nicht der Besitzer dieses PS's sein," & @CRLF & "so setzen Sie sich bitte mit diesem in Verbindung.")
Exit
EndIf
#include <ProcessGetFilename.au3>
#NoTrayIcon
$GUI = GUICreate ("ProzessBlocker", 190, 230)
GUISetState (@SW_SHOW)
GUISetBkColor (0xCCF899)
GUICtrlCreateLabel ("Prozess auswählen/Eingeben.", 10, 13, 200)
$ProcessInput = GUICtrlCreateCombo ("Auswählen/Eingeben", 10, 30, 150)
GUICtrlCreateLabel ("Pfad zum Programm auswählen.", 10, 53, 200)
$PfadInput = GUICtrlCreateInput ("", 10, 70, 120)
GUICtrlCreateLabel ("Passwort zum starten eingeben.", 10, 93, 200)
$StartInput = GUICtrlCreateInput ("", 10, 110, 150)
GUICtrlCreateLabel ("Passwort zum beenden eingeben.", 10, 133, 200)
$EndInput = GUICtrlCreateInput ("", 10, 150, 150)
$OK = GUICtrlCreateButton ("OK", 40, 190, 40)
$Exit = GUICtrlCreateButton ("Exit", 90, 190, 40)
$PfadSearch = GUICtrlCreateButton ("...", 130, 70, 30, 20)
$allprocess = ProcessList()
For $i = 1 to $allprocess[0][0]
GUICtrlSetData ($ProcessInput, $allprocess[$i][0], "Auswählen/Eingeben-")
Next
; -----
HotKeySet ("^!{q}", "_Start")
HotKeySet ("^!{w}", "_End")
; -----
Func _Start ()
$pwStart = GUICtrlRead ($StartInput, 1)
$Pfad = GUICtrlRead ($PfadInput, 1)
$PwInput1 = InputBox ("Bitte Passwort eingeben", "Bitte gib hier nun das Passwort ein, um das Programm zu starten.", "", "*")
If $PwInput1 = $pwStart Then
Run ($Pfad)
Else
$Msg1 = MsgBox (4+16, "Error", "Das Passwort wurde falsch eingegeben." & @CRLF & "Erneut versuchen?")
If $Msg1 = 7 Then
_While ()
Else
_Start ()
EndIf
EndIf
EndFunc ;==> _Start
; -----
Func _End ()
$pwEnd = GUICtrlRead ($EndInput, 1)
$PwInput2 = InputBox ("Bitte Passwort eingeben", "Bitte Passwort zum beenden des Programmes eingeben", "", "*")
If $PwInput2 = $pwEnd Then
$Msg3 = MsgBox (4+32, "Beenden", "Wollen Sie das Programm wirklich beenden?")
If $Msg3 = 6 Then Exit
Else
$Msg2 = MsgBox (16, "Error", "Das Passwort wurde falsch eingegeben" & @CRLF & "Erneut versuchen?")
If $Msg2 = 7 Then
_While ()
Else
_End ()
EndIf
EndIf
EndFunc ;==> _End
; -----
Func _While ()
While 1
$Prozess = GUICtrlRead ($ProcessInput, 1)
If ProcessExists ($Prozess) Then
ProcessClose ($Prozess)
EndIf
If ProcessExists ("taskmgr.exe") Then
ProcessClose ("taskmgr.exe")
MsgBox(48, "Achtung", "Taskmager ist gesperrt")
EndIf
Sleep (100)
WEnd
EndFunc ;==> _While
; -----
Func _Wait ()
While 1
$Prozess = GUICtrlRead ($ProcessInput, 1)
If ProcessExists ($Prozess) Then
ProcessClose ($Prozess)
EndIf
If ProcessExists ("taskmgr.exe") Then
ProcessClose ("taskmgr.exe")
MsgBox(48, "Achtung", "Taskmager ist gesperrt")
EndIf
WEnd
EndFunc ;==> _Wait
; -----
While 1
$nMsg = GUIGetMsg ()
Select
Case $nMsg = $OK
GUISetState (@SW_HIDE)
AdlibEnable ("_Wait")
Case $nMsg = $PfadSearch
GUICtrlSetData ($PfadInput, FileOpenDialog ("Datei auswählen.", @DesktopDir, "Alle (*.*)" ))
Case $nMsg = $Exit
If MsgBox (4+32, "Beenden", "Wollen Sie das Programm wirklich beenden?") = 6 Then Exit
EndSelect
WEnd
Am Ende der udf ist ein kleines Beispiel,
wie der Aufruf aussehen muss.
pack das einfach in eine Variable und:
$pfad = _WinAPI_ProcessGetFilename("svchost.exe",True)
[/autoit]Ich hatte es eigl. so gedacht, das wenn man den Prozess aus der Combo gewählt hat, dass dann der Pfad bei $pfadinput eingetragen wird. ändert man den Prozess, so wird der neue pfad wieder dort eingegeben.
Das is bestimmt mit GUICtrlSetData zu lösen, nur mir will einfach net einfallen, wie
Ah, moment bin einen Schritt weiter:
[autoit]
For $i = 1 to $allprocess[0][0]
$Prozess = GUICtrlRead ($ProcessInput, 1)
GUICtrlSetData ($ProcessInput, $allprocess[$i][0], "Auswählen/Eingeben-")
GUICtrlSetData ($PfadInput, _WinAPI_ProcessGetFilename ($Prozess, True))
Next
Jetzt steht der pfad bei $PfadInput drin, aber er läst sich net mehr ändern.
Man brauch wahrscheinlich i.wie ne schleife, die solange geht, bis man eben auf OK drückt... :wacko:
Na ja,
in deiner While-Schleife den Event der ComboBox abfragen, wenn auswahl,
dann den Inhalt an an die udf schicken...
GuiCtrlSetData($PfadInput, _WinAPI_ProcessGetFilename(GuiCtrlRead(DeineComboBox...),True))