1
У меня есть это небольшое приложение, написанное в MASM, которое продолжает проверять активное интернет-соединение и отправляет звуковой сигнал, если он есть, теперь моя проблема в том, что в цикле используется 99% процессора, я попытался поставить Сон внутри цикла но почему-то это не работает?Loop, 100% Использование процессора, используя сон не работает?
Это код:
;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 IsOnline,offset szURL
Invoke Sleep,5000
or eax,eax
jz loop00
INVOKE Beep,750,1000
exit
_main ENDP
;-------------------------------------------------------------------------
END _main
Высокая загрузка ЦП нечетна. Кроме того, 'Sleep()' trashes 'eax'. Вы уверены, что положили его в нужное место? –
В соответствии с моей логикой, где она находится в коде, она должна запустить функцию в цикле (проверьте подключение) в течение 5 секунд и запустить ее до тех пор, пока не будет установлено подключение к Интернету, или? В принципе, я помещаю сон, функция просто перестает работать по какой-то причине. –
Ну ладно, сон должен пройти до фактической проверки, тогда он работает. :) –