@Safog und @all....task killen!!!!!!!!!!!!!!!help
(Autor: f l a s һ e r, Frage gestellt am So, 12. Okt 2003)
@Safog und all!!!!!!!!!!!1
warum geht bei mir das net???
/****************************************************************************
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle
und gibt es zurück.
Übergabe
strProcessExe Prozess-Executable.
dwDesiredAccess Benötigter Prozess-Zugriff.
Rückgabe
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************/
HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{
HANDLE hSnapShot; // System-Snap-Shot-Handle
PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur
HANDLE hProcess; // Prozess-Handle
CString strExeFile; // Hilfssstring
BOOL bOK; // Abbruch-Flag
// Liste aller im System laufenden Prozesse erstellen
hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hSnapShot==INVALID_HANDLE_VALUE )
// Fehler aufgetreten
return NULL;
// Prozess-Executable in Kleinbuchstaben wandeln
strProcessExe.MakeLower( );
// Prozess-Liste durchlaufen
PEntry.dwSize=sizeof( PEntry );
bOK=::Process32First( hSnapShot, &PEntry );
for( ; bOK; bOK=::Process32Next( hSnapShot, &PEntry )){
// Pozess-ID in Handle umwandeln
hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID );
if( hProcess==NULL )
// Umwandlung misslungen
continue;
// Prozess-Executable in Kleinbuchstaben wandeln und prüfen
strExeFile=PEntry.szExeFile;
strExeFile.MakeLower( );
if( strExeFile.Find( strProcessExe )!=-1 )
// Passenden Prozess gefunden, Handle zurückgeben
return hProcess;
}
// Nichts Passendes gefunden
return NULL;
}
Damit kannst Du mit
TerminateProcess( GetProcessHandle( "test.exe", PROCESS_TERMINATE ), 0 );
/*einen laufenden Prozess "test.exe" beenden. Das gelingt aber nur, wenn der ausführende
Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden
Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei
der Executable keinen Pfad anzugeben.*/
er schreibt:
error: improper use of typedef HANDLE
error: statement missing; (auch bei dem handle)
hilf mir bitte!!!!!
email:
[E-Mail-Adresse entfernt]
lg flasher
warum geht bei mir das net???
/****************************************************************************
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle
und gibt es zurück.
Übergabe
strProcessExe Prozess-Executable.
dwDesiredAccess Benötigter Prozess-Zugriff.
Rückgabe
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************/
HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{
HANDLE hSnapShot; // System-Snap-Shot-Handle
PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur
HANDLE hProcess; // Prozess-Handle
CString strExeFile; // Hilfssstring
BOOL bOK; // Abbruch-Flag
// Liste aller im System laufenden Prozesse erstellen
hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hSnapShot==INVALID_HANDLE_VALUE )
// Fehler aufgetreten
return NULL;
// Prozess-Executable in Kleinbuchstaben wandeln
strProcessExe.MakeLower( );
// Prozess-Liste durchlaufen
PEntry.dwSize=sizeof( PEntry );
bOK=::Process32First( hSnapShot, &PEntry );
for( ; bOK; bOK=::Process32Next( hSnapShot, &PEntry )){
// Pozess-ID in Handle umwandeln
hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID );
if( hProcess==NULL )
// Umwandlung misslungen
continue;
// Prozess-Executable in Kleinbuchstaben wandeln und prüfen
strExeFile=PEntry.szExeFile;
strExeFile.MakeLower( );
if( strExeFile.Find( strProcessExe )!=-1 )
// Passenden Prozess gefunden, Handle zurückgeben
return hProcess;
}
// Nichts Passendes gefunden
return NULL;
}
Damit kannst Du mit
TerminateProcess( GetProcessHandle( "test.exe", PROCESS_TERMINATE ), 0 );
/*einen laufenden Prozess "test.exe" beenden. Das gelingt aber nur, wenn der ausführende
Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden
Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei
der Executable keinen Pfad anzugeben.*/
er schreibt:
error: improper use of typedef HANDLE
error: statement missing; (auch bei dem handle)
hilf mir bitte!!!!!
email:
[E-Mail-Adresse entfernt]
lg flasher
Artikelbaum anzeigen
Re: @Safog und @all....task killen!!!!!!!!!!!!!!!h
(Autor: F r і t z е, Antwort nach 1 Tag, 21 h, 25 Min)
Hallo,
Dein Frageposting sieht ja aus wie Modem-Noise (@&&%!!!??). Ich habe keine Lust, mich mühsam durch Deinen "obfuscated" Code zu wuseln. Poste doch bitte noch einmal Deine genau Frage in ganzen Sätzen und packe den Code in "pre" Tags. Dann bleiben Einrückungen erhalten.
Gruß
Fritze
Dein Frageposting sieht ja aus wie Modem-Noise (@&&%!!!??). Ich habe keine Lust, mich mühsam durch Deinen "obfuscated" Code zu wuseln. Poste doch bitte noch einmal Deine genau Frage in ganzen Sätzen und packe den Code in "pre" Tags. Dann bleiben Einrückungen erhalten.
Gruß
Fritze
Re: @Safog und @all....task killen!!!!!!!!!!!!!!!h
(Autor: Ѕ a f o g, Antwort nach 2 Tagen, 14 h, 33 Min)
@Safog und all!!!!!!!!!!!1
warum geht bei mir das net???
Hallo!warum geht bei mir das net???
Die Funktion stammt zwar von mir (http://www.wer-weiss-was.de/cgi-bin/f...), Du musst aber schon genauer werden!! Wie rufst Du die Funktion auf, welches System, welche Entwicklungsumgebung...?
Hast Du auch die Anmerkung am Schluss beachtet: Ich zitiere:
"Das gelingt aber nur, wenn der ausführende Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden Rechten oder einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei der Executable keinen Pfad anzugeben."
Grüße Safog
Du kannst auf diesen Artikel nicht antworten.
Dieser Artikelbaum ist im Archiv des Experten-Forums von wer-weiss-was zum Thema "C/C++" archiviert. Es handelt sich um keine aktuelle Diskussion, daher kann auf die Artikel nicht mehr geantwortet werden.
Folgende Artikel könnten Dich auch interessieren:
Programm stürzt bei zweiten Funktionsaufruf abSysListView32 von Fremdanwendung auslesen
Process ueberwachen
Linker Probleme
Link Error 1123
RS232 serielle Kommunikation
IOCTL_GET_VERSION (Error 1)
fscanf()
Problem beim DLL-Einbinden und GetProcAddress()
Ich blick nicht mehr durch (VC++)
CString als Rückgabewert ???
jTextField in 'Realtime' aktualisieren
vorheriger Artikelbaum
(Datenfeld mit new)
(Rückgabe von Variablen)
nächster Artikelbaum















