我使用CreateProcess()函数使用“mstsc.exe”启动rdp客户端应用程序.之后,我想终止它,所以我使用TerminateProcess()函数,但它失败,错误代码为5.如果我用“notepad.exe”替换“mstsc.exe”,则终止函数有效.代码如下:
TCHAR szCommandLine[] = TEXT("mstsc.exe");
STARTUPINFO si = {sizeof(si)};
PROCESS_informatION pi;
BOOL bResult = CreateProcess(NULL, szCommandLine, NULL, NULL,
FALSE, norMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
::Sleep(3000);
if (TerminateProcess(pi.hProcess, 0) == 0) {
printf("Failed: %d", GetLastError());
}
任何人都可以帮助解释并解决它吗?
我观察到的是,返回的pid的pid与在taksmanager或“Process Explorer”中观察到的进程“mstsc.exe”的id不同.
解决方法:
您的主机进程是32位还是在64位Windows上运行?
如果是这样,你正在调用32位mstsc并且它产生一个64位版本,因此产生不同的PID.查看this thread