2,640
社区成员
发帖
与我相关
我的任务
分享
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
TCHAR szMyProc[] = L"mplayerc.exe";
//枚举所有的进程
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
cProcesses = cbNeeded / sizeof(DWORD);
for ( i = 0; i < cProcesses; i++ )
{
//打开每个进程,判断进程映象名是否和mplayerc.exe相匹配
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i] );
if (NULL != hProcess )
{
DWORD dwRet = 0;
TCHAR szProcessName[MAX_PATH] = L"unknown";
dwRet = GetProcessImageFileName(hProcess,szProcessName,MAX_PATH);
if (0!=dwRet)
{
CString strProcName = szProcessName;
CString strTemp = strProcName.Right(wcslen(szMyProc));
if (!strTemp.Compare(szMyProc))
{
//找到和mplayerc.exe相匹配的的进程,接下来枚举系统中所有窗口,
//并判断窗口所在的进程和所找到的进程是否是同一个
EnumWindows(GetProcWindowsProc,aProcesses[i]);
}
}
}
CloseHandle( hProcess )
}
BOOL CALLBACK GetProcWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD dwProcId = 0;
if (GetWindowThreadProcessId(hwnd, &dwProcId))
{
if (dwProcId == lParam)
{
//得到该窗口句柄
dosomething...
return FALSE;
}
}
return TRUE;
}
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
TCHAR szMyProc[] = L"mplayerc.exe";
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
cProcesses = cbNeeded / sizeof(DWORD);
for ( i = 0; i < cProcesses; i++ )
{
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i] );
if (NULL != hProcess )
{
DWORD dwRet = 0;
TCHAR szProcessName[MAX_PATH] = L"unknown";
dwRet = GetProcessImageFileName(hProcess,szProcessName,MAX_PATH);
if (0!=dwRet)
{
CString strProcName = szProcessName;
CString strTemp = strProcName.Right(wcslen(szMyProc));
if (!strTemp.Compare(szMyProc))
{
EnumWindows(GetProcWindowsProc,aProcesses[i]);
}
}
}
}