拉风的Lee 2017-03-08 09:11 采纳率: 33.3%
浏览 1474
已结题

vb.net 获取【打开】文件夹句柄

想用一个程序操作【程序1】操作另一个程序【程序2】中的控件,之前都挺顺利的,但是:当程序2中的 按钮【...】通过程序1点开后,无法获取当前【打开文件夹】的句柄??好像程序卡在【SendMessage(hwnd12, BM_CLICK, 0, 0)】代码和程序窗体 请见图片,谢谢。。请给位帮帮忙。。

补充: 我手动先把【程序2】的子窗口打开后,利用【程序1】就能获取其子窗口的句柄。

 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    '此函数用于寻找其他程序的句柄。这里用来寻找音量控制系统的窗口句柄。
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
    '此函数用于寻找其他程序的控件句柄。
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    '此函数用于向窗体及控件发送消息。

    Private Const BM_CLICK As Integer = &HF5

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

        Dim hwnd0 As Integer '主窗口句柄
        Dim hwnd00 As Integer '字窗口句柄
        Dim hwnd11 As Integer '控件句柄 第一个...
        Dim hwnd12 As Integer '控件句柄 第二个...

        hwnd0 = FindWindow(vbNullString, "PPT") '获取主窗体句柄

        hwnd11 = FindWindowEx(hwnd0, 0, "Button", "...") '获取句柄  ,Button
        hwnd12 = FindWindowEx(hwnd0, hwnd11, "Button", "...") '获取句柄,Button
        SendMessage(hwnd12, BM_CLICK, 0, 0) '点击控件


        hwnd00 = FindWindow("#32770", "打开")

        TextBox2.Text = hwnd00


    End Sub

图片说明
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-03-08 15:57
    关注

    用spy++看下窗体的层次关系,还有窗口类是否正确。

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办