DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 862974265
今日帖子: 38
在线用户: 23
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/21 16:53:49
标题:
求方法, 中止进程后, 让右下角图标消失. 浏览:2418
加入我的收藏
楼主:  // 找到QQ进程. 
 QQpid := GetPidFromProcessName('QQ.exe'); 

 // 然后中止进程. 
 if TerminateApp(QQpid , 60) <> taError then begin
     mmo1.Lines.Add('OK');
 end;

一切正常,  但桌面右下角的QQ图标仍然存在, 需要滑标移上去它才消失.. 
求方法, 中止后, 图标消失.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 xingyuwan (liugguo) ★☆☆☆☆ -
普通会员
2021/7/21 17:35:41
1楼: 重启explorer.exe
----------------------------------------------
恭喜发财
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/21 17:45:58
2楼: 重启explorer.exe 会影响其它进程.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2021/7/21 20:41:56
3楼: https://blog.csdn.net/chenlycly/article/details/7669634
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/21 21:35:07
4楼: @hs_kill (lzl_17948876)

看不懂C代码..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/21 21:39:01
5楼: 上述方法比较负责,但相对合理很多,但是这种方法只对win2000,XP系统有效,对与Win7却无能为力,没有效果。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2021/7/22 8:39:54
6楼: 都是API有啥看不懂的.....

而且人家里面有win7可用的代码
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/22 9:01:40
7楼: @hs_kill 
我是win11了.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 blueflag (昆了) ★☆☆☆☆ -
盒子活跃会员
2021/7/22 9:21:58
8楼: 采用发送消息通知退出的方式,右下角图标就会退出。
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/22 9:24:09
9楼: @blueflag (昆了)

怎么通知QQ退出?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2021/7/22 12:08:04
10楼: 刷新托盘我记得进程死了,托盘图标上鼠标划过就会消失。
之前有人写过一个类似的代码,就是找到托盘区域,然后给他发WM_MouseMove消息
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 wntee (wntee) ▲▲▲▲△ -
普通会员
2021/7/22 12:21:58
11楼: 搜索一下removedeadicon
现成的代码
----------------------------------------------
当前后左右都没有路时,命运一定是鼓励你向上飞了...
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2021/7/22 15:48:17
12楼: 1、使用 TB_BUTTONCOUNT, 获取按钮数量;
2、使用 TB_GETBUTTON,获取每一个按钮信息;
3、使用 TB_GETBUTTONTEXT,获取按钮文字;
4、比较文字,是否是你想要删除的图标。
5、使用 TB_DELETEBUTTON 删除图标。
----------------------------------------------
武汉天气不好
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/22 16:03:12
13楼: @wr960204 (武稀松)
然后给他发WM_MouseMove消息

得知道图标位置..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 fb4819 (方明) ★☆☆☆☆ -
盒子活跃会员
2021/7/22 16:05:55
14楼: procedure RemoveDeadIcons;
var
  TrayWindow : HWnd;
  WindowRect : TRect;
  SmallIconWidth : Integer;
  SmallIconHeight : Integer;
  CursorPos : TPoint;
  Row : Integer;
  Col : Integer;
begin
  { 获得任务栏句柄和边框}
  if TOSVersion.Major>=6 then //Win7以上
    TrayWindow := FindWindowEx(FindWindow('NotifyIconOverflowWindow',NIL),0,'ToolbarWindow32',NIL) else
    TrayWindow := FindWindowEx(FindWindow('Shell_TrayWnd',NIL),0,'TrayNotifyWnd',NIL);
  if not GetWindowRect(TrayWindow,WindowRect) then Exit;
  { 获得小图标大小}
  SmallIconWidth := GetSystemMetrics(SM_CXSMICON);
  SmallIconHeight := GetSystemMetrics(SM_CYSMICON);
  { 保存当前鼠标位置}
  GetCursorPos(CursorPos);
  { 使鼠标快速划过每个图标 }
  with WindowRect do
  begin
    for Row := 0 to (Bottom - Top) DIV SmallIconHeight do
      for Col := 0 to (Right - Left) DIV SmallIconWidth do
      begin
        SetCursorPos(Left + Col * SmallIconWidth, Top + Row * SmallIconHeight);
        Sleep(4);
      end;
  end;
  {恢复鼠标位置}
  SetCursorPos(CursorPos.X,CursorPos.Y);
  { 重画任务栏 }
  RedrawWindow(TrayWindow,NIL,0,RDW_INVALIDATE OR RDW_ERASE OR RDW_UPDATENOW);
