2013-02-25 2 views
0

Я проверить состояние подключения к Интернету и хочу отправить MessageBox, если нет подключения к Интернету не присутствует, что у меня есть это: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 

Но я не могу понять, где я должен был бы положить, что

+0

Почему вы делаете это в MASM?!? –

+2

Почему бы и нет? –

+0

Если вам это нравится, больше энергии для вас. Я просто не вижу смысла использовать сборку для этого типа вещей. –

ответ

1

Как об этом:

_main PROC 

loop00: 
     INVOKE IsOnline,offset szURL  
     or  eax,eax 
     jnz  done 

     push 0 
     push offset MyTitle 
     push offset MyText 
     push 0 
     call MessageBoxA 

     Invoke Sleep,5000 ;Sleep so it doesn't use 99% CPU 

     jmp loop00 

done: 
     INVOKE Beep,750,1000 
     exit 

_main ENDP 

.data 
    MyTitle db "No internet",0 
    MyText db "No active internet connection found, retrying in 5 seconds.",0 

Это первый тест ожидания IsOnline, и если он не пройдет, подождите 5 секунд и повторите попытку. В противном случае он доходит до звукового сигнала перед выходом.

+0

Я не думаю, что вы должны ввести код в раздел данных. –

+0

Поскользнулся на клавиатуре и отправил слишком рано; теперь должны работать лучше. –

+0

Это отлично работает, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^