![]() |
#2
zklhp2008-07-29 13:39
.386
.Model Flat, StdCall Option Casemap :None Include windows.inc Include user32.inc Include kernel32.inc Include gdi32.inc include winmm.inc includelib winmm.lib includelib gdi32.lib IncludeLib user32.lib IncludeLib kernel32.lib include macro.asm WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD .DATA szClassName db "MASMPlus_Class",0 szOpen db 'set CDAudio door open',0 szClose db 'set CDAudio door closed',0 .DATA? hInstance dd ? .CODE START: invoke GetModuleHandle,NULL mov hInstance,eax invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT invoke ExitProcess,0 WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD LOCAL wc :WNDCLASSEX LOCAL msg :MSG local hWnd :HWND mov wc.cbSize,sizeof WNDCLASSEX mov wc.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW mov wc.lpfnWndProc,offset WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszMenuName,NULL mov wc.lpszClassName,offset szClassName invoke LoadIcon,hInst,100 mov wc.hIcon,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax mov wc.hIconSm,0 invoke RegisterClassEx, ADDR wc invoke CreateWindowEx,NULL,ADDR szClassName,CTXT("http://www.),WS_OVERLAPPEDWINDOW,200,200,400,200,NULL,NULL,hInst,NULL mov hWnd,eax invoke ShowWindow,hWnd,SW_HIDE invoke UpdateWindow,hWnd StartLoop: invoke GetMessage,ADDR msg,NULL,0,0 cmp eax, 0 je ExitLoop invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg jmp StartLoop ExitLoop: mov eax,msg.wParam ret WinMain endp _timeproc proc _hWnd,uMsg,_idEvent,_dwTime invoke mciSendString,offset szOpen,NULL,0,0 invoke Sleep,1000 invoke mciSendString,offset szClose,NULL,0,0 _timeproc endp WndProc proc hWin:DWORD,uMsg:DWORD,wParam :DWORD,lParam :DWORD .if uMsg==WM_CREATE invoke SetTimer,NULL,0,1000,offset _timeproc .elseif uMsg == WM_DESTROY invoke PostQuitMessage,NULL .else invoke DefWindowProc,hWin,uMsg,wParam,lParam .endif ret WndProc endp END START |
这个是打开和关闭光驱的打开后1面关闭光驱`我想加个定时器进去让他每过1秒反复的执行打开和关闭代码`可是不知道那里错了`高手帮忙看下~
.386
.model flat, stdcall
option casemap :none ; case sensitive
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include kernel32.inc
include user32.inc
include winmm.inc
includelib kernel32.lib
includelib user32.lib
includelib winmm.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szOpen db 'set CDAudio door open',0
szClose db 'set CDAudio door closed',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
_timeproc proc _hWnd,uMsg,_idEvent,_dwTime
pushad
jmp start:
_timeproc endp
start: invoke mciSendString,offset szOpen,NULL,0,0
invoke Sleep,1000
invoke mciSendString,offset szClose,NULL,0,0
invoke SetTimer,NULL,IDC_TIME,1000,addr _timeproc
invoke ExitProcess,NULL
invoke KillTimer,NULL,IDC_TIME
end start: