我正在使用CreateProcess
运行 Adobe Acrobat Reader 来显示 PDF 文件。我想关闭该应用程序。我正在尝试使用TerminatePocess
关闭应用程序。如果只有一个应用程序实例正在运行,则TerminateProcess
可以正常工作。但如果有多个实例在运行,它不会关闭。如果在我的程序之外打开 PDF 文件,并且我的程序运行 Acrobat Reader 打开不同的文件,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 的人时它才有效。