| |
|
|
| Kleine Spielerei nach einem Quelltext von Ragnar Rehbein: KompilierenMarkierenSeparierenDEF CreateProcessA(10) ! "Kernel32","CreateProcessA"
DEF GetExitCodeProcess(2) ! "Kernel32","GetExitCodeProcess"
DEF TerminateProcess(2) ! "Kernel32","TerminateProcess"
DEF ZeroMemory(2) ! "Kernel32","RtlZeroMemory"
Declare lpCommandLine#
Declare lpStartupInfo#
Declare lpProcessInformation#
Declare ExitCode#
Declare Prozess$
Proc CreateProcess
Parameters CommandLine$,Showparameter$,XPOS$,YPOS$,XSIZE$,YSIZE$
Declare hProcess&,Flags&
Dim lpCommandLine#,Len(CommandLine$)+1
Dim lpStartupInfo#,68
ZeroMemory(lpStartupinfo#,68)
Long lpStartupInfo#,0=68
Case Showparameter$<>"" : LET FLAGS&=FLAGS&+1
CASE @OR(XPOS$<>"",YPOS$<>"") : LET FLAGS&=FLAGS&+4
CASE @OR(XSIZE$<>"",YSIZE$<>"") : LET FLAGS&=FLAGS&+2
Long lpStartupInfo#,44=Flags& Flag, welche Anteile von Startupinfo berücksichtigt werden sollen
Word lpStartupInfo#,48=@VAL(Showparameter$) SHOWParameter von WinExec
Long lpStartupInfo#,16=@VAL(XPOS$) Einleuchtend - oder?
Long lpStartupInfo#,20=@VAL(YPOS$) Einleuchtend - oder?
Long lpStartupInfo#,24=@VAL(XSIZE$) Einleuchtend - oder?
Long lpStartupInfo#,28=@VAL(YSIZE$) Einleuchtend - oder?
Dim lpProcessInformation#,16
ZeroMemory(lpProcessInformation#,16)
String lpCommandLine#,0=CommandLine$
CreateProcessA(0,lpCommandLine#,0,0,0,0,0,0,lpStartupInfo#,lpProcessInformation# )
hProcess&=Long(lpProcessInformation#,0)
Dispose lpCommandLine#
Dispose lpStartupInfo#
Dispose lpProcessInformation#
Return hProcess&
EndProc
Proc KillProcess
Parameters hProcess&
GetExitCodeProcess(hProcess&,Exitcode#)
TerminateProcess(hProcess&,Long(exitcode#,0))
Dispose Exitcode#
EndProc
Proc ProcessStatus
parameters prozid&
declare status&
GetExitCodeProcess(prozid&,Exitcode#)
status& = long(Exitcode#,0)
return status&
endproc
Declare hProcess&
LET PROZESS$=@LOADFILE$("Datei auswählen","*.EXE")
CASE PROZESS$="" : END
Dim exitcode#,4
createprocess PROZESS$,"0","","","","" Prozess versteckt
createprocess PROZESS$,"1","100","30","200","100" Prozess sichtbar
createprocess PROZESS$,"2","10","30","400","400" Prozess minimiert
LET hProcess& = @&(0)
Windowstyle 31+512
WindowTitle "Prozess überwachen"
Window 0,0-640,440
settimer 400
while %MENUITEM<>-2
waitinput
ProcessStatus hProcess&
print @&(0)
print hex$(long(Exitcode#,0))
endwhile
KillProcess hProcess&
Dispose xitcode#
End
|
|
|
| |
|
|