飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3676|回复: 2

用汇编语言打造IE标题栏修改器

[复制链接]

该用户从未签到

发表于 2006-7-9 20:09:38 | 显示全部楼层 |阅读模式
[程序名称]IE标题栏修改器
[程序作者]张科
[程序说明]用来修改IE标题栏(废话)
[开发日期]2006-7-9
[最早发布地点]飘云阁,转载请务必注明出处
[原理解析]修改注册表HKEY_CURRENT_USER,\Software\Microsoft\Internet Explorer\Main\
在里面找到项Window Title(没有则新建),然后修改Window Title项的值为希望的标题栏内容即可
要想全部计算机用户的IE标题栏都改变,就用HKEY_LOCAL_MACHINE
[程序代码]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;            IE标题栏修改器          >
;              作者:张科                  >
;              2006-7-9                     >
;            QQ:252828740             >
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.486                                
.model flat, stdcall              
option casemap :none               
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD   
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\advapi32.inc

includelib \masm32\lib\masm32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib

.data?
hInstance HINSTANCE ?
swidth  dd ?
sheight dd ?
dwidth  dd ?      
dheight dd ?
rect    RECT <>
newtitle db ?
.data
RegKeyHandle dd 0
RegKey db "software\microsoft\internet explorer\main",0
KeyName db "Window Title",0
MyDialog db "IDD_MYDIALOG",0
szMutex db "zhangkesietool",0
ErrorText db "Program already run...",0
ErrorTitle db "Warning!!!",0
appname db "IE标题栏修改器",0
description db "输入新的标题,点应用后,重新打开IE就OK.",0
copyright db "作者:张科",13,10,"2006年7月9日",13,10,"Assembly is great.",0
.const
EDITTITLE equ 1000
BTNOK equ 1001
BTNEXIT equ 1002
MAINICON equ 1003
.code

start:
main proc  
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke DialogBoxParam,hInstance,addr MyDialog,NULL,addr DlgProc,NULL
    invoke ExitProcess,NULL
main endp

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    LOCAL hIcon:HICON
    .IF uMsg==WM_INITDIALOG
        invoke CreateMutex,NULL,FALSE,addr szMutex
        invoke GetLastError
        .IF eax == ERROR_ALREADY_EXISTS
            invoke MessageBox,NULL,addr ErrorText,addr ErrorTitle,MB_ICONWARNING
            invoke ExitProcess,NULL
        .ENDIF
        ;上面几行代码的作用的防止程序多开(即只能运行一个实例)
        invoke GetSystemMetrics,SM_CXSCREEN     ;
        mov swidth,eax                          ;
        invoke GetSystemMetrics,SM_CYSCREEN     ;
        mov sheight,eax                         ;
        invoke GetWindowRect,hWnd,addr rect     ;
        mov eax,rect.right                      ;这几行是为下面invoke SetWindowPos做准备
        sub eax,rect.left                       ;
        mov dwidth,eax                          ;
        sub swidth,eax                          ;使窗体出现在屏幕中心
        mov eax,rect.bottom                     ;
        sub eax,rect.top                        ;
        mov dheight,eax                         ;其中不明白的地方看一下Platform SDK就可以了
        sub sheight,eax                         ;
        shr sheight,1                           ;
        shr swidth,1                            ;
        invoke SetWindowPos,hWnd,HWND_NOTOPMOST,swidth,sheight,dwidth,dheight,SWP_SHOWWINDOW
        invoke SetWindowPos,hWnd,HWND_NOTOPMOST,swidth,sheight,dwidth,dheight,SWP_SHOWWINDOW
        invoke LoadIcon,hInstance,MAINICON
        mov hIcon,eax
        invoke AboutBox,hWnd,hInstance,hIcon,addr appname,addr description,addr copyright
    .ELSEIF uMsg==WM_CLOSE
        invoke ExitProcess,NULL
    .ELSEIF uMsg==WM_COMMAND
        mov eax,wParam
        .IF ax == BTNOK
            invoke GetDlgItemText,hWnd,EDITTITLE,addr newtitle,256
            invoke RegCreateKey,HKEY_CURRENT_USER,addr RegKey,addr RegKeyHandle
            invoke RegSetValueEx,RegKeyHandle,addr KeyName,0,REG_SZ,addr newtitle,50
            invoke RegCloseKey,RegKeyHandle
        .ELSEIF ax == BTNEXIT
            invoke ExitProcess,NULL
        .ENDIF

    .ELSE
        mov eax,FALSE
        ret
    .ENDIF
    mov eax,TRUE
    ret
DlgProc endp

end start

[资源文件]
#include "\masm32\include\resource.h"

#define EDITTITLE                       1000
#define BTNOK                           1001
#define BTNEXIT                         1002
#define MAINICON                        1003
#define IDC_STATIC                      -1
MAINICON ICON "Tools.ico"

IDD_MYDIALOG DIALOGEX 0, 0, 184, 94
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IE标题栏修改器"
FONT 10, "System"
BEGIN
    EDITTEXT        EDITTITLE,26,35,132,10,ES_AUTOHSCROLL
    LTEXT           "在下面输入新的IE标题:",IDC_STATIC,26,16,86,10,0,
                    WS_EX_STATICEDGE
    PUSHBUTTON      "应用",BTNOK,38,58,47,14,0,WS_EX_STATICEDGE
    PUSHBUTTON      "退出",BTNEXIT,100,58,47,14,0,WS_EX_STATICEDGE
END

提示:资源文件我是用VC做的,设计好界面后保存,然后去掉一些无用的东西就可以了
自认为这个方法比较好,如果哪位朋友有更好的方法,欢迎提出来

附件包含代码,资源文件(也有程序的图标),以及编译好的程序

[ 本帖最后由 zhangke 于 2006-7-9 20:12 编辑 ]

运行截图

运行截图

IETool.rar

4.73 KB, 下载次数: 13, 下载积分: 飘云币 -2 枚

代码及所有

PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-7-9 20:13:09 | 显示全部楼层
晕啊,上面四个箭头,我在编辑的时候明明是对齐的
怎么一发布就成这样了呢~~~~~~~!!!
PYG19周年生日快乐!
  • TA的每日心情
    难过
    7 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-7-9 22:23:05 | 显示全部楼层
    原帖由 zhangke 于 2006-7-9 20:13 发表
    晕啊,上面四个箭头,我在编辑的时候明明是对齐的
    怎么一发布就成这样了呢~~~~~~~!!!



    论坛格式的问题只能问DZ官方了~~

    看了一下,代码还可以稍稍优化一下,推荐使用 RadASM,功能非常强大(包括了资源编辑器)


    1. 精华之!期待下一篇!
    复制代码
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表