HWND g_hwnd;
int g_nFound;
BOOL CALLBACK FindHwndFromPID( HWND hwnd, LPARAM lParam) :
HWND GetHwndFromPID ( DWORD dwProcessId)
{
g_hwnd = NULL;
g_nFound = 0;
EnumWindows ( FindHwndFromPID, ( LPARAM) dwProcessId));
if ( g_hwnd) // we found one...
return ( g_hwnd);
// nothing found :-(
return (NULL);
}
BOOL CALLBACK FindHwndFromPID( HWND hwnd, LPARAM lParam)
{
DWORD dwPID2Find = ( DWORD) lParam;
DWORD dwPID = 0;
if ( GetWindowThreadProcessId ( hwnd, &dwPID))
{
if ( dwPID == dwPID2Find)
{
g_hwnd = hwnd;
return ( FALSE);
}
}
return ( TRUE);
}
使用方法:
HWND hwnd = GetHwndFromPID(GetCurrentProcessId());
int g_nFound;
BOOL CALLBACK FindHwndFromPID( HWND hwnd, LPARAM lParam) :
HWND GetHwndFromPID ( DWORD dwProcessId)
{
g_hwnd = NULL;
g_nFound = 0;
EnumWindows ( FindHwndFromPID, ( LPARAM) dwProcessId));
if ( g_hwnd) // we found one...
return ( g_hwnd);
// nothing found :-(
return (NULL);
}
BOOL CALLBACK FindHwndFromPID( HWND hwnd, LPARAM lParam)
{
DWORD dwPID2Find = ( DWORD) lParam;
DWORD dwPID = 0;
if ( GetWindowThreadProcessId ( hwnd, &dwPID))
{
if ( dwPID == dwPID2Find)
{
g_hwnd = hwnd;
return ( FALSE);
}
}
return ( TRUE);
}
使用方法:
HWND hwnd = GetHwndFromPID(GetCurrentProcessId());