
给你一段读写自身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程序运行时显示在系统托盘的图标、电脑高手进!!如何修改系统托盘图标。、怎么隐藏指定程序的系统托盘图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)