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