Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

HANDLE

11 réponses
Avatar
Lacour Arthur
Salut

Comment récuperer le HANDLE d'un processus ? Pour le terminer avec
TerminateProcess ? J'ai juste son nom !

Merci ! @+

10 réponses

1 2
Avatar
marc
On 13 oct, 18:55, "Lacour Arthur" wrote:
Salut

Comment récuperer le HANDLE d'un processus ? Pour le terminer avec
TerminateProcess ? J'ai juste son nom !

Merci ! @+



Enumère les process pour trouver le tien comme sur
http://support.microsoft.com/kb/175030/fr
Avatar
Lacour Arthur
Le problème c'est que je débute et j'ai du mal à comprendre tout cela.
Un peu d'aide svp !


"marc" a écrit dans le message de news:

On 13 oct, 18:55, "Lacour Arthur" wrote:
Salut

Comment récuperer le HANDLE d'un processus ? Pour le terminer avec
TerminateProcess ? J'ai juste son nom !

Merci ! @+



Enumère les process pour trouver le tien comme sur
http://support.microsoft.com/kb/175030/fr
Avatar
Christian ASTOR
On 18 oct, 14:52, "Lacour Arthur" wrote:
Le problème c'est que je débute et j'ai du mal à comprendre tout ce la.
Un peu d'aide svp !



Exemple simplifié pour killer un process avec la PSAPI =>

#define UNICODE
#define _UNICODE

#include <windows.h>
#include <iostream>
#include <tchar.h>

typedef BOOL (WINAPI* PENUMPROCESSES)(DWORD* pProcessIds, DWORD cb,
DWORD* pBytesReturned );
typedef BOOL (WINAPI* PNUMPROCESSMODULES)(HANDLE hProcess, HMODULE
*lphModule, DWORD cb, LPDWORD lpcbNeeded );
typedef DWORD (WINAPI* PGETMODULEBASENAMEW)(HANDLE hProcess, HMODULE
hModule, LPWSTR lpBaseName, DWORD nSize );
PENUMPROCESSES pEnumProcesses = NULL;
PNUMPROCESSMODULES pEnumProcessModules = NULL;
PGETMODULEBASENAMEW pGetModuleBaseNameW = NULL;

DWORD GetProcessHandleFromExe(LPWSTR pszProcessName, HANDLE
*phProcess)
{
DWORD procId = 0;
*phProcess = 0;
HINSTANCE hPSAPI = LoadLibrary(TEXT("psapi.dll"));
if (hPSAPI != NULL)
{
pEnumProcesses = (PENUMPROCESSES)GetProcAddress(hPSAPI,
"EnumProcesses");
pEnumProcessModules = (PNUMPROCESSMODULES)GetProcAddress(hPSAPI,
"EnumProcessModules");
pGetModuleBaseNameW = (PGETMODULEBASENAMEW)GetProcAddress(hPSAPI,
"GetModuleBaseNameW");
if(pEnumProcesses && pEnumProcessModules && pGetModuleBaseNameW)
{
DWORD dwProcesses[1024], dwNeeded, dwNbProcesses;
if(pEnumProcesses(dwProcesses, sizeof(dwProcesses), &dwNeeded))
{
dwNbProcesses = dwNeeded / sizeof(DWORD);
for (int i = 0; i < dwNbProcesses; i++)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE |
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcesses[i]);
if (hProcess)
{
HMODULE hModule;
if (pEnumProcessModules(hProcess, &hModule, sizeof(hModule),
&dwNeeded))
{
if(dwNeeded / sizeof(HMODULE) > 0)
{
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
pGetModuleBaseNameW(hProcess, hModule, szProcessName, sizeof
(szProcessName)/sizeof(TCHAR));
if(lstrcmpi(szProcessName, pszProcessName) == 0)
{
*phProcess = hProcess;
procId = dwProcesses[i];
break;
}
}
}
CloseHandle( hProcess );
}
}
}
}
FreeLibrary(hPSAPI);
}
return procId;
}

