我使用CreateProcess
来运行Adobe Acrobat Reader以显示PDF文件。我想关闭该应用程序。我正在尝试使用TerminatePocess
来关闭应用程序。如果只有一个应用程序实例正在运行,则TerminateProcess
工作得很好。但是如果有多个实例在运行,它将不会关闭。如果在我的程序外部打开PDF文件,并且我的程序运行Acrobat Reader打开另一个文件,则TerminateProcess
将不会关闭我打开的阅读器。当有多个进程打开时,TerminateProcess不工作
我使用:
result = CreateProcess(NULL, LaunchExeCharString, NULL, NULL, FALSE, bWait ? HIGH_PRIORITY_CLASS : NULL, NULL, WorkingPathName, &StartupInfo, &ProcessInformation);
哪里LaunchExeCharString
是读者(AcroRd32.exe)的名称。
StartupInfo
如下:
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.lpReserved = NULL;
StartupInfo.lpDesktop = NULL;
StartupInfo.lpTitle = NULL;
StartupInfo.dwX = 0;
StartupInfo.dwY = 0;
StartupInfo.dwXSize = 0;
StartupInfo.dwYSize = 0;
StartupInfo.dwXCountChars = 0;
StartupInfo.dwYCountChars = 0;
StartupInfo.dwFillAttribute = 0;
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow = RunMode;
StartupInfo.cbReserved2 = 0;
StartupInfo.lpReserved2 = NULL;
StartupInfo.hStdInput = NULL;
StartupInfo.hStdOutput = NULL;
StartupInfo.hStdError = NULL;
然后我用
TerminateProcess(ProcessInformation.hProcess, 0);
就像我说的,如果另一个打开PDF文件,了TerminateProcess不会终止我的acrord32.exe的实例。它只适用于我是唯一运行acrord32的人。
您可能需要找到窗口(使用EnumWindow),然后将WM_CLOSE发送到该窗口。 –