即使窗口存在,FindWindow 在 MASM32 程序中也返回零
Posted
技术标签:
【中文标题】即使窗口存在,FindWindow 在 MASM32 程序中也返回零【英文标题】:FindWindow returns zero in MASM32 program even if the window exists 【发布时间】:2012-11-20 20:34:32 【问题描述】:我正在尝试用汇编语言编写一个程序,我需要的第一件事就是特定进程的主窗口的句柄。我一直在尝试使用 FindWindow 来获取它,但到目前为止还没有运气; FindWindow 显然一直返回零。谁能指出我在这里错过了什么?谢谢。
.486
.model flat, stdcall
option casemap :none
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
NtpTitle db "Untitled - Notepad",0
MsgNoNtp db "Notepad not found.",0
MsgNtp db "Found Notepad.",0
NullString db 0
hWndNtp dd 0
.code
start:
invoke FindWindow, offset NullString, offset NtpTitle
mov hWndNtp, eax
jz noNotepad
invoke MessageBox, 0, offset MsgNtp, 0, 40h
invoke ExitProcess, 0
noNotepad:
invoke MessageBox, 0, offset MsgNoNtp, 0, 10h
invoke ExitProcess, 1
end start
【问题讨论】:
【参考方案1】:您应该将lpClassName
设置为NULL,而不是将地址设置为空字符串。
invoke FindWindow, 0, offset NtpTitle
你没有测试FindWindow
的返回值; mov 不修改标志。
test eax,eax
jz noNotepad
【讨论】:
谢谢。但是,我已经尝试过 NULL 和 0 ,但似乎都不起作用。即使使两个参数0
并没有使 FindWindow 返回任何窗口。如果这是问题所在,那不是唯一的问题:\
FindWindow
是否编译为 FindWindowA
或 FindWindowW
?如果为 W,则字符串与窗口标题不匹配。
刚刚重新检查,编译为FindWindowA
。
你不是在检查返回值,我已经扩展了我的答案。以上是关于即使窗口存在,FindWindow 在 MASM32 程序中也返回零的主要内容,如果未能解决你的问题,请参考以下文章
是否有一个模块可以在 python 中用作 FindWindow API