请帮忙看一下,好吗?如何在VB里控制其它程序!有一点难度!

zqonline 2003-08-23 10:28:40
实现功能:
在VB里运行其它软件的安装程序。实现自动化安装。自动点击程序里的下一步。重新设置程序的安装路径。注意是针对大多数安装程序。

请问:这个可以实现吗?
请指教!
...全文
111 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqonline 2003-08-25
  • 打赏
  • 举报
回复
好的,我回去调试看看!
谢谢各位朋友

特别谢
rainstormmaster 使我又会了一个函数
还有enumchildwindow函数,能指教一下吗?
叶帆 2003-08-24
  • 打赏
  • 举报
回复
如果那个程序支持快捷键操作那就好办了

1、SetForegroundWindow 设置安装程序为前台窗口
2、用sendkeys 发送快捷键,我认为这个方便好使
boyzhang 2003-08-24
  • 打赏
  • 举报
回复
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)
sworddx 2003-08-24
  • 打赏
  • 举报
回复
叶帆同志的主意不具备普遍性。当然,对于这样的程序,那个办法是最好的。而且这种程序还算不少。
wumy_ld 2003-08-23
  • 打赏
  • 举报
回复
用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
efei4000 2003-08-23
  • 打赏
  • 举报
回复
你有没有安装过“无人值守安装”的sql server或者是win2000??
你修改一下“自动安装”的配置文件就可以了!比喻AUTORUN.ini!!!
sworddx 2003-08-23
  • 打赏
  • 举报
回复
发送消息到不麻烦,我个人感觉发送参数是最麻烦的:)
sworddx 2003-08-23
  • 打赏
  • 举报
回复
你要实现的功能,基本都可以用sendmessage api完成。只是比较麻烦。
要点击一个按钮,应该先找到按钮所在窗体的hWnd(用findwindow api),然后枚举其子窗体(enumchildwindow),找到这个按钮,然后依次发送 wm_lbuttondown, wm_click_ wm_lbuttonup 三个消息,即完成了一次按钮的点击。如果你不知道一步操作所发送的消息是些什么,可以用visual studio 6里面的spy++看。具体就不多说了/
Alicky 2003-08-23
  • 打赏
  • 举报
回复
这个是有办法的.
rainstormmaster 2003-08-23
  • 打赏
  • 举报
回复
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循环查找
zqonline 2003-08-23
  • 打赏
  • 举报
回复
一般软件,好像没有AUTORUN.ini文件吧!
我用findwindowex只能找到窗体中的一个按钮。
用什么函数才能得到窗体内所有hwnd。
谢谢
API函数最好有参数说明!或例子,谢谢!
射天狼 2003-08-23
  • 打赏
  • 举报
回复
查找"下一步"按钮的句柄,然后向按钮发点击消息!!

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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