Hallo,
ich lasse ffmpeg in einem GUI-Edit laufen. Das funktioniert auch. Allerdings bekomme ich den Abbruch nicht hin, der im normalen Konsolenfenster mit der Tastatureingabe "q" funktioniert. Hat jemand eine Idee, wie man das hinbekommt? Unten die vereinfachte Darstellung. In der Funktion _STOPClick() habe ich ControlSend und diverse Send-Kommandos erfolglos getestet. ALT+0113 = "q"
Gruß
Thomas
AutoIt
#include <GUIConstants.au3>
#include <Array.au3>
#Include <GuiEdit.au3>
Opt("GUIOnEventMode", 1)
Global $MAIN, $CMD_WINDOW
Global $IP_CONFIG, $OTHER, $BUTT_CLOSE
Global $winhandle = 0
Global $pid = 0
$MAIN = GUICreate("CMD FUNCTIONS", 623, 449, 192, 114)
$CMD_WINDOW = GUICtrlCreateEdit("", 10, 10, 600, 289, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlSetFont($CMD_WINDOW, 12, 800, 0, "Times New Roman")
GUICtrlSetColor($CMD_WINDOW, 0xFFFFFF)
GUICtrlSetBkColor($CMD_WINDOW, 0x000000)
$IP_CONFIG = GUICtrlCreateButton("START", 10, 310, 75, 25)
GUICtrlSetOnEvent($IP_CONFIG, "_STARTClick")
$OTHER = GUICtrlCreateButton("STOP", 95, 310, 75, 25)
GUICtrlSetOnEvent($OTHER, "_STOPClick")
$BUTT_CLOSE = GUICtrlCreateButton("EXIT", 535, 310, 75, 25)
GUICtrlSetOnEvent($BUTT_CLOSE, "_ExitNow")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _ExitNow()
Exit
EndFunc
Func _STARTClick()
Local $command = @ScriptDir & "\test2.cmd"
$pid = Run($command,@SystemDir,@SW_HIDE, $STDERR_MERGED)
Local $line, $oldline
_GUICtrlEdit_AppendText($CMD_WINDOW, $command & @CRLF)
While Sleep(50)
$line = StdoutRead($pid)
If $oldline <> $line Then
_GUICtrlEdit_AppendText($CMD_WINDOW, @LF & $line)
$oldline = $line
EndIf
If Not ProcessExists($pid) Then ExitLoop
WEnd
EndFunc
Func _GetHwndFromPID($pid) ; Handle
$hWnd = 0
$stPID = DllStructCreate("int")
Do
$winlist2 = WinList()
For $i = 1 To $winlist2[0][0]
If $winlist2[$i][0] <> "" Then
DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $winlist2[$i][1], "ptr", DllStructGetPtr($stPID))
If DllStructGetData($stPID, 1) = $pid Then
$hWnd = $winlist2[$i][1]
ExitLoop
EndIf
EndIf
Next
Sleep(100)
Until $hWnd <> 0
Return $hWnd
EndFunc ;==>_GetHwndFromPID
Func _STOPClick()
;$winhandle = _GetHwndFromPID($pid)
;ControlSend($winhandle,"","[CLASS:Edit; INSTANCE:1]","q")
Send("ffmpeg.exe{ASC 0113}")
EndFunc
Alles anzeigen