rT

解决方案 »

  1.   

    dim i as long
    i=shell(the programme)SendMessage i, WM_CLOSE, 112, 0
      

  2.   

    请问楼上的, WM_CLOSE 是窗体程序的关闭消息,如果运行的程序没有窗体呢?
      

  3.   

    我认为正确的做法是这样的:
    =============================
    Option Explicit
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode 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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Boolean
    Const PROCESS_TERMINATE = 1Private Sub Form_Load()
        Dim ProID As Long             '''进程 PID
        ProID = Shell("notepad.exe", vbMaximizedFocus)'''这里用打开一个记事本来示例
        Sleep 2000    Dim hProcess As Long          '''进程句柄
        hProcess = OpenProcess(PROCESS_TERMINATE, False, ProID)
        TerminateProcess hProcess, 1  '''关闭进程 
        
        CloseHandle hProcess          '''释放句柄
    End Sub
      

  4.   

    一个模块的代码,关记事本是没问题,自己试试看吧Attribute VB_Name = "Module1"
    Option Explicit
    Declare Function EnumWindows Lib "user32" (ByVal wndenmprc As Long, ByVal lParam As Long) As Long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Const WM_CLOSE = &H10
    Private Target As StringPublic Function closewin(ByVal app_hWnd As Long, ByVal param As Long) As Long
        Dim buf As String * 256
        Dim title As String
        Dim length As Long    '取得窗口名句柄
        length = GetWindowText(app_hWnd, buf, Len(buf))
        title = Left$(buf, length)    '判断是否为要关闭的窗体
        If InStr(title, Target) <> 0 Then
            ' 关闭窗体
            SendMessage app_hWnd, WM_CLOSE, 0, 0
        End If
        closewin = 1
    End FunctionPublic Sub pausetask(app_name As String)
        Target = app_name
        EnumWindows AddressOf closewin, 0
    End Sub
      

  5.   

    wxy_xiaoyu(☆然也☆ => .NET 努力ing) 方法简单又有效,谢谢