我正在Windows机器上的8086程序集中处理一个项目,我需要知道单击了哪个鼠标按钮。这有什么中断?或者我该如何找到这个?
谢谢
答案 0 :(得分:5)
如果你正在制作一个在windows下运行的DOS程序,你可以使用软件中断0x33,功能3,它返回BL寄存器中的按钮状态:
mov ax,0x3 int 0x33 test bl,1 jnz left_button_pressed test bl,2 jnz right_button_pressed
此处有更多信息http://www.ctyme.com/intr/rb-5959.htm
如果您正在制作原生Windows应用程序,则可以通过检查传递给已注册WndProc的标准鼠标按钮消息(WM_LBUTTONDOWN / UP,WM_BBUTTONDOWN / UP,WM_MBUTTONDOWN / UP)来测试是否按下了按钮,以便创建主窗口通过你的计划。
WndProc的函数声明是“LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);”,消息类型在uMsg中传递,所以你在[esp + 12]检查DWORD ]并将其与您要处理的消息ID进行比较。
答案 1 :(得分:1)
在“DOS”机器上,查看Software Interrupt 0x33 命令AH = 0x03返回在寄存器CX中按下的鼠标按钮(以及鼠标坐标和其他信息,在其他寄存器中)。
如果可用,用户可以更容易地为此目的使用Windows API,如matja的回答所示。