日期:2011-03-22 13:55:00 来源:本站整理
<b>若何自动移去系统托盘失效的图标</b>[VC/C++编程]
本文“<b>若何自动移去系统托盘失效的图标</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
有些Window利用程序在启动今后会在系统托盘去增添一个小图标, 普通情形下当程序正常退出时会自动去掉,但有时由于利用程序不法关闭,这个图标便一向留在托盘区,直到用鼠标移动图标上时,才会自己消逝.那么我们便可以模拟鼠标移动到一一图标上,来到达这个效果.
void __fastcall RemoveDeadIcons()
{
HWND hTrayWindow;
RECT rctTrayIcon;
int nIconWidth;
int nIconHeight;
TPoint CursorPos;
int nRow;
int nCol;
// Get tray window handle and bounding rectangle
hTrayWindow = FindWindowEx(FindWindow(
"Shell_TrayWnd", NULL), 0, "TrayNotifyWnd", NULL);
if(!GetWindowRect(hTrayWindow, &rctTrayIcon))
return;
// Get small icon metrics
nIconWidth = GetSystemMetrics(SM_CXSMICON);
nIconHeight = GetSystemMetrics(SM_CYSMICON);
// Save current mouse position }
GetCursorPos(&CursorPos);
// Sweep the mouse cursor over each icon in the tray in both dimensions
for(nRow=0; nRow<(rctTrayIcon.bottom-rctTrayIcon.top)/nIconHeight; nRow++)
{
for(nCol=0; nCol<(rctTrayIcon.right-rctTrayIcon.left)/nIconWidth; nCol++)
{
SetCursorPos(rctTrayIcon.left + nCol * nIconWidth + 5,
rctTrayIcon.top + nRow * nIconHeight + 5);
Sleep(0);
}
}
// Restore mouse position
SetCursorPos(CursorPos.x, CursorPos.x);
// Redraw tray window (to fix bug in multi-line tray area)
RedrawWindow(hTrayWindow, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW);
}
以上是“<b>若何自动移去系统托盘失效的图标</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论