- UID
- 17680
注册时间2006-7-8
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
[程序名称]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 枚
代码及所有
|