gpt4 book ai didi

windows - x86 程序中的控制台

转载 作者:可可西里 更新时间:2023-11-01 10:07:55 24 4
gpt4 key购买 nike

.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc

includelib user32.lib
includelib kernel32.lib

Main proto

.data

hOutput dd 0
bReadWritten dd 0
szText1 db "What's your name?",0

hInput dd 0

szInput db 128 dup(0)



.data?

.code
start:

Invoke Main
Invoke ExitProcess,0

Main proc
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hOutput, eax

invoke GetStdHandle,STD_INPUT_HANDLE
mov hInput, eax

invoke lstrlen, addr szText1
invoke WriteFile, hOutput, addr szText1, eax, ADDR bReadWritten, NULL

invoke ReadFile, hInput, addr szInput, 128, ADDR bReadWritten,0



ret
Main endp


end start

执行此程序后没有任何反应。为什么没有出现控制台窗口?

后记

汇编选项(winAsm):

/Zi /Zd /c /coff /Cp /nologo

链接器选项

/SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV /VERSION:4.0 /INCREMENTAL:NO

最佳答案

/SUBSYSTEM:WINDOWS

现在可以回答了。这是错误的选项,它声明该程序是 native Windows 程序。它负责创建自己的窗口,使用 CreateWindow() api 函数。您当然也可以从汇编程序中调用它,只是不常这样做。您至少会使用 C 编译器来完成创建窗口类和正确编写窗口过程的繁琐操作。正如 Petzold 在他开创性的“Windows 编程”一书中向我们展示的那样。

如果您希望 Windows 为您创建一个控制台窗口,那么您必须提出要求:

/SUBSYSTEM:CONSOLE

关于windows - x86 程序中的控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com