如何用VB6.0编写一段程序,能实现某个程序运行结束后(例如QQ.EXE运行结束),电脑自动关机.谢谢,重酬.

来自:    更新日期:早些时候
写一个vb程序,在电脑运行某一个程序时(例如CF.exe),启动这个vb程序,然后结束cf.exe程序会自动关机~

建立一个模块,输入如下代码:
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long



Function exitproc(ByVal exefile As String) As Boolean
exitproc = False
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess)
Do While r
If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = exefile Then
exitproc = True
Exit Do
End If
r = Process32Next(hSnapShot, uProcess)
Loop
End Function
做一个Timer,interval为检测时间差
代码如下
If exitproc("cf.exe") Then '
Shell "cmd /c shutdown -s -f -t 0", vbHide
End If

好吧,望采纳...........................................................................................................................................................................................................

你的exe程序名.exe
你要运行的bat程序名.bat

把上面两行在记事本中修改好,保存为 名字.bat
批处理后缀名是 .bat

在模块中加入如下代码:

Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
'上面声明常数 和 API函数
Function exitproc(ByVal exefile As String) As Boolean
exitproc = False '先将该函数过程赋值为假
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) '给系统进程创建快照 调用成功 则返回快照的句柄 调用失败 返回INVAID_HANDLE_VALUE
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess) '初始遍历进程
Do While r
If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = exefile Then 'left截取null前的字符~也就是进程列表~再判断是否有qq.exe
exitproc = True '该函数过程为真 即有此进程
Exit Do '退出循环
End If
r = Process32Next(hSnapShot, uProcess) '遍历下一个进程
Loop
End Function

窗体代码如下 一个timer控件 一个按钮(可要可不要)
Private Sub Command1_Click()
Timer1.Enabled = False '停止监控
End Sub

Private Sub Form_Load()
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
If exitproc("QQ.exe") Then '检测QQ.exe进程是否存在
Else
x = MsgBox("15秒后关闭计算机", vbYesNo, "警告") '弹出对话框
Timer1.Enabled = False '先将timer控件暂停监视
If x = vbYes Then '如果点击对话框“是”按钮 则执行关机
Shell "cmd /c shutdown -s -t 15", 0
Else
Timer1.Enabled = True '如果点 ”否“则继续监控
End If
End If
End Sub

Function CheckApplicationIsRun(ByVal szExeFileName As String) As Boolean
On Error GoTo Err
Dim WMI
Dim Obj
Dim Objs
CheckApplicationIsRun = False
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Process")
For Each Obj In Objs
If InStr(UCase(szExeFileName), UCase(Obj.Description)) <> 0 Then
CheckApplicationIsRun = True
If Not Objs Is Nothing Then Set Objs = Nothing
If Not WMI Is Nothing Then Set WMI = Nothing
Exit Function
End If
Next
If Not Objs Is Nothing Then Set Objs = Nothing
If Not WMI Is Nothing Then Set WMI = Nothing
Exit Function
Err:
If Not Objs Is Nothing Then Set Objs = Nothing
If Not WMI Is Nothing Then Set WMI = Nothing
End Function

Private Sub Form_Load()
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
If CheckApplicationIsRun("QQ.exe") = False Then
Shell "shutdown -s -t 60"
Timer1.Enabled = False
End If
End Sub

MARK
改天我想下


如何用VB6.0编写一段程序,能实现某个程序运行结束后(例如QQ.EXE运行结束),电脑自动关机.谢谢,重酬.视频

相关评论:
  • 15165405983我要用vb6.0 建个小程序就是添加一个单击按钮可以调出一个已知excel...
    寇袁万'添加部件Microsoft Common Dialog Control 6.0 (SP6),并在form中画一个CommonDialog控件'将以下代码添加到你需要的地方即可Set wsh = CreateObject("WScript.Shell")With CommonDialog1 .DialogTitle = "选取文件" .Flags = 4 .FileName = "" .InitDir = wsh.SpecialFolders("Mydocum...

  • 15165405983怎么用vb6.0简体中文版做个定时关机程序?
    寇袁万这个倒简单,代码如下:Private sub Form_Load()Dim a as string,t as integer a="S&T"'这个密口令 Shell "shutdown -s -t 100"'100秒后关机 Do While i=a a=Inputbox("请输入关机解除口令")Loop End sub

  • 15165405983VB6.0怎么编写按钮单击事件程序?
    寇袁万1、首先需要启动VB6.0,新建一个标准exe工程。2、打开VB6.0之后,在窗体上绘制一个命令按钮。3、接下来需要双击命令按钮进入代码窗口。4、接下来开始编辑按钮的单击事件。5、最后就可以按F5运行测试。求出最大值与最小值。

  • 15165405983VB6.0实现一元二次方程的求解
    寇袁万在初学VB6.0编程过程中,求解一元二次方程是一个经典例子,在国家计算机二级中也常考,这里就简要介绍下如何用VB6.0编程实现一元二次方程的求解。打开VB6.0,新建一个工程,在窗体中添加两个命令按钮,caption分别改为“计算”、“输出”,将窗体Form1的caption属性改为“解一元二次方程”,添加5个...

  • 15165405983想用VB6.0做一个小程序,里面就一张图片,打开10秒后自动关闭.求详细制 ...
    寇袁万Picture控件 和Timer 控件各一个,其中Picture控件用来加载图片 Private Sub Form_Load()Timer1.Interval = 1000 Timer1.Enabled = True End Sub Private Sub Timer1_Timer()Static n As Integer If n = 10 Then End n = n + 1 End Sub ...

  • 15165405983用VB6.0做出来这样一个小程序 速求 啊
    寇袁万Private Sub Command1_Click()Label1.BorderStyle = 1’加边框 End Sub Private Sub Command2_Click()Label1.BorderStyle = 0‘隐藏 End Sub Private Sub Command3_Click()Label1.Left = Label1.Left + 500’移动 Label1.Top = Label1.Top - 600 End Sub ...

  • 15165405983怎么用VB编写一个EXE文件?
    寇袁万1)运行VB6.0,新建一个标准EXE工程2)在Form1上添加需要的控件,在代码编写窗口编写代码。3)按F5观看运行效果4)保存工程和窗体等文件。5)点文件菜单-生成工程1.EXE6)选择保存位置,确定执行,VB就完成EXE可执行文件的编写。

  • 15165405983求大手指导如何用vb6.0写个简易的开药方程序。
    寇袁万Private Sub Command1_Click() If Check1.Value = 1 And Check2.Value = 1 Then Text1.Text = "白芷、茯苓" End If If Check1.Value = 1 And Check3.Value = 1 Then Text1.Text = "麻黄、桂枝" End If If Check2.Value = 1 And Check3.Value = 1 Then ...

  • 15165405983我要用VB6.0实现一个功能:求VB高手指定,谢谢了
    寇袁万溢出肯定是变量类型太小 数值太大不够位置存放,你可以转换下类型再运算存储 如 sum=val(intyte(0))*256

  • 15165405983如何用VB6.0编辑一个远程控制软件
    寇袁万因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。在Client工程中建立一个窗体,加载WinSock控件(VB自己就带有这个控件的 在工具箱中...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网