那个窗口有几个按钮,我要的那个按钮的句柄上面有“打开”字样,这和另几个不同。请教请教!(我没有分了,不好意思,有分时在增加!一定!)

解决方案 »

  1.   

    用FindWindow查找这个按钮,找到了之后向它发送一个BM_CLICK消息即可。
    我是学VC的,VB代码不会写:)
      

  2.   

    你找它干什么
    你直接 call 按钮名_click 就行,只要你事先定义了按钮的Click 事件
      

  3.   

    谢谢titilima(李马大侠的解答!哪位大侠能把这个想法用vb代码写出来?谢谢先!
    to SoHo_Andy(冰) 大侠:不能那样做啊!我没有那个软件,那个软件不是我做的啊!我没有软件的代码,无法用接call 按钮名_click 来进行。要是这样,那就简单了。继续请教!谢谢先!
      

  4.   

    首先应该添加以下声明:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Const BM_CLICK = &HF5然后使用以下代码:
    Dim hBtn As Long
    Dim hParent As Long
    hParent = FindWindow("按钮父窗口的类名", "按钮的父窗口名称")
    hBtn = FindWindowEx(hParent, Null, Null, "按钮的标题")
    SendMessage hBtn, BM_CLICK, 0, 0
    在VC中我是这样的,不知道VB能不能行得通。
      

  5.   

    谢谢大侠的答复!
    有个问题:hParent = FindWindow("按钮父窗口的类名", "按钮的父窗口名称")--“按钮父窗口的类名”怎么知道?“按钮的父窗口名称”怎么知道?可能你会觉得这样简单的问题很好笑,但我确实是不懂才请教的。有个现成的例子,可以说明我的问题,请看:
    http://.yalaso.net/reply_form.asp?id=105649&ptype=4&title=网站开发:ASP+SQL%20Server2000
    只要在“联系人”“标题”“内容”随便填个东东,按“发表”就可以看到有个信息框出现(如果是在时间段8:00~24:00,一般显示“你提交的信息随后发表在跳蚤市场上”,如果是时间段0:00~8:00,一般显示“非开发时间,珠海视窗敬启”),该信息框有个按钮“确定”。请问:这个按钮“确定”的“按钮父窗口的类名”怎么知道?“按钮的父窗口名称”怎么知道?在vb里这么实现点击一下“确定”按钮?
      

  6.   

    另外,请教 titilima(李马) 大侠:
    能不能用vc写好编译成exe文件,在vb里调用?谢谢先!
      

  7.   

    可以,dll都可以了,为什么exe不行呢,呵呵
      

  8.   

    用一个工具就可以看到的呀spy++
      

  9.   

    我不会使用spy++啊,哪里可以找到它的说明?
    谢谢了!
      

  10.   

    启动Spy++,点击工具栏上的“Find Window”按钮,再拖动那个瞄准镜图标到你想要看的窗口上松手,就可以了。
      

  11.   

    谢谢titilima(李马) 大侠!
    请问:那样看到的只是那个窗口的句柄,那我怎么去点击那个窗口上面的一个按钮?(那个按钮上的文字,也就是caption属性已知道)请教请教!
      

  12.   

    得到了窗口的类名、标题之后,就可以使用FindWindowEx和SendMessage了。
      

  13.   

    谢谢大侠的指点!
    还有个小问题:要是那个窗口有几个按钮,有两个可能:
    (1)上面的按钮的caption都不同,怎么SendMessage?
    (2)要是有两个的caption相同,如“递交”之类的(如果界面上有几个框架,就可能有几种选择的可能,就会可能出现)怎么办?请教请教!
      

  14.   

    事实上如果你使用Spy++的话,你就可以获得那个按钮的ID了。
    这之后可以使用GetDlgItem函数来取得它的句柄,这个要比FindWindowEx可靠得多。
      

  15.   

    谢谢高人的大力指点!真是好人!
    有个问题:取得那个按钮的句柄后,如何才能“点击”一下它呢?
             “GetDlgItem函数来取得它的句柄,这个要比FindWindowEx可靠得多。”--是怎么回事?为什么会比较可靠?我是菜鸟啊,继续请教!谢谢先!
      

  16.   

    因为FindWindow有同名问题(次要),而且DialogItemID每次启动时不会变化的,更好找当然一般情况下都使用FindWindowEX来找的//能不能用vc写好编译成exe文件,在vb里调用?
    请查Shell函数的使用方法