int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hProcess;
//TCHAR szProcessName[MAX_PATH] = TEXT("notepad.exe");
TCHAR szProcessName[MAX_PATH] = TEXT("winhlp32.exe");
DWORD dwPID = GetProcessHandleFromExe(szProcessName, &hProcess);
if (dwPID)
{
if (TerminateProcess(hProcess, 1))
_tprintf(TEXT("Process [%s] (%d) killed !"), szProcessName, dwPID);
else
_tprintf(TEXT("Unable to kill process [%s] (%d)"), szProcessName,
dwPID);
}
else
_tprintf(TEXT("Process [%s] not found !"), szProcessName);
return 0;
}
Avatar
Lacour Arthur
1>D:Documents and SettingsLacour ArthurMes documentsVisual Studio
2008Projectskiller proccessDebugkiller proccess.exe : fatal error
LNK1120: 1 externes non résolus


C'est quoi ca ? XD


"Christian ASTOR" a écrit dans le message de
news:
On 18 oct, 14:52, "Lacour Arthur" wrote:
Le problème c'est que je débute et j'ai du mal à comprendre tout cela.
Un peu d'aide svp !



Exemple simplifié pour killer un process avec la PSAPI =>

#define UNICODE
#define _UNICODE

#include <windows.h>
#include <iostream>
#include <tchar.h>

typedef BOOL (WINAPI* PENUMPROCESSES)(DWORD* pProcessIds, DWORD cb,
DWORD* pBytesReturned );
typedef BOOL (WINAPI* PNUMPROCESSMODULES)(HANDLE hProcess, HMODULE
*lphModule, DWORD cb, LPDWORD lpcbNeeded );
typedef DWORD (WINAPI* PGETMODULEBASENAMEW)(HANDLE hProcess, HMODULE
hModule, LPWSTR lpBaseName, DWORD nSize );
PENUMPROCESSES pEnumProcesses = NULL;
PNUMPROCESSMODULES pEnumProcessModules = NULL;
PGETMODULEBASENAMEW pGetModuleBaseNameW = NULL;

DWORD GetProcessHandleFromExe(LPWSTR pszProcessName, HANDLE
*phProcess)
{
DWORD procId = 0;
*phProcess = 0;
HINSTANCE hPSAPI = LoadLibrary(TEXT("psapi.dll"));
if (hPSAPI != NULL)
{
pEnumProcesses = (PENUMPROCESSES)GetProcAddress(hPSAPI,
"EnumProcesses");
pEnumProcessModules = (PNUMPROCESSMODULES)GetProcAddress(hPSAPI,
"EnumProcessModules");
pGetModuleBaseNameW = (PGETMODULEBASENAMEW)GetProcAddress(hPSAPI,
"GetModuleBaseNameW");
if(pEnumProcesses && pEnumProcessModules && pGetModuleBaseNameW)
{
DWORD dwProcesses[1024], dwNeeded, dwNbProcesses;
if(pEnumProcesses(dwProcesses, sizeof(dwProcesses), &dwNeeded))
{
dwNbProcesses = dwNeeded / sizeof(DWORD);
for (int i = 0; i < dwNbProcesses; i++)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE |
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcesses[i]);
if (hProcess)
{
HMODULE hModule;
if (pEnumProcessModules(hProcess, &hModule, sizeof(hModule),
&dwNeeded))
{
if(dwNeeded / sizeof(HMODULE) > 0)
{
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
pGetModuleBaseNameW(hProcess, hModule, szProcessName, sizeof
(szProcessName)/sizeof(TCHAR));
if(lstrcmpi(szProcessName, pszProcessName) == 0)
{
*phProcess = hProcess;
procId = dwProcesses[i];
break;
}
}
}
CloseHandle( hProcess );
}
}
}
}
FreeLibrary(hPSAPI);
}
return procId;
}

