文档章节

显示系统托盘列表(并执行隐藏与显示) - 回复 "anybet" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 492
阅读 9
收藏 0
问题来源: http://www.cnblogs.com/del/archive/2008/12/30/1364557.html#1417716

本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Commctrl;

{获取托盘句柄的函数}
function TrayHWnd: HWND;
var
  h,hTmp: HWND;
begin
  h := FindWindow('Shell_TrayWnd', nil);
  h := FindWindowEx(h, 0, 'TrayNotifyWnd', nil);
  hTmp := FindWindowEx(h, 0, 'SysPager', nil);
  if hTmp <> 0 then h := hTmp;
  hTmp := FindWindowEx(h, 0, 'ToolbarWindow32', nil);
  if hTmp <> 0 then h := hTmp;
  Result := h;
end;

{控件初始化}
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView1.Align := alLeft;
  ListView1.Columns.Add;
  ListView1.Columns.Items[0].Caption := '托盘图标列表';
  ListView1.Columns.Items[0].Width := 500;
  Listview1.ViewStyle := vsReport;

  Button1.Caption := '显示托盘列表';
  Button2.Caption := '全部隐藏';
  Button3.Caption := '取消隐藏';
  Button2.Enabled := False;
  Button3.Enabled := False;
end;

{提取列表}
procedure TForm1.Button1Click(Sender: TObject);
var
  h: HWND;
  count,size,num: Cardinal;
  pid, ph: Cardinal;
  p: Pointer;
  icoBtn: TTBButton;
  buf: array[0..255] of WideChar;
  i: Integer;
  item: TListItem;
begin
  h := TrayHWnd;
  count := SendMessage(h, TB_BUTTONCOUNT, 0, 0);
  size := SizeOf(TTBButton);

  GetWindowThreadProcessId(h, pid);
  ph := OpenProcess(PROCESS_VM_READ, False, pid);

  for i := 0 to count - 1 do
  begin
    SendMessage(h, TB_GETBUTTON, i, DWORD(p));
    ReadProcessMemory(ph, p, @icoBtn, size, num);
    ReadProcessMemory(ph, Pointer(icoBtn.iString), @buf, Length(buf)*SizeOf(buf[0]), num);
    item := ListView1.Items.Add;
    item.Caption := buf;
  end;
  CloseHandle(ph);

  Button2.Enabled := True;
  Button3.Enabled := True;
end;

{全部隐藏}
procedure TForm1.Button2Click(Sender: TObject);
var
  h: HWND;
  count,i: Cardinal;
begin
  h := TrayHWnd;
  count := SendMessage(h, TB_BUTTONCOUNT, 0, 0);
  for i := 0 to count - 1 do SendMessage(h, TB_HIDEBUTTON, i, 1);
end;

{全部显示}
procedure TForm1.Button3Click(Sender: TObject);
var
  h: HWND;
  count,i: Cardinal;
begin
  h := TrayHWnd;
  count := SendMessage(h, TB_BUTTONCOUNT, 0, 0);
  for i := 0 to count - 1 do SendMessage(h, TB_HIDEBUTTON, i, 0);
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 142
  ClientWidth = 300
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 182
    Top = 14
    Width = 106
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object ListView1: TListView
    Left = 8
    Top = 8
    Width = 169
    Height = 119
    Columns = <>
    TabOrder = 1
  end
  object Button2: TButton
    Left = 182
    Top = 59
    Width = 106
    Height = 25
    Caption = 'Button2'
    TabOrder = 2
    OnClick = Button2Click
  end
  object Button3: TButton
    Left = 182
    Top = 102
    Width = 106
    Height = 25
    Caption = 'Button3'
    TabOrder = 3
    OnClick = Button3Click
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/12/31/1365745.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Deepin Dock 隐藏功能等功能说明

经过Deepin开发和设计师团队不懈的努力,深度桌面环境2.0不断地走向了成熟。由于深度桌面环境2.0部分模块功能已经发生改变,所以本次我们介绍一下当前Dock的改变。 隐藏功能 Dock是用户启动程...

cxbii
2014/07/29
2.6K
6
Linux Deepin 12.12 RC 发布

一、概述 LinuxDeepin 12.12 RC 版本来袭! 继 3 月 28 日 Beta 版本,现在,Linux Deepin 12.12 RC 版本发布了! Linux Deepin 12.12 RC 版本是 Beta 版本的功能增强和改进版本,也是正式版...

火耳
2013/05/24
1K
12
隐身专家

使用隐身专家,按下鼠标中键隐藏桌面上所有窗口,隐身专家还可以隐藏托盘图标。使用隐身专家聊QQ不怕被别人发现,挂游戏不怕被别人发现,使用炒股软件不怕别人发现,看新闻,干私活不怕别人发...

董大鹏
2011/03/23
2.1K
0
QT 托盘类QSystemTrayIcon

QSystemTrayIcon为应用程序在系统托盘中提供一个图标 关于系统托盘的介绍就节省了,但是并不是所有的系统都支持系统托盘,来检查一个系统是 否支持系统托盘,使用静态函数QSystemTrayIcon::...

晨曦之光
2012/04/13
1K
0
好用的Windows屏幕取色器--赏色

赏色 这是一个Windows平台使用的屏幕取色器工具。有十六进制和RGB两种颜色值的显示。 开发工具>=VS2010,运行环境需要>=.net4.0 使用说明 程序启动后,有两个窗口:一个颜色值显示窗口,一个...

hyjiacan
2016/12/08
3.5K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
40分钟前
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
9
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0
OpenCV边缘检测算子原理总结及实现

1. 拉普拉斯算子 原理:是一种基于图像导数运算的高通线性滤波器。它通过二阶导数来度量图像函数的曲率。 拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉...

漫步当下
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部