Quantcast
Channel: 看雪安全论坛
Viewing all articles
Browse latest Browse all 9556

【分享】win32汇编实现不卡主线程的延时

$
0
0
不卡主界面,不占cpu. 下载源码:附件 79583

代码:

Delay proc @para  ;传毫秒参数
        LOCAL @hTimer, @int64:LARGE_INTEGER
       
        mov eax,-10
        imul eax,1000
        imul eax,@para 
        lea ebx,@int64
        mov dword ptr [ebx],eax
        mov dword ptr [ebx+4],-1       
       
        invoke CreateWaitableTimer,0,0,0
        mov @hTimer,eax
       
          invoke SetWaitableTimer,@hTimer,addr @int64,0,NULL,NULL,0
  @@:        invoke MsgWaitForMultipleObjects,1,addr @hTimer,0,-1,QS_ALLINPUT
          .if eax!=WAIT_OBJECT_0
                  invoke DoEvent
                  jmp @b
          .endif
          invoke CloseHandle,@hTimer
        ret

Delay endp

DoEvent proc
        LOCAL @msg:MSG
@@:        invoke PeekMessage,addr @msg,0,0,0,PM_REMOVE
        .if eax!=0
                invoke DispatchMessage,addr @msg
                invoke TranslateMessage,addr @msg
                jmp @b
        .endif

       
        ret

DoEvent endp


上传的附件
文件类型: zip test_delay.zip (7.7 KB)

Viewing all articles
Browse latest Browse all 9556

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>