晓玫:如何用VB关闭用shell运行的外部程序

waitsuccess 2000-06-07 10:45:00
如何用VB关闭用shell运行的外部程序;
可能有多于一个的外部程序;

多谢!

晓玫
xiaomeiwu@fm365.com

2000-06-07
...全文
604 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
waitsuccess 2000-06-08
  • 打赏
  • 举报
回复
tbase:这次问题与控制Word,毫无关系。
非常感谢tbase上次的解答,最后我发现调用Word实在不是好办法,速度太慢,并且并不好用。我考虑采用别的方式。

以后还需要与各位大侠们多学习一些东西。
再次感谢帮助我的所有人。

晓玫
kxy 2000-06-07
  • 打赏
  • 举报
回复
以前的问题中有,你找找.
如果不用Shell,用CreateProcess可以得到
它的Handle,然后TerminateProcess,但是TerminateProcess不到万不得已
最好不要使用.
主要就是要得到你想关闭的程序的Handle,然后你可以sendMessage(handle,WM_QUIT,0,0)来试试.或者使用TerminateProcess.
至于此外部程序是谁启动的并不重要.
CreateProcess启动的进程和你的进程有父子关系.shell好像没有.
BTW:你要完成什么东西,为何要关闭其他的进程?
mafangsan 2000-06-07
  • 打赏
  • 举报
回复
试试如下代码:如成功别忘了给分,不清楚可以zhu999@263.net
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
liujin 2000-06-07
  • 打赏
  • 举报
回复
用api 试试,
findwindow,getwindow等帮您找到“外部程序”句柄hwnd,具体怎么找看看参考资料
然后,sendmessage hwnd,WM_CLOSE,byval 0&,byval 0&
WM_CLOSE 是常量,看一下apiviewer里面是怎么定义的。
“外部程序”是IE时,会有问题,可用别的方法解决。
能否关闭外部程序,与是否是用shell打开的没有关系。
太极狮头 2000-06-07
  • 打赏
  • 举报
回复
理论上来说,如果你用shell运行外部程序,并要监视它,控制它,应该要由这个程序提供接口。当然,打开除外。COM和ActiveX就是为了解决这问题而诞生的。因此,用Shell的方法打开的程序应该不能在VB里关闭,这违反了程序设计的原则。
程序设计应该是。。。。。。(内容太多,说不清),总之,不要想单入口,多出口,既,在vb中用shell打开的程序,别去控制他,想控制,用ActiveX等技术。
太极狮头 2000-06-07
  • 打赏
  • 举报
回复
用API函数可以做到,问题是他还要开好几个程序,随之而来的控制,内存等等一系列问题会让他花费大量的精力。就象上次他的问题用VB控制word一样。根本不需用shell。
to liujun
我说的不能是指不应该,因为关闭是可以的,比如方法一找注册表,方法二找句柄,也许还有其他方法我不知道的。
mafangsan的方法很好,我原来没想到过。谢谢指教。不过我还是会用ActiveX.

7,762

社区成员

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

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