能力值:
( LV2,RANK:10 )
|
-
-
2 楼
[QUOTE=;]...[/QUOTE]
另在找到一个一个程序,网站不记得了,代码贴出来吧
.386
.model flat, stdcall
option casemap:none
option proc:private
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
WM_CUSTOM_MESSAGE = WM_USER + 1001
.data
hInst dd 0
szClassName db "MsgOnlyWnd", 0
szMyTitle db "Message Only Window", 0
szMyMessage db "Custom Message Received!", 0
szMyClose db "WM_CLOSE Message Received!", 0
hwnd HWND 0
wc WNDCLASSEX <>
msg MSG <>
.code
console:
invoke GetModuleHandle, NULL
mov hInst, eax
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Register the class
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mov wc.hInstance, eax ; hInstance
mov wc.lpszClassName, offset szClassName
mov wc.lpfnWndProc, offset WndProc
mov wc.style, CS_DBLCLKS
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.hIcon, NULL
mov wc.hIconSm, NULL
mov wc.hCursor, NULL
mov wc.lpszMenuName, NULL
mov wc.cbClsExtra, 0
mov wc.cbWndExtra, 0
mov wc.hbrBackground, NULL
invoke RegisterClassEx, addr wc
.if !eax
jmp closing
.endif
invoke CreateWindowEx,\
NULL, \
addr szClassName,\
NULL,\
NULL,\ ; No need for window style
0, 0, 0, 0,\ ; Window dimension no longer needed as well
HWND_MESSAGE,\ ; Message only window
NULL,\
hInst,\
NULL
mov hwnd, eax
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Messageloop
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.while TRUE
invoke GetMessage, addr msg, hwnd, 0, 0
.break .if eax != TRUE ; Terminate the loop if quit message received
.endw
closing:
invoke ExitProcess, 0
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_CUSTOM_MESSAGE
invoke MessageBox, hWnd, addr szMyMessage, addr szMyTitle, MB_OK or MB_ICONINFORMATION
.elseif uMsg==WM_CLOSE
invoke MessageBox, hWnd, addr szMyClose, addr szMyTitle, MB_OK or MB_ICONINFORMATION
invoke PostQuitMessage, 0
.endif
ret
WndProc endp
end console
发现运行后可以得到句柄,奇怪,。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
FindWindowEx 只是查找,我要的建立
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
[QUOTE=;]...[/QUOTE]
终于知道了,为什么!!
在执行CreateWindowEx创建窗口过程中会引发对WinProc函数的多次调用。嘿嘿,这可不是可有可无的调用啊!在这里,我们要让缺省窗口过程DefWindowProc来完成一些默认的消息处理操作。你不必知道它做了什么事,只要把这一切消息都“扔”给它就行啦!只有让 DefWindowProc函数完成必要的消息处理,CreateWindowEx函数才能全程地完成窗口的创建(否则,窗口的创建必将失败。)。所以我们添加了调用DefWindowProc的代码。(DefWindowProc的返回值返回的是对消息处理的结果,我们再将它作为WinProc的返回值。)
文章出处
cf1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6*7P5r3y4U0j5h3u0T1j5h3N6W2i4K6u0r3j5X3I4G2k6#2)9J5c8X3W2@1k6h3#2Q4x3V1k6X3y4h3c8X3k6h3k6T1k6U0x3@1j5K6p5&6y4e0m8T1x3e0W2V1z5o6q4X3j5h3y4Q4x3X3g2Z5N6r3#2D9
|