注册 登录
编程论坛 汇编论坛

Windows不自带秒表 写了个小东西 用来计时的 算是秒表了罢 可以精确到ms(Win32汇编)

zklhp 发布于 2011-08-06 19:39, 1082 次点击
;*****************************************************************************************************************
;作者:zklhp  
;Email:zklhp%(%<-@)
;QQ:493165744
;转载保留本信息可以么。。
;*****************************************************************************************************************

效果如图

只有本站会员才能查看附件,请 登录


程序+代码

只有本站会员才能查看附件,请 登录


照顾不能下载的朋友帖下代码

程序代码:


;MASMPlus 代码模板 - 以对话框做为主窗口的程序

;*****************************************************************************************************************
;
作者:zklhp  
;
Email:zklhp%(%<-@)
;
QQ:493165744
;
小程序 不求版权 但求转载保留本信息~~~
;
*****************************************************************************************************************

.386
.Model Flat, StdCall
Option Casemap :None

Include windows.inc
Include user32.inc
Include kernel32.inc
Include gdi32.inc

includelib gdi32.lib
IncludeLib user32.lib
IncludeLib kernel32.lib
include macro.asm

include rsrc.inc
   
    DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
   
.const
    DLG_MAIN equ 100
   
.data?
    hInstance             dd ?
    hHook                    dd ?
    hWin                    dd ?
    dwLastCount            dd ?
.CODE


;用钩子不是很稳定 很可能崩溃~
HookProc    proc    uses ebx esi edi _dwCode,_wParam,_lParam
    local    @szBuf[256]:BYTE
    local @point:POINT
   
    invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
   
    pushad
    .if    _dwCode == HC_ACTION
        mov    ebx,_lParam
        assume    ebx:ptr EVENTMSG
        ;[ebx].message == WM_SYSKEYDOWN 用于截取ALT的按键 至于按哪个键可以改的
        .if [ebx].message == WM_KEYDOWN || [ebx].message == WM_SYSKEYDOWN
            mov eax,[ebx].paramL
            and eax,0ffh
            .if al == VK_CONTROL
                invoke GetTickCount
                mov esi,eax
                mov edi,eax
                invoke SetDlgItemInt,hWin,IDC_STC2,esi,FALSE
                invoke SetDlgItemInt,hWin,IDC_STC1,dwLastCount,FALSE
                sub esi,dwLastCount
                invoke SetDlgItemInt,hWin,IDC_STC3,esi,FALSE
                mov dwLastCount,edi    ;每次写下当次的值作为Last Count
            .endif
        .endif
        assume    ebx:nothing
    .endif
    popad
    xor    eax,eax
   
    ret
   
HookProc    endp


START:
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke DialogBoxParam,hInstance,IDD_DLG1,0,offset DlgProc,0
    invoke ExitProcess,0


DlgProc proc hWnd,uMsg,wParam,lParam
    local @szBuf[256]:BYTE
   
    .if uMsg==WM_INITDIALOG
        push hWnd
        pop hWin
        
        invoke GetTickCount
        mov dwLastCount,eax
        invoke SetDlgItemInt,hWnd,IDC_STC1,eax,FALSE
        
        invoke SetWindowsHookEx,WH_JOURNALRECORD,addr HookProc,hInstance,NULL
        .if eax
            mov hHook,eax
        .else
            invoke MessageBox,0,CTXT('安装钩子出错 退出'),CTXT('出错'),0
            invoke EndDialog,hWnd,NULL
        .endif
    .elseif uMsg==WM_COMMAND
        mov eax,wParam
        and eax,0ffffh
        .if eax==IDCANCEL
            invoke SendMessage,hWnd,WM_CLOSE,0,0
        .endif
    .elseif uMsg==WM_CLOSE
        invoke UnhookWindowsHookEx,hHook
        invoke EndDialog,hWnd,wParam
    .else
        mov eax,FALSE
        ret
    .endif
    mov eax,TRUE
    ret
DlgProc endp

END START

8 回复
#2
zklhp2011-08-06 19:43
顺手写的一个小东西 当秒表用还不错 呵呵

Firefox Nightly 8.0a1 对论坛支持不好。。。 上传附件没法显示在编辑框里

是UA的问题还是什么 唉 最近静老大也不大管论坛了 不知道这段话谁能看见。。。
#3
诸葛修勤2011-08-07 00:06

mark   等待改日。。。
#4
马甲1号2011-08-09 09:42


zklhp大哥。。。日志钩子可以用热键代替吗?

#5
zklhp2011-08-09 18:07
以下是引用马甲1号在2011-8-9 09:42:18的发言:



zklhp大哥。。。日志钩子可以用热键代替吗?

可以 但是那样就必须是组合键 也就是Ctrl+4 Alt+A这样的 不灵活
#6
Alar302011-08-09 21:58
Z版最近相当有激情啊
#7
zklhp2011-08-10 08:04
以下是引用Alar30在2011-8-9 21:58:58的发言:

Z版最近相当有激情啊

一直都有激情、、、
#8
kamuli2011-08-10 09:19
的确要支持一下,这论坛办了这么久了,怎么说也有点历史,要常来
#9
ymxu2011-10-30 12:25
有高手,有菜鸟,有人发有人批,有人发有人回,有人问有人回,有人回有人接,那么论坛就会四季长青了。
1