【发布时间】:2015-02-05 18:12:10
【问题描述】:
您好,我正在尝试创建一个带有“延迟”按钮的消息框如果用户没有按下延迟按钮,脚本将启动一个批处理文件(或命令)
所以它应该是这样的:
您好用户您的管理员要求您在下班后退出此应用程序,我们检测到您仍在使用该程序,如果您仍在您的机器上,请按延迟。
理想情况下,我希望它能够检测某个程序何时处于活动状态,并且仅在处于活动状态时才激活
谢谢
这是最终版本
@if (@CodeSection == @Batch) @then
@echo off
setlocal
for /f %%I in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo 0x07"') do set "beep=%%I"
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
setlocal
set "task=agent.exe"
set "timeout=120"
rem // Is %task% running?
tasklist /fi "imagename eq %task%" | find /i "%task%" >NUL && (
rem // Re-launch script with JScript interpreter
wscript /e:JScript /nologo "%~f0" %timeout% || (
rem // If timeout or user hits No, kill %task%
taskkill /im "%task%" /f
)
)
rem // End main runtime
goto :EOF
rem // Begin JScript portion
@end
var osh = WSH.CreateObject('WScript.Shell'),
nag = 'Greetings! Your administrator has requested you to log out of Touchstar '
+ 'after work. It appears you are still using it.'
+ ' If you are still here, Press Yes to continue working.\n\n'
+ 'Otherwise, press no to close touchstar.'
+ 'Touchstar will close automatically in less than ' + WSH.Arguments(0) + ' seconds.';
popup = osh.Popup(nag, WSH.Arguments(0), 'Are you still here?', 0x4 + 0x20 + 0x1000);
WSH.Quit(popup - 6);
感谢所有帮助创建此内容的人(非常感谢 Rojo)以及所有回答的人。
- 登斯拉特
【问题讨论】:
-
我猜你的批次正试图杀死这个应用程序或其他什么?
-
总之,你想检查这个应用程序是否正在运行,所以你用一个“延迟”的消息框通知用户等待一段时间,如果没有,你启动批处理文件杀死这个应用程序 ?我是对还是错?
-
Popup method 可能是一个很好的起点
标签: batch-file vbscript messagebox