installshieldインストーラーでExcelプロセスを検出しようとしています。appsearch の後に実行され、プロセスが見つかった場合にウィンドウをポップしてユーザーに警告を表示するカスタム アクションがあります。
installsite.org で見つけたいくつかの古い例を使用して、findWindow() 呼び出しを使用してみました。どちらもプロセスリストにexcel.exeが見つからないようです。
これは、findwindow を試すときに使用していたコードのスニペットです。
export prototype MyTestFunction(HWND);
function MyTestFunction(hMSI)
HWND nHwnd;
begin
nHwnd = FindWindow("EXCEL", "");
if (nHwnd != 0) then
MessageBox("found excel", WARNING);
SendMessage(nHwnd, WM_CLOSE, 0, 0);
else
MessageBox("cant find excel", WARNING);
endif;
end;
アプリケーションが開いているか閉じているかに関係なく、else ブロックだけが起動しているように見えることに注意してください。
私はこれのいくつかの異なるバリアントを試しましたが、主に「Excel」を異なる大文字、拡張子、およびバージョンに置き換えるだけです。ウィンドウを検出するものはないようです。私は Spy++ を使用しましたが、現在開いているノートブックの名前に基づいてウィンドウの名前が付けられていることが報告されました。これは、ユーザーが何を開いた可能性があるかを知る方法がないため、事態を複雑にします。
ここで提案を受け付けています。このソリューションの唯一の要件は、Installshield 内からカスタム アクションまたはインストール条件の一部として実行できる必要があることです。