从批处理文件触发任务栏按钮闪烁?
是否可以从批处理文件触发 Windows 的“闪烁任务栏按钮 X 次或直到窗口到达前台”行为?我试图在完成后引起用户对长时间运行的脚本的注意。
使用外部程序来触发刷新是可以的,只要它不需要安装(即可执行文件可以与我的脚本捆绑在一起)。
更新
这就是我最终得到的结果(Andreas 的 Delphi 代码的极简移植)。我在 MinGW 下编译了它,它似乎仅依赖于 KERNEL32.DLL 和 USER32.DLL,因此应该具有高度可移植性。
闪烁三次,然后保持突出显示,直到转到前台。
#define WINVER 0x501
#define _WIN32_WINNT 0x501
#include <windows.h>
void main(int argc, char **argv) {
FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 };
FlashWindowEx(&info);
}
Is it possible to trigger Windows' "flash the task bar button X times or until the window comes to the foreground" behavior from a batch file? I'm trying to call the user's attention to a long-running script upon completion.
Using an external program to trigger the flashing is fine, as long as it doesn't require an install (i.e. the executable can be bundled with my scripts).
Update
Here's what I ended up with (a minimalist port of Andreas' Delphi code). I've compiled it under MinGW at it appears to be dependent only on KERNEL32.DLL and USER32.DLL, so should be highly portable.
Flashes three times, then stays highlighted until brought to the foreground.
#define WINVER 0x501
#define _WIN32_WINNT 0x501
#include <windows.h>
void main(int argc, char **argv) {
FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 };
FlashWindowEx(&info);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用非常简单的外部 *.exe 即可轻松完成。它只需调用
FlashWindowEx
Windows API 的函数。这是一个示例 Delphi 控制台应用程序:
只需调用它即可
闪烁当前控制台窗口十次。调用
闪窗27次。
It is very easy to do using a very simple external *.exe. It simply has to call the
FlashWindowEx
function of the Windows API.This is a sample Delphi console application:
Simply call it like
to flash the current console window ten times. Call
to flash the window 27 times.