Помогите плиз!!! Нужно сделать прогу без интерфейса, но так чтобы она понимала несколько hotkey'соов. В Асме новичок, поэтому не мог бы кто-нибудь написать пустую прогу, с этими параметрами. Заранее спасибо! з.ы. Просто советы не желательны, хотя тоже возможны
регистрируешь хоткей (RegisterHotKey) делаешь цикл получения сообщений, в нём смортишь что за сообщение
Вот пока листинг, можешь на примере показать как делаеться Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib .data MsgName db "Proga",0 MsgStart db "Start sucsefully",0 MsgWork db "Work sucsefully",0 msg db MSG .code Message proc invoke MessageBox, NULL, addr MsgWork ,addr MsgName, MB_OK ret Message endp start: invoke MessageBox, NULL, addr MsgStart,addr MsgName, MB_OK invoke SetTimer,NULL,1,1000, OFFSET Message .WHILE TRUE ; Enter message loop invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDW end start
Вот так работает Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib .data MsgName db "Proga",0 MsgStart db "Start sucsefully",0 MsgWork db "Work sucsefully",0 msg MSG <> ;Çäåñü åùå íåñêîëüêî ìàêðîñîâ LOWORD MACRO bigword ;; Retrieves the low word from double word argument mov eax,bigword and eax,0FFFFh ;; Set to low word ENDM HIWORD MACRO bigword ;; Retrieves the high word from double word argument mov ebx,bigword shr ebx,16 ;; Shift 16 for high word to set to high word ENDM .code ;Message proc ; invoke MessageBox, NULL, addr MsgWork ,addr MsgName, MB_OK ; ret ;Message endp start: invoke MessageBox, NULL, addr MsgStart,addr MsgName, MB_OK ;invoke SetTimer,NULL,1,1000, OFFSET Message invoke RegisterHotKey,0,100,MOD_CONTROL,VK_F1 invoke RegisterHotKey,0,200,MOD_CONTROL,VK_F2 .WHILE TRUE ; Enter message loop invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg .if msg.message == WM_HOTKEY HIWORD msg.lParam .if ebx == VK_F2 invoke UnregisterHotKey,0,100 invoke UnregisterHotKey,0,200 invoke ExitProcess,0 .elseif ebx == VK_F1 invoke MessageBeep,0 .endif .endif invoke DispatchMessage, ADDR msg .ENDW end start