【发布时间】:2013-02-25 23:04:20
【问题描述】:
我正在检查 Internet 连接状态,如果没有 Internet 连接,我想发送一个 MessageBox 我拥有的是这样的:
;build as a WINDOWS app
.XCREF
.NOLIST
INCLUDE \masm32\include\masm32rt.inc
INCLUDE \masm32\include\wininet.inc
INCLUDELIB \masm32\lib\wininet.lib
.LIST
;-------------------------------------------------------------------------
IsOnline PROTO :LPSTR
Sleep PROTO STDCALL :DWORD
;-------------------------------------------------------------------------
IFNDEF FLAG_ICC_FORCE_CONNECTION
FLAG_ICC_FORCE_CONNECTION EQU 1
ENDIF
;-------------------------------------------------------------------------
.CODE
IsOnline PROC lpszURL:LPSTR
;Test Internet Connection
;
;lpszURL points to a zero-terminated test URL string (must start with "http://")
;
;Returns EAX = FALSE if not connected
; = TRUE if connected
; EDX = connection description (see InternetGetConnectedState documentation)
push eax
mov edx,esp
INVOKE InternetGetConnectedState,edx,0
or eax,eax
jz IsOnl0
INVOKE InternetCheckConnection,lpszURL,FLAG_ICC_FORCE_CONNECTION,0
IsOnl0: pop edx
ret
IsOnline ENDP
;-------------------------------------------------------------------------
szURL db 'http://www.google.com',0
;-------------------------------------------------------------------------
_main PROC
loop00: Invoke Sleep,5000 ;Sleep so it doesn't use 99% CPU
INVOKE IsOnline,offset szURL
or eax,eax
jz loop00
INVOKE Beep,750,1000
exit
_main ENDP
;-------------------------------------------------------------------------
END _main
现在我想添加这样的东西
.data
MyTitle db "No internet",0
MyText db "No active internet connection found, retrying in 5 seconds.",0
push 0
push offset MyTitle
push offset MyText
push 0
call MessageBoxA
但我真的不知道我必须把它放在哪里
【问题讨论】:
-
你为什么要在 MASM 中这样做?!?
-
如果你喜欢它,给你更多的力量。我只是不明白在这种类型的事情上使用汇编的意义。
-
@MariusProllak:Nik 想知道的是,为什么在编写汇编的好处微不足道的情况下,你为什么要选择这样一种低级的方法来编写 Windows 程序。正如我在其他地方提到的,用 C、C++ 或其他一些中高级语言编写代码可能会为您省去很多麻烦。但是,如果您正忙于学习 x86 汇编程序,那就另当别论了,正如 Nik 所说,您将获得更多的权力。我只是不羡慕你必须用汇编程序编写一个 Windows 应用程序......
-
“我为什么不呢?” 那是男孩!
标签: winapi assembly x86 masm masm32