- Offizieller Beitrag
Hi,
Ich wollte eine Funktion schreiben, um ein Skript in SciTE mit einer Tastenkombination neuzustarten, also abzuschießen und dann neu zu starten.
# 44 Restart
command.44.*="$(SciteDefaultHome)\Restart\Restart.exe" "$(FilePath)"
command.name.44.*=Restart this script
command.shortcut.44.*=Ctrl+R
Restart.au3, kompilieren in C:\Program Files (x86)\AutoIt\SciTE\Restart (oder äquivalent):
Spoiler anzeigen
#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]Global $szDrive, $szDir, $szFName, $szExt
if $cmdline[0] == 0 Then Exit
_killScript($szFName)
Run('"..\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "' & $CmdLineRaw & '"')
Func _killScript($name)
; kill exe
Run(@ComSpec & "/c taskkill /t /im " & $szFName & ".exe", "")
; kill au3 run under autoit3.exe
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Output = ""
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\ROOT\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
ConsoleWrite("1")
If IsObj($colItems) Then
For $objItem In $colItems
if ($objItem.Name == "autoi3.exe") and (StringRight($objItem.CommandLine, StringLen($name)) == $name) then
MsgBox(0, "", $objItem.ProcessId & @CRLF & $objItem.Name & @CRLF & $objItem.CommandLine)
Run(@ComSpec & "/c taskkill /t /im " & $objItem.ProcessId, "")
EndIf
Next
EndIf
EndFunc ;==>_killScript
Func WMIDateStringToDate($dtmDate)
Return (StringMid($dtmDate, 5, 2) & "/" & _
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc ;==>WMIDateStringToDate
Der Eintrag in der SciTEUser.properties funktioniert auch. Leider wird er wie die anderen Tools ausgegraut, wenn ein Skript läuft und damit habe ich so nichts davon. Weiß jemand, wie ich das verhindern kann?
Und dann wäre es wohl noch gut, den gefundenen Prozess direkt neuzustarten anstatt ihn zu schließen und dann wieder zu öffnen. Hat da jemand ein Stückchen Code für mich eventuell?
Danke!
Johannes