| |
|
|
Blue Max | Sehr geehrte Damen y Herren,
Yo escribir una Programa, de el de una más Programa comenzó voluntad se. Nun se XProfan 8.0 sólo entonces fortsetzen, si el gestartete Programa final wurde. Dies podría Yo früher con el %GetUsage befehl erreichen. Nun existiert dieser Befehl no mehr. Gibt lo una Función, el esta Befehl %GetUsage ersetzt?
Saludo Blue Max |
|
|
| |
|
|
|
Dietmar Horn | ¡Hola,
para esta Zweck dürfte WinExecWait Su Freund ser.
Saludo Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 31.05.2005 ▲ |
|
|
|
|
| ¡Hola Blue Max...
In el API Library wirst dun en Prozesse einiges finde´n, qué dir weiterhelfen se. Hier veces una Ejemplo: KompilierenMarcaSeparaciónDef @CreateToolhelp32Snapshot(2) !"kernel32","CreateToolhelp32Snapshot"
Def @Process32First(2) !"kernel32","Process32First"
Def @Process32Next(2) !"kernel32","Process32Next"
Def @CloseHandle(1) !"kernel32","CloseHandle"
Def @TerminateProcess(2) !"kernel32","TerminateProcess"
Def @OpenProcess(3) !"kernel32","OpenProcess"
Def &TH32CS_SNAPPROCESS 2
Def &PROCESS_TERMINATE 1
Declare PROCESSENTRY#
Struct PROCESSENTRY32 =dwSize&,cntUsage&,th32ProcessID&,th32DefaultHeapID&,th32ModuleID&,cntThreads&,th32ParentProcessID&,pcPriClassBase&,dwFlags&,szExeFile$(260)
Proc actua
parameters prozess$, delete%
declare lenname&
declare hSnapshot&, Result&, hProcess&, proz_anzahl&, term_ok&
Dim PROCESSENTRY#, PROCESSENTRY32
Long PROCESSENTRY#,0 =296
clear proz_anzahl&, term_ok&
lenname& = len(prozess$)
prozess$ = Lower$(prozess$)
hSnapshot& = CreateToolhelp32Snapshot(&TH32CS_SNAPPROCESS, 0)
IfNot hSnapshot& = -1
Result& = Process32First(hSnapshot&, PROCESSENTRY#)
messagebox(str$(GetLastError()),"Err",48)
messagebox(str$(Result&),str$(hSnapshot&),48)
While Result&
messagebox(Lower$(Right$(PROCESSENTRY#.szExeFile$,lenname&)),"",48)
if Lower$(Right$(PROCESSENTRY#.szExeFile$,lenname&)) = prozess$
if delete% = 1
hProcess& = @OpenProcess(&PROCESS_TERMINATE, 0, PROCESSENTRY#.th32ProcessID&)
sendmessage(hProcess&,$0010,0,0)
term_ok& = @TerminateProcess(hProcess&, 0)
@CloseHandle(hProcess&)
sleep 100
endif
proz_anzahl& = proz_anzahl& + (delete%<>1) + term_ok&
endif
Result& = Process32Next(hSnapshot&, PROCESSENTRY#)
EndWhile
endif
@CloseHandle(hSnapshot&)
Dispose PROCESSENTRY#
return proz_anzahl&
Endproc
@WinEXEC("NotePad.exe",1)
Windowstyle 31
Windowtitle "Prozess überwachen!"
While 0=0
Window 0,0-640,440
Sleep 100
actua "Notepad.exe",0
IF @&(0)>0
Drawtext 0,0,"Notepad noch aktiv: "+@str$(@&(0))+" "
Else
Drawtext 0,0,"Notepad gibts nicht mehr!"+@str$(@&(0))+" "
wend
Und el es todavía schöner: KompilierenMarcaSeparaciónDEF CreateProcessA(10) ! "Kernel32","CreateProcessA"
DEF GetExitCodeProcess(2) ! "Kernel32","GetExitCodeProcess"
DEF TerminateProcess(2) ! "Kernel32","TerminateProcess"
DEF ZeroMemory(2) ! "Kernel32","RtlZeroMemory"
DEF CloseHandle(1) ! "Kernel32","CloseHandle"
Declarar lpCommandLine#
Declarar lpStartupInfo#
Declarar lpProcessInformation#
Declarar ExitCode#
Declarar Prozess$
Proc CreateProcess
Parámetros CommandLine$
Declarar hProcess&
Dim lpCommandLine#,Len(CommandLine$)+1
Dim lpStartupInfo#,68
ZeroMemory(lpStartupinfo#,68)
Largo lpStartupInfo#,0=68
Largo lpStartupInfo#,44=1 Flag, welche Anteile de Startupinfo berücksichtigt voluntad debería
Word lpStartupInfo#,48=1 SHOWParameter de WinExec
Dim lpProcessInformation#,16
ZeroMemory(lpProcessInformation#,16)
String lpCommandLine#,0=CommandLine$
CreateProcessA(0,lpCommandLine#,0,0,0,0,0,0,lpStartupInfo#,lpProcessInformation# )
hProcess&=Largo(lpProcessInformation#,0)
Disponer lpCommandLine#
Disponer lpStartupInfo#
Disponer lpProcessInformation#
Volver hProcess&
ENDPROC
Proc ProcessStatus
parámetros prozid&
declarar status&
GetExitCodeProcess(prozid&,Exitcode#)
status& = long(Exitcode#,0)
volver status&
ENDPROC
Declarar hProcess&
LET PROZESS$=@LOADFILE$("Datei auswählen","*.EXE")
CASE PROZESS$="" : FIN
Dim exitcode#,4
createprocess PROZESS$
LET hProcess& = @&(0)
Windowstyle 31+512
Título de la ventana "Prozess überwachen"
Ventana 0,0-640,440
mientras que %MENUITEM<>-2
Sleep 100
ProcessStatus hProcess&
imprimir @&(0)
imprimir hex$(long(Exitcode#,0))
endwhile
Wenn du el Titel des Hauptfensters kennst, kannst du el Prozess (el Programa) auch con el Profanfunktion FindWindow überwachen - el Yo auch ya gemacht... |
|
|
| |
|
|