我想在消息框中使用 YES 和 NO 两个按钮更改输出
I want to change the output with two buttons of YES and NO in message box
这是汇编程序代码,它显示带有消息框 "Hello world" 和按钮 "OK" 的输出。我需要的是通过消息框获取输出并有两个带有“是”和 "No" 的按钮,当我们单击 "No" 按钮时它应该终止
extrn MessageBoxA : proc
extrn ExitProcess : proc
extern SetConsoleTitleA : proc
extern WriteConsoleA : proc
extrn GetStdHandle : proc
STD_OUTPUT_HANDLE = -11
.data
handle dq ?
MsBoxCaption db "Sample dialogbox header",0;
MsBoxText db "Hello world",0;
ConsoleText db "Hello, world!", 0;
ConsoleTextLen = $-ConsoleText;
Text db "This is title",0;
NumCharsWritten dw ?
.code
main proc
sub rsp, 28h
mov ecx, STD_OUTPUT_HANDLE
call GetStdHandle
mov [handle], rax
lea rcx,Text
call SetConsoleTitleA
xor r9d,r9d
lea r8, MsBoxCaption;
lea rdx, MsBoxText;
xor ecx,ecx
call MessageBoxA
mov rcx, [handle]
lea rdx, ConsoleText
mov r8d, ConsoleTextLen
mov r9w, NumCharsWritten
call WriteConsoleA
mov rcx, 0;
call ExitProcess
add rsp,28h
main endp
end
首先,正如 Peter 所说,在问这样一个简单的问题之前,您应该在 MSDN 上查阅 MessageBox()
的文档,这样您就不会被否决,但我认为您想要更改:
xor r9d,r9d
至:
mov r9d, MB_YESNO ; = 4
然后将 eax
中返回的值与 IDNO (= 7) 进行比较。
这足以让你继续吗?
这是汇编程序代码,它显示带有消息框 "Hello world" 和按钮 "OK" 的输出。我需要的是通过消息框获取输出并有两个带有“是”和 "No" 的按钮,当我们单击 "No" 按钮时它应该终止
extrn MessageBoxA : proc
extrn ExitProcess : proc
extern SetConsoleTitleA : proc
extern WriteConsoleA : proc
extrn GetStdHandle : proc
STD_OUTPUT_HANDLE = -11
.data
handle dq ?
MsBoxCaption db "Sample dialogbox header",0;
MsBoxText db "Hello world",0;
ConsoleText db "Hello, world!", 0;
ConsoleTextLen = $-ConsoleText;
Text db "This is title",0;
NumCharsWritten dw ?
.code
main proc
sub rsp, 28h
mov ecx, STD_OUTPUT_HANDLE
call GetStdHandle
mov [handle], rax
lea rcx,Text
call SetConsoleTitleA
xor r9d,r9d
lea r8, MsBoxCaption;
lea rdx, MsBoxText;
xor ecx,ecx
call MessageBoxA
mov rcx, [handle]
lea rdx, ConsoleText
mov r8d, ConsoleTextLen
mov r9w, NumCharsWritten
call WriteConsoleA
mov rcx, 0;
call ExitProcess
add rsp,28h
main endp
end
首先,正如 Peter 所说,在问这样一个简单的问题之前,您应该在 MSDN 上查阅 MessageBox()
的文档,这样您就不会被否决,但我认为您想要更改:
xor r9d,r9d
至:
mov r9d, MB_YESNO ; = 4
然后将 eax
中返回的值与 IDNO (= 7) 进行比较。
这足以让你继续吗?