一个vb程序如何调用另一个VB可执行程序?

hkdavis 2000-06-29 10:49:00
与上次提我提的问题有点不同。
假设
我的系统中有一个已经编译的vb程序vb1.exe;
您能否编写另外一个程序,其功能是每隔1小时执行一次vb1.exe
要求:
1每次执行了vb1.exe后,要有终止vb1.exe的功能
2在这个编写的程序中能不能直接只用到vb1.exe,而不用它的原始工程文件。
如果能通过系统配制或什么方法,也行,只要满足上面两个要求即可
...全文
2297 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgtech 2000-07-02
  • 打赏
  • 举报
回复
用WINAPI 函数CreateProcess即可搞掂。
hkdavis 2000-07-01
  • 打赏
  • 举报
回复
和mafnagsan
hkdavis 2000-07-01
  • 打赏
  • 举报
回复
以上各位都很对,特别是wangmingfu!
hkdavis 2000-06-30
  • 打赏
  • 举报
回复
各位,程序从系统开始时就运行vb2.exe,而vb2.exe的功能是每隔一小时自动运行一次vb1.exe,然后等5分钟关闭这个程序,一小时后再...循环知道下午5:00终止vb2.exe
实际上,vb2.exe每天一直在运行,而vb1.exe每隔一小时运行一次,5分钟就结束vb1
所以:
这两个程序都不能有command_click()这样还要有人来点击的事件.
我的目的很明显,自动执行,到时间终止。
这样吧,谁能很快给我vb2的原始文件和代码?我来不及了。
100分买vb2程序。hurry please!!!!just today!!

Longe 2000-06-30
  • 打赏
  • 举报
回复
使用AppActivate来击活vb1.exe的窗口
方法:
AppActivate title 'title是vb1.exe的窗体标题
mafangsan 2000-06-30
  • 打赏
  • 举报
回复
这是如何关闭的例子
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Dim ret

Private Sub Command1_Click()
ret = Shell("c:\windows\notepad.exe", 1)
End Sub

Private Sub Command2_Click()
Dim x As Long
x = OpenProcess(0, False, ret)
Dim ret2 As Long
ret2 = TerminateProcess(x, 0)
ret2 = CloseHandle(x)
End Sub
LJN 2000-06-30
  • 打赏
  • 举报
回复
UINT WinExec:
WinExec("C:\\Windows\\Notepad.exe",SW_SHOW);
WinExec("C:\\Windows\\Notepad.exe C:\\aa.txt",SW_SHOW);
WinExec("C:\\...\\IExplorer.exe www.microsoft.com",SW_SHOW);

HINSTANCE ShellExecute:
ShellExecute (NULL,"Open","Some.txt",NULL,NULL);
ShellExecute (NULL,"Open","www.microsoft.com",NULL,NULL);

BOOL CreateProcess 比较麻烦,但是它的功能最强.可以给程序传值,
控制程序的据柄,制定继承状态等等.在桌面上双击图标打开应用
程序就是用它实现的.在MSDN中有详细介绍.

以上三种函数由简而繁,应按实际情况调用.
wangminfu 2000-06-30
  • 打赏
  • 举报
回复
1。在一个程序里用Timer控件,每隔5秒或10秒发生一次OnTimer事件;
2。在OnTimer中监视系统时间,有两种方式:指定日历时间或从运行时累计;
3。满足激活其它程序条件时,调用ShellExecute函数;
4。这是一个典型的计划和任务程序,可以将控制程序放入“启动”中;
5。也可以在windows“计划任务”中完成;
6。任何基于windows的程序,控制机理基本一致。非Windows程序原理相似。
Nicrosoft 2000-06-30
  • 打赏
  • 举报
回复
用Timer控件定时就可以了。在OnTimer事件里监测系统时间
Un1 2000-06-29
  • 打赏
  • 举报
回复
各位:最好把vb1.exe写成ActiveX EXE那样不是什么都可以控制了吗?
hkdavis 2000-06-29
  • 打赏
  • 举报
回复
我是初学者,请上面二位水平很高请
Nicrosoft给一个用shell()调用外部exe文件的例子的代码
条件1怎么满足呢?LJN也来个WinExec的例子吧。
谢谢!

Nicrosoft 2000-06-29
  • 打赏
  • 举报
回复
补充:
关于关闭,可以用FindWindow()找到窗口句柄,然后用SendMessage()发送WM_CLOSEQUERY 消息给这个句柄就可以了。
Nicrosoft 2000-06-29
  • 打赏
  • 举报
回复
ShellExecute()比WinExec()强大的多。比如可以执行.zip文件、.mp3文件、URL、Mailto:等等。
LJN 2000-06-29
  • 打赏
  • 举报
回复
启动程序有多种方式,最常用的有:WinExec和CreateProcess.其中WinExec更是方便
的像写批处理文件一样.
在VB中定一个时钟,一小时后WinExec一下就行了.
至于关闭这个程序,如果用的是CreateProcess就可以得到此程序的据柄,如果用WinExec
得不到据柄,但是可以通过FindWindow得到该程序的HWND据柄,postmessage关闭它就行了

我用VC的,没用过VB,不过我想原理差不多,应该是一样的吧.
Nicrosoft 2000-06-29
  • 打赏
  • 举报
回复
用Shell()函数可以调用外部EXE文件。也可以使用Win API函数:ShellExecute(),功能更强大,甚至可以执行任意类型的文件(只要该文件有关联程序即可)。
Nicrosoft 2000-06-29
  • 打赏
  • 举报
回复
Shell返回的肯定不是窗口句柄,是什么我忘了。
ShellExecute返回的是实例句柄。
choubaguai 2000-06-29
  • 打赏
  • 举报
回复
shell可以带上运行程序的参数。Shell函数的返回值是否就是它的窗口句柄呢?
Nicrosoft 2000-06-29
  • 打赏
  • 举报
回复
Shell是VB的函数,调用时:Result=Shell("ABC.EXE")即可。
ShellExecute是API,Result=ShellExecute(hwnd,"open","ABC.EXE","","",0)

关闭程序更正:应该发送WM_ENDSESSIONQUERY消息。

7,763

社区成员

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

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