typedef HANDLE (__stdcall *OPENTHREAD)(DWORD,BOOL,DWORD);OPENTHREAD* pfn = NULL;int main(int argc, char* argv[])
{
HMODULE hModule = LoadLibrary("kernel32.dll");
pfn = (OPENTHREAD*)::GetProcAddress(hModule,"OpenThread");
if ( pfn != NULL )
{
pfn(THREAD_ALL_ACCESS,FALSE,100);
}
return 0;
}在这个例子中,我调用出错了,请问我是哪里书写不正确。最后一个线程id在我代码中是正确,贴出来写100是为了方便。
另外想得到线程句柄还有其他办法么?是得到别人的线程句柄,不是自己的。OpenThread在VC中没有定义,所以只能通过这种方式调用。

解决方案 »

  1.   

    THREAD_ALL_ACCESS 访问权限是否有,可以用READ
      

  2.   

    typedef HANDLE (__stdcall *OPENTHREAD)(DWORD,BOOL,DWORD);
    int main(int argc, char* argv[])
    {
     HMODULE hModule = LoadLibrary("kernel32.dll");
     OPENTHREAD pfn = (OPENTHREAD)::GetProcAddress(hModule,"OpenThread");
     if ( pfn != NULL )
     {
     pfn(THREAD_ALL_ACCESS,FALSE,100);
     }
     return 0;
    }已经定义是函数指针了,再加*就成2级指针指向了,就不对了,汗死。 怎么我问问题,还我自己回答问题的
      

  3.   

    THREAD_ALL_ACCESS  这个指的是想要的权限阿 ,已经是所有权限了。