首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • vb 关闭问题! [已结贴,结贴人:xtfjchrk]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 16:59:24 楼主
    当我用shell函数调用电脑里的kmplayer.exe播放器.
    我想单击一个按扭(command)时,使kmplayer.exe关闭.
    请各位大侠问行不行呀?
    如果应该怎么实现?
    希望能给出代码!
    小弟在此thank you first!!
    5  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 17:10:061楼 得分:0
    遍历进程 找到 kmplayer.exe  关闭
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 19:02:252楼 得分:0
    怎么个做法呀?
    能不能给出具体步骤和代码?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 19:27:233楼 得分:0
    shell "ntsd -c q -pn kmplayer.exe"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 19:27:354楼 得分:0
    XP有效
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 09:39:345楼 得分:0
    Option Explicit
    Private Const TH32CS_SNAPPROCESS = &H2
    Private Const TH32CS_SNAPheaplist = &H1
    Private Const TH32CS_SNAPthread = &H4
    Private Const TH32CS_SNAPmodule = &H8
    Private Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
    Private Const MAX_PATH As Integer = 260
    Private Const PROCESS_ALL_ACCESS = &H1F0FFF
    Private Const PROCESS_CREATE_PROCESS = &H80
    Private Const PROCESS_CREATE_THREAD = &H2
    Private Const PROCESS_DUP_HANDLE = &H40
    Private Const PROCESS_QUERY_INFORMATION = &H400
    Private Const PROCESS_QUERY_LIMITED_INFORMATION = &H1000
    Private Const PROCESS_SET_QUOTA = &H100
    Private Const PROCESS_SET_INFORMATION = &H200
    Private Const PROCESS_SUSPEND_RESUME = &H800
    Private Const PROCESS_TERMINATE = &H1
    Private Const PROCESS_VM_OPERATION = &H8
    Private Const PROCESS_VM_READ = &H10
    Private Const PROCESS_VM_WRITE = &H20
    Private Const SYNCHRONIZE = &H100000
    Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
    Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    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
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    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


    Public Function Testtxt(txt As String) As Boolean
        If Trim(txt) = "" Then
            Testtxt = False
        Else
            Testtxt = True
        End If
    End Function

    Public Function GetTargetProcessID(ByVal lpProcess As String) As Long
    Dim dwRet As Long
    Dim hSnapShot As Long
    Dim pe32 As PROCESSENTRY32
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
    pe32.dwSize = LenB(pe32)
    ProcessFirst hSnapShot, pe32
    Do
    If InStr(pe32.szExeFile, lpProcess) > 0 Then
    dwRet = pe32.th32ProcessID
    Exit Do
    Else
    pe32.szExeFile = String(MAX_PATH, 0)
    End If
    Loop While (ProcessNext(hSnapShot, pe32))
    CloseHandle (hSnapShot)
    GetTargetProcessID = dwRet
    End Function

    Public Function CloseTargetProcess(ByVal dwProcessID As Long) As Boolean
    Dim hProcess As Long
    Dim lpExitCode As Long
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessID)
    If hProcess = 0 Then
    CloseTargetProcess = False
    Exit Function
    End If
    If GetExitCodeProcess(hProcess, lpExitCode) = 0 Then
    CloseTargetProcess = False
    Exit Function
    End If
    If TerminateProcess(hProcess, lpExitCode) = 0 Then
    CloseTargetProcess = False
    Else
    CloseTargetProcess = True
    End If
    CloseHandle (hProcess)
    End Function

    Dim ret As Long
    ret = GetTargetProcessID("kmplayer.exe") '注意进程名字母要区分大小写
    If ret <> 0 Then
    ret = CloseTargetProcess(ret)
    End If
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 12:07:296楼 得分:0
    有没有更简单一些的呀?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • alifriend
    • 等级:
    发表于:2008-05-22 12:21:067楼 得分:0
    3楼的一行代码还不够简单?脑电波控制?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 12:30:478楼 得分:5
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    Const PROCESS_TERMINATE = 1
    Dim appdisk$, ProID&, hProcess&, ExeNm$

    Private Sub Form_Load()
      appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
      ExeNm = appdisk & "kmplayer.exe"
      If Dir(ExeNm) <> "" Then ProID = Shell(ExeNm, 3)
    End Sub

    Private Sub Command1_Click()
      On Error Resume Next
      If Dir(ExeNm) <> "" Then
          hProcess = OpenProcess(PROCESS_TERMINATE, False, ProID)
          TerminateProcess hProcess, 1
          CloseHandle hProcess
      End If
    End Sub

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-23 15:01:449楼 得分:0
    3楼的那个用到stsd.exe被杀毒软件拦,而且调用这个不好!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-23 15:07:3210楼 得分:0
    wmi的win32_process类的terminate方法。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved