View Full Version : [C] Funzione Kill in Windows XP
Salve, quando voglio eseguire un programma da un programma in C utilizzo la funzione system(), volevo chiedervi se esiste una funzione che "uccide" il processo, l'equivalente di kill() in Unix. Inoltre, esiste l'equivalente di exec, la funzione system mi sembta un pocp riduttiva. Grazie.
ilsensine
04-08-2005, 21:36
Guarda se mi tocca dare supporto anche per la concorrenza... :D google e msdn fanno miracoli, sapete? ;)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/terminating_a_process.asp
TerminateProcess; devi avere un handle aperto del processo target coi permessi necessari.
Abbiate pazienza, potete farmi un esempio? Ho usato gli header <w32api.h>, <Winbase.h> ,<Windows.h>; ma Visual C++ mi dà questo errore: fatal error C1083: Cannot open include file: 'w32api.h': No such file or directory
Error executing cl.exe. Se tolgo l'header <w32api.h>, sono rilevati 79 errori!
Datemi una mano. Grazie mille
infatti l'header w32api.h non esiste, non so da dove tu l'abbia preso... devi includere solamente windows.h ;)
windows.h non provoca errori se abiliti le estensioni Microsoft del C (abilitate di default); se ci sono errori probabilmente dipendono dal resto del codice :)
Ammettiamo solo che volessi far partire solo il Notepad potresti scrivermi la sintassi corretta della funzione?
Ammettiamo solo che volessi far partire solo il Notepad potresti scrivermi la sintassi corretta della funzione? pensavo che lo volessi terminare il notepad :p
per avviarlo in Visual C++ esistono diversi modi:
system("notepad.exe");
ShellExecute(NULL, TEXT("open"), TEXT("notepad.exe"), NULL, NULL, SW_SHOW);
WinExec("notepad.exe", SW_SHOW);
STARTUPINFO si = {
sizeof(STARTUPINFO)
};
PROCESS_INFORMATION pi;
CreateProcess(TEXT("notepad.exe"), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
ti ho risparmiato spawn e ShellExecuteEx :p
pensavo che lo volessi terminare il notepad :p
per avviarlo in Visual C++ esistono diversi modi:
system("notepad.exe");
ShellExecute(NULL, TEXT("open"), TEXT("notepad.exe"), NULL, NULL, SW_SHOW);
WinExec("notepad.exe", SW_SHOW);
STARTUPINFO si = {
sizeof(STARTUPINFO)
};
PROCESS_INFORMATION pi;
CreateProcess(TEXT("notepad.exe"), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
ti ho risparmiato spawn e ShellExecuteEx :p
Scusami, con CreateProcess il Notepad non parte....
Sono riuscito far funzionare CreateProcess, ho tolto (TEXT) dai parametri, ora vorrei usare TerminateProcess, uno dei parametri è l' handle del processo, come faccio a rilevare l'handle del processo in esecuzione?
Ok grazie per gli aiuti ho capito :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.