end;
----------------------------------------------
vvvvvvvvvv
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/22 16:08:21
14楼: @ wntee (wntee)
谢谢, 代码的确可行.


procedure TForm1.RemoveDeadIcons;
var
 TrayWindow : HWnd;
 WindowRect : TRect;
 SmallIconWidth : Integer;
 SmallIconHeight : Integer;
 CursorPos : TPoint;
 Row : Integer;
 Col : Integer;
begin
 { 获得任务栏句柄和边框}
 TrayWindow := FindWindowEx(FindWindow('Shell_TrayWnd',NIL),0,'TrayNotifyWnd',NIL);
 if not GetWindowRect(TrayWindow,WindowRect) then
   Exit;
 { 获得小图标大小}
 SmallIconWidth := GetSystemMetrics(SM_CXSMICON);
 SmallIconHeight := GetSystemMetrics(SM_CYSMICON);
 { 保存当前鼠标位置}
 GetCursorPos(CursorPos);
 { 使鼠标快速划过每个图标 }
 with WindowRect do
 begin
   for Row := 0 to (Bottom - Top) DIV SmallIconHeight do
   begin
     for Col := 0 to (Right - Left) DIV SmallIconWidth do
     begin
       SetCursorPos(Left + Col * SmallIconWidth, Top + Row * SmallIconHeight);
       Sleep(10);  //发现这个地方参数为 0 的时候,有时候是不够的
     end;
   end;
 end;
 {恢复鼠标位置}
 SetCursorPos(CursorPos.X,CursorPos.Y);
 { 重画任务栏 }
 RedrawWindow(TrayWindow,NIL,0,RDW_INVALIDATE OR RDW_ERASE OR RDW_UPDATENOW);
end;
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2021/7/23 7:05:28
15楼: 如何删除 Windows 托盘区指定图标?
https://blog.csdn.net/dbyoung/article/details/119002716
----------------------------------------------
武汉天气不好
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/23 11:48:01
16楼: @dbyoung
tbn      : TTBButton

这是哪个控件?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2021/7/23 11:56:38
17楼: 添加 Winapi.CommCtrl 单元引用。

博文已更新。
----------------------------------------------
武汉天气不好
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/26 14:04:41
18楼: @dbyoung 
代码还需要改进, 
QQ图标能够删除, 但留下空标. 如图片.
此帖子包含附件:
PNG 图像
大小:20.4K
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2021/7/26 18:23:48
19楼: 我在 WIN10X64 下测试正常。没有你说的现象。
如果你也是在 WIN10X64 下测试的,请检查你的系统。卸载病毒软件试试。
----------------------------------------------
武汉天气不好
作者:
男 studyd (studyd) ▲▲▲△△ -
普通会员
2021/7/27 8:09:36
20楼: 上面的代码在win10上测试了,弹出托盘无效,一直没有找到解决办法
----------------------------------------------
-
作者:
男 akuan54 (SKL) ★☆☆☆☆ -
普通会员
2021/7/27 13:58:58
21楼: uses winapi.ShlObj;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // refresh desktop
  winapi.ShlObj.SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL);
end;
----------------------------------------------
-
作者:
男 flcop (flcop) ▲▲▲▲△ -
普通会员
2021/7/27 16:03:57
22楼: 如果仅仅是关闭QQ,可以通知它自己退出。类似这样
PostThreadMessage(GetWindowThreadProcessId(FindWindow('TXGuiFoundation', 'QQ')), WM_QUIT, 0, 0);
当然仅仅这样还有些问题,比如打开登录框并未登录,则需要找出它的QQ子进程做类似的操作,可自行修改。
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2021/7/27 19:55:10
23楼: 1楼,QQ太特殊,你不能用这个做实验。所有的软件都乖乖缩在托盘里,就QQ永远单独占一个位置,估计是修改了注册表里不让修改的东西(有一次见过相关的文章)
----------------------------------------------
只有偏执狂才能生存!
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/29 15:26:50
24楼: @akuan54 

win10下测试了, 没作用.. QQ图标一直在.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/7/29 15:29:18
25楼: @flcop (flcop)

你这代码很强, 的确能够让QQ退出并且图标消失.. 谢谢.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS