DWORD dwProcessID;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
DWORD Pid = 0;
DWORD hProcId;
GetWindowThreadProcessId( hwnd, &pid ); //枚举进程id
if(dwProcessID == pid)
{
dwProcessID=pid;
HWND m_ProcessID=(HWND)dwProcessID;//获得句柄
}
if(m_ProcessID)
{
GetWindowThreadProcessId(m_ProcessID,&hProcId); //获取进程ID
HANDLE gnd = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程 }
if(gnd)
{
...... //开始挂挂的具体代码
}
}void CMy555Dlg::OnButton1()
{
EnumWindows( EnumWindowsProc, (LPARAM)NULL);
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
DWORD Pid = 0;
DWORD hProcId;
GetWindowThreadProcessId( hwnd, &pid ); //枚举进程id
if(dwProcessID == pid)
{
dwProcessID=pid;
HWND m_ProcessID=(HWND)dwProcessID;//获得句柄
}
if(m_ProcessID)
{
GetWindowThreadProcessId(m_ProcessID,&hProcId); //获取进程ID
HANDLE gnd = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程 }
if(gnd)
{
...... //开始挂挂的具体代码
}
}void CMy555Dlg::OnButton1()
{
EnumWindows( EnumWindowsProc, (LPARAM)NULL);
}
HWND m_ProcessID和HANDLE gnd在{}内有效;
最后要关句柄,返回值。
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
DWORD dwProcessID = (DWORD)lParam;
HANDLE hTargetProcess = NULL; //进程的句柄 DWORD dwNewProcId = 0;
GetWindowThreadProcessId(hWnd, &dwNewProcId); //获取进程ID
if(dwProcessID == dwNewProcId)
{
HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程句柄
if (hTargetProcess != NULL)
{
//开始其他的代码
//...............
}
}
} void CMy555Dlg::OnButton1()
{
// 这里你首先应该知道目标进程的ID, 这个变量必须通过其他方式初始化
// 否则你在窗口的枚举函数的判断条件就不成立,也可以不是全局变量
DWORD dwProcessID = xxx;
EnumWindows(EnumWindowsProc, (LPARAM)dwProcessID);
}
{
dwProcessID=pid;
HWND m_ProcessID=(HWND)dwProcessID;//获得句柄
}
if(m_ProcessID)
{
GetWindowThreadProcessId(m_ProcessID,&hProcId); //获取进程ID
HANDLE gnd = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程 } 这个能通过编译,m_Process在两个if语句中?