我一直在尝试在我的 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 中运行。