首页
社区
课程
招聘
[旧帖] 修改编译过的NET程序标题栏图标 0.00雪花
发表于: 2015-10-12 15:35 4714

[旧帖] 修改编译过的NET程序标题栏图标 0.00雪花

2015-10-12 15:35
4714
如图,有什么工具或者方法可以方便替换net程序的标题栏图标吗?注意是没有源码的情况下,也不是反编译再组装的,比如直接替换bin中图片(ico)资源的工具或者方法!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 3165
活跃值: (3278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
替换资源中的相应文件。。
2015-10-12 16:53
0
雪    币: 346
活跃值: (1953)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
请问有工具或者相关方法、教程吗
2015-10-12 17:47
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
网上找找,EXE资源修改
2015-10-13 09:11
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我以前试过,但是只能停留在运行之后改变小图标,没有深入探讨。
假如知道该窗口的名字,譬如上图的"Form1",则写一个简单的按钮调用下面的check_match("Form1"),即可。
当然该程序需要新建一个rc文件和图标文件image.ico ,在resource.h上添加一个宏,譬如#define ICO_ID 0x1000
而对应XX.rc 应该加上 ICO_ID ICON "image.ico"
int check_match(char *title)
{
        HWND wHwnd;
        wHwnd = GetDesktopWindow();
        wHwnd = GetWindow(wHwnd, GW_CHILD);
        while (wHwnd)
        {
                char name[256] = { 0 };
                                       
                GetWindowText(wHwnd, name, 256);
                if (!strcmp(title, name))
                {
                        SendMessage(wHwnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(GetModuleHandle(NULL), (LPCTSTR)ICO_ID));
                        break;
                }
                wHwnd = GetWindow(wHwnd, GW_HWNDNEXT);
        }
        return 0;
}
check_match原理是遍历桌面上的所有子窗口,匹配title后得到该窗口句柄,发送WM_SETICON消息,改变图标。
理论上无论用C#还是mfc写Windows窗体,底层都是封装了C语言的API,都是消息处理机制。
2015-10-15 11:39
0
雪    币: 260
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在没有源码,不是反编译组装的情况下想在默认的基础上添加一个窗体图标,还真是麻烦啊!  如果能反编译的话,网上到时有一些资源可以参考!!!
2015-10-15 13:24
0
雪    币: 346
活跃值: (1953)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
可以用winhex手动修改但是麻烦很多
2015-10-25 23:49
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
修改PE文件中资源段对应该图标的内容,改成想替换的图标的内容,,或者编程序修改,就像5楼的,先获得该窗口的句柄,再修改图标,
2015-11-3 11:57
0
游客
登录 | 注册 方可回帖
返回
//