用PostMessage模拟鼠标事件

hszfzjd 2005-11-11 08:49:32
我用PostMessage模拟鼠标事件写了以下程序模拟鼠标右键单击弹出菜单,但不知为何在记事本上没有任何反应呢?大虾帮忙呀!
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Point) As Integer

Public Const MK_RBUTTON As Integer = &H2
Public Const WM_RBUTTONDOWN As Integer = &H204
Public Const WM_RBUTTONUP As Integer = &H205

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'获取记事本窗口句柄
g_WindowHwnd = FindWindow(vbNullString, "1.txt - 记事本")

'判断记事本是否打开
If g_WindowHwnd = 0 Then
MsgBox("请打开记事本!")
Exit Sub
End If

Dim po2 As Point
po2.X = 300
po2.Y = 10

PostMessage(g_WindowHwnd, WM_RBUTTONDOWN, MK_RBUTTON, po2)
PostMessage(g_WindowHwnd, WM_RBUTTONUP, MK_RBUTTON, po2)

End Sub
...全文
472 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hszfzjd 2005-11-11
  • 打赏
  • 举报
回复
还是不行呀,能不能写一个比较完整的例子呢?
web_gus 2005-11-11
  • 打赏
  • 举报
回复

const int BM_SETSTATE = 0x00F3;
web_gus 2005-11-11
  • 打赏
  • 举报
回复
少了一个状态符

SendMessage(ParenthWnd,WM_BUTTONDOWN,(IntPtr)1,"0");
SendMessage(ParenthWnd,BM_SETSTATE, (IntPtr)1, "0");
SendMessage(ParenthWnd,WM_BUTTONUP,(IntPtr)0,"0");
SendMessage(ParenthWnd,BM_SETSTATE,(IntPtr)0,"0");

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