如何强制终止自我程序

bobogg 2014-07-07 08:55:39
例如

VB 写的程序名为 A1.exe , Form 上面有一个 强制终止Button

强制终止Button 按下后, 会强制终止 A1.exe

现在我同时执行 A1.exe 3次, 任务管理员可以看到有 3个 A1.exe

我用滑鼠按下第2个 A1.exe 的 强制终止Button

使第2个 A1.exe 自己被强制终止
( 因为有时候会遇到按下 Form Close Button 却无法 Unload Me 的问题, 所以需要使用API 来强制终止自己 )

使用以下范例会使 3个 A1.exe 全部一起同时终止掉
http://www.vbforums.com/showthread.php?318582-Terminating-Running-EXE&p=1878673#post1878673
可是我只要第2个 A1.exe 被终止 , 其余的不能被被终止
(因为我是在第2个 A1.exe 的 Form上按下强制终止Button, 表示我只要 第2个 A1.exe 被终止)


请帮忙提供范例


谢谢





...全文
318 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
Private Sub Button1_Click()
 Shell "taskkill /IM myname.exe",vbHide 'myname.exe是自己exe程序的名字
End Sub
Tiger_Zhao 2014-07-10
  • 打赏
  • 举报
回复
引用 6 楼 Bobogg 的回复:
[quote=引用 5 楼 Tiger_Zhao 的回复:] 有终止的需求就说明你不能选用 FTP 一次性上传,应该用 HTTP 分段上传。
世界有统一规定 FTP 不能中途停止吗 我以为是对方 FTP 主机拒绝我中途停止[/quote] FTP 当然也是分包的,只是你用 Inet 的 Put 命令是以文件为单位的,它内部的分包过程属于不可干预的。 而你用 Winsock 通过 HTTP 上传,每个包都是你之间控制发送的,就可以在需要时中断了。
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
引用 16 楼 Bobogg 的回复:
[quote=引用 14 楼 zhao4zhong1 的回复:]
Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
Private Sub Button1_Click()
 Shell "taskkill /F /PID "+CStr(GetCurrentProcessId)+" /T",vbHide
End Sub
Super good 完全成功了 赞 ^^ [/quote] Perfect!
bobogg 2014-07-10
  • 打赏
  • 举报
回复
附带一提 Obj = CreateObject("InetCtls.Inet") 有个好处就是它可以背景执行 正在上传时, VB 写的程序还是可以继续工作 昨天有换其他上传的 Code 是用 API 写的 上传时 VB 写的程序完全无法动弹 感谢 赵4老师 , Tiger_Zhao, caozhy 的协助
bobogg 2014-07-10
  • 打赏
  • 举报
回复
引用 14 楼 zhao4zhong1 的回复:
Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
Private Sub Button1_Click()
 Shell "taskkill /F /PID "+CStr(GetCurrentProcessId)+" /T",vbHide
End Sub
Super good 完全成功了 赞 ^^
bobogg 2014-07-10
  • 打赏
  • 举报
回复
目前知道有个方法可以让它中断 正在上传 Test.ZIP 时 用其他软件把 Test.ZIP UnLock 然后删除 Test.ZIP A1.exe 就自动停止上传了 但是如何用 VB6 实现 UnLock Test.ZIP google search 暂时找不到 example vb6 code
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
引用 13 楼 Bobogg 的回复:
[quote=引用 12 楼 zhao4zhong1 的回复:]
Private Sub Button1_Click()
 Shell "taskkill /F /IM A1.exe /T",vbHide
End Sub
hi, 真的可以删除了 但是还是会一次就 kill 3 个 A1.exe 我开了 3个 A1.exe , 只要其中1个关闭 , 就是我有按 Button1 的那一个 , 其余2个 A1.exe 继续执行 [/quote]
Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
Private Sub Button1_Click()
 Shell "taskkill /F /PID "+CStr(GetCurrentProcessId)+" /T",vbHide
End Sub
bobogg 2014-07-10
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
Private Sub Button1_Click()
 Shell "taskkill /F /IM A1.exe /T",vbHide
End Sub
hi, 真的可以删除了 但是还是会一次就 kill 3 个 A1.exe 我开了 3个 A1.exe , 只要其中1个关闭 , 就是我有按 Button1 的那一个 , 其余2个 A1.exe 继续执行
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
Private Sub Button1_Click()
 Shell "taskkill /F /IM A1.exe /T",vbHide
End Sub
bobogg 2014-07-10
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
Private Sub Button1_Click()
 Shell "taskkill /IM myname.exe",vbHide 'myname.exe是自己exe程序的名字
End Sub
hi, thanls 还是不行 Form 虽然会不见 但是用任务管理员一看 程序其实还是在执行中, 以 CPU 25% (4核之1) 上传中 只是 Form 消失而已
Tiger_Zhao 2014-07-09
  • 打赏
  • 举报
回复
有终止的需求就说明你不能选用 FTP 一次性上传,应该用 HTTP 分段上传。
bobogg 2014-07-09
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
为什么不用End语句呢?
Private Sub Button1_Click()
 End
End Sub
End, STOP 语句皆无法终止 VB 的 App.hInstance , App.ThreadID 值都没有出现在以下范例中 http://www.vbforums.com/showthread.php?318582-Terminating-Running-EXE&p=1878673#post1878673 不然就可以用 VB 的 App.hInstance , App.ThreadID 来判断是否是自我程序
赵4老师 2014-07-09
  • 打赏
  • 举报
回复
为什么不用End语句呢?
Private Sub Button1_Click()
 End
End Sub
bobogg 2014-07-09
  • 打赏
  • 举报
回复
引用 5 楼 Tiger_Zhao 的回复:
有终止的需求就说明你不能选用 FTP 一次性上传,应该用 HTTP 分段上传。
世界有统一规定 FTP 不能中途停止吗 我以为是对方 FTP 主机拒绝我中途停止
bobogg 2014-07-08
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Process.GetCurrentProcess().Kill()
hi 我用的是 VB6 不是 VB.NET VB6 没有 Process.GetCurrentProcess().Kill()
bobogg 2014-07-08
  • 打赏
  • 举报
回复
引用 3 楼 Tiger_Zhao 的回复:
按下 Form Close Button 却无法 Unload Me 是程序 BUG,不修正 BUG 想歪招,态度不端正啊!
不是 BUG 例如 里面使用了 Set Obj = CreateObject("InetCtls.Inet") 当它正在上传文件时 没有办法对它进行终止上传的 一定非得等它上传完成才有办法 Unload Form1
Tiger_Zhao 2014-07-08
  • 打赏
  • 举报
回复
按下 Form Close Button 却无法 Unload Me 是程序 BUG,不修正 BUG 想歪招,态度不端正啊!
threenewbee 2014-07-07
  • 打赏
  • 举报
回复
Process.GetCurrentProcess().Kill()

1,486

社区成员

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

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