| |
|
|
Blue Max | très geehrte Damen et Herren,
j'écris un Programme, de dem aus un d'autre Programme gestartet volonté soll. eh bien soll XProfan 8.0 seulement ensuite continuer, si cela gestartete Programme finissez wurde. ca konnte je früher avec dem %GetUsage befehl erreichen. eh bien existiert cette Befehl pas plus. Gibt es une Funktion, qui cette Befehl %GetUsage ersetzt?
Salut Blue Max |
|
|
| |
|
|
|
Dietmar Horn | Salut,
pour cette Zweck pourrait WinExecWait Dein ami son.
Salut 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 ▲ |
|
|
|
|
| allô Blue Max...
dans qui API Library wirst dun im Bereich Prozesse einiges finde´n, quoi dir weiterhelfen wird. ici la fois un Beispiel: KompilierenMarqueSéparationDef @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
et c'est encore plus beau: KompilierenMarqueSéparationDEF CreateProcessA(10) ! "Kernel32","CreateProcessA"
DEF GetExitCodeProcess(2) ! "Kernel32","GetExitCodeProcess"
DEF TerminateProcess(2) ! "Kernel32","TerminateProcess"
DEF ZeroMemory(2) ! "Kernel32","RtlZeroMemory"
DEF CloseHandle(1) ! "Kernel32","CloseHandle"
Déclarer lpCommandLine#
Déclarer lpStartupInfo#
Déclarer lpProcessInformation#
Déclarer ExitCode#
Déclarer Prozess$
Proc CreateProcess
Paramètres CommandLine$
Déclarer hProcess&
Faible lpCommandLine#,Len(CommandLine$)+1
Faible lpStartupInfo#,68
ZeroMemory(lpStartupinfo#,68)
Long lpStartupInfo#,0=68
Long lpStartupInfo#,44=1 Flag, quelle Anteile de Startupinfo berücksichtigt volonté devoir
Word lpStartupInfo#,48=1 SHOWParameter de WinExec
Faible 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#
Retour hProcess&
ENDPROC
Proc ProcessStatus
parameters prozid&
declare status&
GetExitCodeProcess(prozid&,Exitcode#)
status& = long(Exitcode#,0)
return status&
endproc
Déclarer hProcess&
LET PROZESS$=@LOADFILE$("Datei auswählen","*.EXE")
CASE PROZESS$=» : FIN
Faible exitcode#,4
createprocess PROZESS$
LET hProcess& = @&(0)
Windowstyle 31+512
Titre de la fenêtre "Prozess überwachen"
Fenêtre 0,0-640,440
tandis que %MENUITEM<>-2
Sleep 100
ProcessStatus hProcess&
imprimer @&(0)
imprimer hex$(long(Exitcode#,0))
endwhile
si du den Titel des Hauptfensters kennst, peux du den Prozess (cela Programme) aussi avec qui Profanfunktion FindWindow surveiller - cela habe je aussi déjà gemacht... |
|
|
| |
|
|