置顶小程序。看网页电影时自己用~ 源码~
程序代码:
;功能:按f10置顶 f11隐藏界面 ;by onepc 153785587 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib ;include macro.asm ;这个是CTXT("") 宏 IDR_MAINFRAME equ 128 IDD_TOP_DIALOG equ 102 IDC_ETIME equ 100 ID_F10 equ 10 ID_F11 equ 11 .data .data? hInstance dd ? hMain dd ? hTop dd ? dwCheck dd ? dwYesNo dd ? stMsg MSG <> .code DlgProc proc uses esi edi ebx hDlg,uMsg,wParam,lParam .if uMsg==WM_INITDIALOG push hDlg pop hMain ;;;;;;;;;;;;;;;;;;;;; invoke LoadIcon,hInstance,IDR_MAINFRAME invoke SendMessage,hDlg,WM_SETICON,ICON_BIG,eax ;;;;;;;;;;;;;;;;;;;; invoke RegisterHotKey,hDlg,ID_F10,NULL,VK_F10 ;注册热键 invoke RegisterHotKey,hDlg,ID_F11,NULL,VK_F11 ;变非模态 ;invoke GetWindowLong,hDlg,GWL_STYLE ;or eax,WS_THICKFRAME ;invoke SetWindowLong,hDlg,GWL_STYLE,eax ;invoke ShowWindow,hDlg,SW_HIDE .elseif uMsg==WM_COMMAND mov eax,wParam .if ax==IDOK ;invoke EndDialog,hDlg,TRUE .endif .elseif uMsg==WM_HOTKEY ;热键消息 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .if wParam==ID_F10 ;置顶窗口 invoke GetForegroundWindow mov hTop,eax invoke GetWindowLong,hTop,GWL_EXSTYLE mov dwCheck,eax ;getwindowlong返回的窗口风格 传给 dwcheck mov dwYesNo,eax or dwCheck,WS_EX_TOPMOST ;若是本身是置顶的则or了之后是相等的,若是不是置顶的则不相等,即or了之后会大 mov eax,dwCheck .if eax>dwYesNo invoke SetWindowPos,hTop,HWND_TOPMOST,0,0,0,0,\ SWP_NOMOVE or SWP_NOSIZE .else invoke SetWindowPos,hTop,HWND_NOTOPMOST,0,0,0,0,\ SWP_NOMOVE or SWP_NOSIZE .endif .endif .if wParam==ID_F11 invoke IsWindowVisible,hDlg .if eax invoke ShowWindow,hDlg,SW_HIDE .else invoke ShowWindow,hDlg,SW_NORMAL .endif .endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .elseif uMsg==WM_CLOSE invoke UnregisterHotKey,hDlg,ID_F10 ;注消热键 invoke UnregisterHotKey,hDlg,ID_F11 ;invoke MessageBox,NULL,CTXT("a"),CTXT("a"),0 ;invoke EndDialog,hDlg,FALSE ;模态 invoke DestroyWindow,hDlg ;非模态 invoke PostQuitMessage,NULL;非模态 .else mov eax,FALSE ret .endif mov eax,TRUE ret DlgProc endp start: invoke GetModuleHandle,NULL mov hInstance,eax ;invoke DialogBoxParam,hInstance,IDD_TOP_DIALOG,NULL,addr DlgProc,NULL ;模态 invoke CreateDialogParam,hInstance,IDD_TOP_DIALOG,NULL,addr DlgProc,NULL ;非模态 ;;;;消息循环 .while TRUE invoke GetMessage,addr stMsg,NULL,0,0 .break .if eax==0 invoke TranslateMessage,addr stMsg invoke DispatchMessage,addr stMsg .endw invoke ExitProcess,NULL end start