实现功能:
       在VB里运行其它软件的安装程序。实现自动化安装。自动点击程序里的下一步。重新设置程序的安装路径。注意是针对大多数安装程序。请问:这个可以实现吗?
           请指教!

解决方案 »

  1.   

    你有没有安装过“无人值守安装”的sql server或者是win2000??
    你修改一下“自动安装”的配置文件就可以了!比喻AUTORUN.ini!!!
      

  2.   

    用SendMessage函数发送消息,比如单击,用Shellexecute函数运行程序。Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
      

  3.   

    一般软件,好像没有AUTORUN.ini文件吧!
    我用findwindowex只能找到窗体中的一个按钮。
    用什么函数才能得到窗体内所有hwnd。
    谢谢
    API函数最好有参数说明!或例子,谢谢!
      

  4.   

    FindWindowEx: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
    返回值:
    Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
    参数:
    hWnd1 ----------  Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)  hWnd2 ----------  Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索  lpsz1 ----------  String,欲搜索的类名。零表示忽略  lpsz2 ----------  String,欲搜索的类名。零表示忽略
    上一次找到的hwnd作为hwnd2,用do循环查找
      

  5.   

    你要实现的功能,基本都可以用sendmessage api完成。只是比较麻烦。
    要点击一个按钮,应该先找到按钮所在窗体的hWnd(用findwindow api),然后枚举其子窗体(enumchildwindow),找到这个按钮,然后依次发送 wm_lbuttondown, wm_click_ wm_lbuttonup 三个消息,即完成了一次按钮的点击。如果你不知道一步操作所发送的消息是些什么,可以用visual studio 6里面的spy++看。具体就不多说了/
      

  6.   

    如果那个程序支持快捷键操作那就好办了1、SetForegroundWindow  设置安装程序为前台窗口
    2、用sendkeys 发送快捷键,我认为这个方便好使
      

  7.   

    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 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 Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
      

  8.   

    好的,我回去调试看看!
    谢谢各位朋友特别谢
    rainstormmaster 使我又会了一个函数
    还有enumchildwindow函数,能指教一下吗?