如何替换exe程序运行时显示在系统托盘的图标

如何替换exe程序运行时显示在系统托盘的图标,第1张

给你一段读写自身icon的程序。写别的程序的,只需要loadlibrary,用它的句柄代替hinstance

PCursorOrIcon = ^TCursorOrIcon;

TCursorOrIcon = packed record

Reserved: Word;

wType: Word;

Count: Word;

end;

//This has been defined in DELPHI9 But not the definition of IconEntry

PIconEntry = ^TIconEntry;

TIconEntry= packed record

bWidth : Byte; // Width, in pixels, of the image

bHeight : Byte; // Height, in pixels, of the image

bColorCount: Byte; // Number of colors in image (0 if >=8bpp)

bReserved: Byte; // Reserved ( must be 0)

wPlanes : word; // Color Planes

wBitCount : word; // Bits per pixel

dwBytesInRes : dword; // How many bytes in this resource

dwImageOffset : dword;

end;

var

hRes,hMem:HRSRC;

lpMem : Pointer;

lp1 : PBYTE;

n : integer;

ts : TMemoryStream;

IconHeader : TCursorOrIcon;

IconEntry : TIconEntry;

begin

ts:=TMemoryStreamCreate;

hRes:=FindResource(hInstance,'small',rt_group_icon);

hMem:=LoadResource(hInstance,hRes);

lpMem:=LockResource(hMem);

IconHeaderReserved:=PWord(lpMem)^; //usually be $0

IconHeaderwType:=$01; //$01 for ICON

IconHeaderCount:=$01; // we just want lookup a single icon

//tsWrite(pbyte(lpMem)^,sizeof(TCursorOrIcon));

tsWrite(IconHeader,sizeof(IconHeader));

n := LookUpIconIDFromDirectoryEx(PBYTE(lpMem),True,16,SM_CYSMICON,LR_DEFAULTCOLOR);

hRes:=FindResource(hInstance,MakeIntResource(n),rt_icon);

hMem:=LoadResource(hInstance,hRes);

lpMem:=LockResource(hMem);

IconEntrybWidth:= TBitmapInfoHeader(lpMem^)biWidth;

IconEntrybHeight:=TBitmapInfoHeader(lpMem^)biHeight div 2;

n:=TBitmapInfoHeader(lpMem^)biPlanes TBitmapInfoHeader(lpMem^)biBitCount;

if n>=8 then IconEntrybColorCount:=0

else IconEntrybColorCount:= 1 shl n;

IconEntrybReserved:=$0;

IconEntrywBitCount:=TBitmapInfoHeader(lpMem^)biBitCount;

IconEntrywPlanes:=TBitmapInfoHeader(lpMem^)biPlanes;

IconEntrydwBytesInRes:= sizeofResource(hInstance,hRes);

IconEntrydwImageOffset:=sizeof(TCursorOrIcon)+sizeof(TIconEntry);

tsWrite(IconEntry,sizeof(IconEntry));

tsWrite(pbyte(lpMem)^,IconEntrydwBytesInRes);

tsSaveToFile('testico');

tsFree;

end;

修改系统托盘图标需要修改相关的dll文件,修改工具可用ResHacker或者爱图标精灵来进行修改(替换),当然如果替换你还要准备相应的图标,如果你没有现成的位图可用爱图标精灵或者图标提取器

IconsExtractor

单文件汉化版在你系统中提取。

常用托盘图标的修改位置:

1、输入法托盘图标

C:\WINDOWS\system32\MSCTFdll的图标项357

2、音量

C:\WINDOWS\system32\stobjectdll图标项的

230--231

3、网络连接:

C:\WINDOWS\system32\netshelldll的图标项190--193与1915--1918

4、QQ托盘图标

修改QQ目录下的QQresdll文件,1775~1782

为男

1783~1790为女

5、其他软件的图标可以修改相应的启动程序(exe),修改相应的图标或是图标组。

1通过”开始--运行”, 在”运行”中输入gpeditmsc,打开”组策略编辑器”

2依次定位到”用户配置--管理模板--任务栏和开始菜单”,双击右侧窗口中的”隐藏通知区域”,将其设置为”已启用”,确认 *** 作并退出编辑器.

3 此时,隐藏通知区域(即系统托盘)并没有开始起作用,通常我们要注销系统或重新启动,如果你不想重新启动系统,也可以通过 ”Ctrl+shift+Esc"组合键打开任务管理器,选中并结束Explorerexe进程,然后再重新运行此进程,这时系统托盘就彻底隐藏了起来.

如果需要在不影响当前任务的情况下(即不重启,不注销)重新显示系统托盘,可以将组策略中的值恢复,然后重新调用一次Explorer进程即可.

以上就是关于如何替换exe程序运行时显示在系统托盘的图标全部的内容,包括:如何替换exe程序运行时显示在系统托盘的图标、电脑高手进!!如何修改系统托盘图标。、怎么隐藏指定程序的系统托盘图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9330811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存