我想用消息框中的YES和NO两个按钮更改输出

时间:2018-06-16 21:38:18

标签: winapi assembly messagebox

这是汇编程序的代码,它显示带有消息框的输出" Hello world"以及按钮" OK"。我需要的是通过消息框获得输出,并有两个按钮'是"和"不"它应该在我们点击"否"按钮

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

1 个答案:

答案 0 :(得分:2)

首先,正如彼得所说,在问这么简单的问题之前,你应该在MSDN上查阅MessageBox()的文档,然后你就不会被投票,但我认为你想要改变:

xor r9d,r9d

为:

mov r9d, MB_YESNO        ; = 4

然后将eax中返回的值与IDNO(= 7)进行比较。

这足以让你前进吗?