int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hProcess;
//TCHAR szProcessName[MAX_PATH] = TEXT("notepad.exe");
TCHAR szProcessName[MAX_PATH] = TEXT("winhlp32.exe");
DWORD dwPID = GetProcessHandleFromExe(szProcessName, &hProcess);
if (dwPID)
{
if (TerminateProcess(hProcess, 1))
_tprintf(TEXT("Process [%s] (%d) killed !"), szProcessName, dwPID);
else
_tprintf(TEXT("Unable to kill process [%s] (%d)"), szProcessName,
dwPID);
}
else
_tprintf(TEXT("Process [%s] not found !"), szProcessName);
return 0;
}
Avatar
Christian ASTOR
On 19 oct, 20:32, "Lacour Arthur" wrote:
1>D:Documents and SettingsLacour ArthurMes documentsVisual Studio
2008Projectskiller proccessDebugkiller proccess.exe : fatal error
LNK1120: 1 externes non résolus
C'est quoi ca ? XD



Tu ne mets pas quel est le "unresolved external symbol"
Certainement pas le bon subsystem dans les propriétés du projet...
Avatar
Lacour Arthur
Tu parle de ca ?

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non rsolu
rfrenc dans la fonction ___tmainCRTStartup


"Christian ASTOR" a écrit dans le message de
news:
On 19 oct, 20:32, "Lacour Arthur" wrote:
1>D:Documents and SettingsLacour ArthurMes documentsVisual Studio
2008Projectskiller proccessDebugkiller proccess.exe : fatal error
LNK1120: 1 externes non résolus
C'est quoi ca ? XD



Tu ne mets pas quel est le "unresolved external symbol"
Certainement pas le bon subsystem dans les propriétés du projet...
Avatar
Christian ASTOR
On 21 oct, 14:13, "Lacour Arthur" wrote:
Tu parle de ca ?

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non rsolu
rfrenc dans la fonction ___tmainCRTStartup



Oui, voilà.
C'est dans les propriétés de ton projet : c'est soit le subsystem
Windows<=>Console ou Unicode<=>ANSI
Google ramène des tonnes de hits pour cette erreur, comme :
http://www.ogre3d.org/forums/viewtopic.php?f=2&t7619&start=0
Avatar
Lacour Arthur
Ok j'ai mis subsystem console, ca marche mais j'ai une vilaine console noir
derrière ! Comment je l'enlève ?


"Christian ASTOR" a écrit dans le message de
news:
On 21 oct, 14:13, "Lacour Arthur" wrote:
Tu parle de ca ?

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non rsolu
rfrenc dans la fonction ___tmainCRTStartup



Oui, voilà.
C'est dans les propriétés de ton projet : c'est soit le subsystem
Windows<=>Console ou Unicode<=>ANSI
Google ramène des tonnes de hits pour cette erreur, comme :
http://www.ogre3d.org/forums/viewtopic.php?f=2&t7619&start=0
Avatar
Christian ASTOR
On 21 oct, 16:23, "Lacour Arthur" wrote:
Ok j'ai mis subsystem console, ca marche mais j'ai une vilaine console no ir
derrière ! Comment je l'enlève ?



C'est un peu normal qu'il y ait une console si on choisit de faire un
prog console.
Si on fait un prog GUI (WinMain() au lieu de main(), subsystem
windows), il n'y aura pas de console..
Avatar
Lacour Arthur
Non mon programme n'affiche que des MessageBox donc je voudrais enlever la
console ( avec subsystem window j'ai des erreurs de li,kers)

"Christian ASTOR" a écrit dans le message de
news:
On 21 oct, 16:23, "Lacour Arthur" wrote:
Ok j'ai mis subsystem console, ca marche mais j'ai une vilaine console
noir
derrière ! Comment je l'enlève ?



C'est un peu normal qu'il y ait une console si on choisit de faire un
prog console.
Si on fait un prog GUI (WinMain() au lieu de main(), subsystem
windows), il n'y aura pas de console..
1 2