Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 即使窗口存在,FindWindow在MASM32程序中也返回零_Winapi_Assembly_X86_Masm_Masm32 - Fatal编程技术网

Winapi 即使窗口存在,FindWindow在MASM32程序中也返回零

Winapi 即使窗口存在,FindWindow在MASM32程序中也返回零,winapi,assembly,x86,masm,masm32,Winapi,Assembly,X86,Masm,Masm32,我正试图用汇编语言编写一个程序,我首先需要的是特定进程主窗口的句柄。我一直试图用FindWindow获得它,但到目前为止运气不佳;芬德温道显然一直在归零。有人能指出我在这里遗漏了什么吗?谢谢 .486 .model flat, stdcall option casemap :none include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib i

我正试图用汇编语言编写一个程序,我首先需要的是特定进程主窗口的句柄。我一直试图用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

您应该将
lpClassName
设置为NULL,而不是将地址设置为空字符串

invoke FindWindow, 0, offset NtpTitle
您没有测试
FindWindow
的返回值;mov不修改标志

test eax,eax
jz noNotepad

谢谢但是,我已经尝试过NULL和0,但两种方法似乎都不起作用。即使同时使用两个参数
0
,也不会使FindWindow返回任何窗口。如果这是问题所在,它不是唯一的:\n是否将
FindWindow
编译成
FindWindowA
FindWindowW
?如果为W,字符串将与窗口标题不匹配。只需重新检查,它将编译为
FindWindowA
。您没有检查返回值,我已扩展了答案。