1

我正在 Windows 机器上的 8086 程序集上开发一个项目,我需要知道单击了哪个鼠标按钮。这有什么中断?或者我该如何找到这个?

谢谢

4

2 回答 2

5

如果你正在制作一个在 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。

于 2010-03-10T16:59:48.613 回答
1

在“DOS”机器上,查看软件中断 0x33
命令 AH = 0x03 返回在寄存器 CX 中按下的鼠标按钮(连同鼠标坐标和其他信息,在其他寄存器中)。

如果可用,当然更容易为此目的使用 Windows API,如 matja 的回答所示。

于 2010-03-10T16:56:32.567 回答