我有两个互相冲突的 .exe 应用程序(App_A 和 App_B)。 如果 App_A 已在运行,我想在用户启动 App_B 时警告用户。
ps:警告消息必须在 App_B 启动之前打开,而不是 1 秒后。消息警告将是:
您确定要启动 App_B 吗?App_A 已在运行!是/否
用户可以尝试从桌面快捷方式或关联文件启动 App_B。(用户单击该文件,它会自动启动 App_B 来编辑该文件。)
App_A 和 App_B 不是我的软件,我无法编辑它们。我想我必须使用外部自动化软件。
有人知道我可以使用哪种软件吗?我尝试过使用批处理文件的 Windows 调度程序(没有成功),但我愿意接受任何其他解决方案。我尝试过使用 Eventghost 等自动化工具,但没有成功
答案1
可以尝试一下:
- 将 App_B 的 EXE 重命名为其他名称(即
App_B_2.exe
:)。 - 创建一个批处理文件检查 App_A 的进程在内存中,如果它找到了它,显示警告和请求确认。
- 如果他们确认,启动
App_B_2.exe
(你可能想要包括一些参数占位符,然后在启动时传递它们App_B_2.exe
)。如果他们否认,那么出口批处理文件。 - 转换批处理至 EXE。
- 将转换后的 EXE 重命名为
App_B.exe
,并将其放在 App_2.exe 通常所在的应用程序文件夹中。
示例批处理文件(显然未经测试;)):
@echo off
REM Check for process
tasklist /fi "Imagename eq App_A.exe" 2>NUL | find /i /n "App_A.exe">NUL
REM If it isn't found (errorlevel > 0) launch App_B
if %ERRORLEVEL% GTR 0 goto LaunchB
REM Otherwise (errorlevel 0) it's been found, so ask for confirmation...
choice /C YN /M "App_A is running, continue launching App_B?"
if %ERRORLEVEL% EQU 1 goto LaunchB
if %ERRORLEVEL% GTR 1 exit
:LaunchB
App_B2.exe %1 %2 %3 %4 %5