Захотел протестить функцию ReadConsoleInput и для этого написал вот это: Код (Text): :-------------------------------------------- .386 .model flat, stdcall option casemap:none include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib MainProc proto .data? hstdin dd ? hstdout dd ? ir INPUT_RECORD <> cEvRead dw ? .data ConTitle db "Цветовой диапозон атрибутов консоли",0 t db (SIZEOF ConTitle) dup (0) KE db "Key Event", 0 ME db "Mouse Event", 0 .code start: invoke FreeConsole invoke AllocConsole invoke GetStdHandle, STD_INPUT_HANDLE mov hstdin, eax invoke GetStdHandle, STD_OUTPUT_HANDLE mov hstdout, eax _exit: .WHILE TRUE invoke WaitForSingleObject, hstdin, INFINITE ;(-1) invoke ReadConsoleInput, hstdin, addr ir, 1, addr cEvRead mov ax,ir.EventType .IF (ax==1);KEY_EVENT) invoke MessageBox, 0, addr KE, 0, 0 .ELSEIF (ax==2);MOUSE_EVENT) invoke MessageBox, 0, addr ME, 0, 0 .ENDIF .ENDW invoke ExitProcess, 0 end start ;---------------------------------------------------------------- Событие KEY_EVENT ловится отлично, а вот мышинные - никак. Подскажите, пожалуйста, что не так.
Ino, Возможно, нужно сделать что-то вроде SetConsoleMode(hstdin, ENABLE_MOUSE_INPUT). Хотя у меня (XP SP2) мышиные ловятся.
Да, писал я SetConsoleMode,hstdin, ENABLE_MOUSE_INPUT, но не помогло. Затем я отключил в cmd в свойства\умолчания\выделение мышью. И как только я это выделение отключил, так сразу же сработал SetConsoleMode, stdin, ENABLE_MOUSE_INPUT.Я так понимаю, что система как-то подавляет изменение настроек. А можно ли с этим бороться, ну чтобы не в ручную их менять, а из проги?