VC++6.0建的工程,放到VS2005中编缉,其中有这么一段,就是获取不到值(我用生命发誓2236这个进程PID存在,这个不用考虑在内!)hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE,2236);
if(hProcess==NULL)
{
    ::MessageBox(NULL,"没有获取到值","Caption",MB_OK);
}
有能力的破吧,还有以后要有世界上认为不可能的事,请来问我,我都遇到过.

解决方案 »

  1.   

    补充个重要问题,是在生成的.exe文件中获取不到,在调试F5和ctrl+F5都能
      

  2.   

    而且我发现.exe虽然获取不到,可是他能获取到 “有窗口的程序的进程句柄”,那为什么在ctrl+F5和F5调试中确有没有窗口都能获取到呢
      

  3.   

    OpenProces 之后用 getlasterror 看看
      

  4.   

    也不是出错,就获取不到了,
    getlasterror 放在什么位置怎么写呀?
      

  5.   

    OpenProcess失敗 並不能説明進程不存在 也許你出錯的原因是:
    "To open a handle to another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege."
      

  6.   

    ps隨便用PROCESS_ALL_ACCESS我個人認爲是很業餘的做法 正常應該只申請完成操作所必須的最小權限
      

  7.   

    迷糊,上面大哥,我是新手不懂,只是我按照你上面的兄弟方法GetLastError()错误5,是权限问题题,我最不明白的是为什么F5和Ctrl+F5能好使呢?
      

  8.   

    msdn上說得很清楚了啊“To open a handle to another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege”
    如果你要獲得完全權限 就要先有SeDebugPrivilege特權 所以你申請較少操作權限就不用事先作這個操作
      

  9.   

    ctrl+f5 f5應該是VC調試器給你獲取了這個權限吧 你是他的子進程