CreateProcess
Adobe Acrobat Reader を実行して PDF ファイルを表示するために使用しています。そのアプリケーションを閉じたいと思います。アプリケーションを閉じようとしTerminatePocess
ています。アプリケーションのインスタンスが 1 つしか実行されていない場合は、問題なく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を実行したのは私だけだった場合にのみ機能します。