.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib
DLG_MAIN equ 1000
IDC_POX equ 1002
IDC_POY equ 1003
IDC_POXEDIT equ 1004
IDC_POYEDIT equ 1005
IDC_STGAME equ 1006
ICO_MAIN equ 1000
IDC_CAPTURE equ 1007
.data?
hInstance dd ?
hGame dd ?
.data
szGameTitle db 'QQ游戏 - 连连看角色版',0
szTextFormat db 'rect.left=%d',0dh
db 'rect.top=%d',0dh
db 'rect.right=%d',0dh
db 'rect.bottom=%d',0
.code
_ProcDlgMain proc uses ebx esi edi hWnd,uMsg,wParam,lParam
local @rect:RECT
local @szBuffer[256]:byte
local hWinMain
mov eax,uMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke LoadIcon,hInstance,ICO_MAIN
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.elseif eax == WM_COMMAND
mov eax,wParam
.if ax == IDC_CAPTURE ;获取窗口的源点坐标
invoke FindWindow,NULL,addr szGameTitle
mov hGame,eax
invoke GetWindowRect,hGame,addr @rect
;invoke wsprintf,addr @szBuffer,addr szTextFormat,@rect.left,@rect.top,@rect.right,@rect.bottom
;invoke MessageBox,hWnd,addr @szBuffer,NULL,0
invoke SetDlgItemInt,hWnd,IDC_POXEDIT,@rect.left,FALSE
invoke SetDlgItemInt,hWnd,IDC_POYEDIT,@rect.top,FALSE
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
invoke ExitProcess,NULL
end start
#include <resource.h>
#define DLG_MAIN 1000
#define IDC_POX 1002 //X坐标
#define IDC_POY 1003 //Y坐标
#define IDC_POXEDIT 1004 //X坐标输入框
#define IDC_POYEDIT 1005 //Y坐标输入框
#define IDC_STGAME 1006
#define ICO_MAIN 1000
#define IDC_CAPTURE 1007 //初始化,获取窗口源点坐标
ICO_MAIN ICON "my.ico"
DLG_MAIN DIALOG 300,200,200,150
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "连连看外挂"
FONT 9,"宋体"
{
LTEXT "X坐标:",IDC_POX,15,20,30,12
EDITTEXT IDC_POXEDIT,40,18,30,15
LTEXT "Y坐标:",IDC_POY,15,38,30,12
EDITTEXT IDC_POYEDIT,40,35,30,15
PUSHBUTTON "开始",IDOK,160,25,30,15
PUSHBUTTON "初始化",IDC_CAPTURE,160,45,30,15
}
我的本意是先点击“初始化”按钮,先显示出游戏窗口的初始左上左边,可是实际出现的结果却是令人大吃一惊,居然是:x=11335040,Y=0,无法上传截图,不知道为什么!不知道哪里出现了错误,求指点!
------解决方案--------------------
比较可能 FindWindow() 调用就没能找寻到响应窗口吧,下面的 GetWindowRect() 也就错了。