查找到记事本程序的句柄,并打开它的进程,可是 dwProcessID却为空,记事本程序已经打开,不知道为什么!没有提示错误! fhwnd=::FindWindow("Notepad", NULL);
::GetWindowThreadProcessId(fhwnd,&dwProcessID);
if(ProcessID==NULL)
{
MessageBox("错误");
}
hProcess=OpenProcess(PROCESS_VM_WRITE+PROCESS_VM_OPERATION,TRUE,dwProcessID);
CloseHandle(hProcess);

解决方案 »

  1.   

    没有任何错误,只是
    if(ProcessID==NULL)
    应该是if(dwProcessID==NULL) 才对吧。
      

  2.   

    fhwnd=::FindWindow("Notepad", NULL);FindWindow的第一个参数应该是窗口的标题,检查返回的fhwnd是否为空。。
      

  3.   

    GetWindowThreadProcessID如果失败是不会修改你的dwProcessID,如果楼主前面没有
    dwProcessID = NULL; 那么当然是检测不到错误。还有传进去一个错误的dwProcessID参数是不会导致OpenProcess崩溃的,无效的hProcess给CloseHandle也同样,所以程序无反应。楼主如过通过检测hProcess的非零性就可以提示错误
    if( !hProcess )
        MessageBox("错误");
      

  4.   

    findwindow参数必须完全与程序窗体的名字一样 
    Notepad 不是吧?
    你看看记事本的标题是不是notepad