我要用VB编个程序对我的电视卡程序进行监控及控制,内容如下:1.如果电视卡程序是打开的,就把它关闭,否则就打开
2.如果电视卡程序是打开的,就把它设为当前窗口(当前焦当)
这如何做?谢谢了....

解决方案 »

  1.   

    Option Explicit
    Private Const WM_CLOSE = &H10
    Private Const WM_QUIT = &H12
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Sub TerminateTask(strApp_name As String) 'strApp_name 为电视卡程序的Caption
        Dim lApp_hwnd As Long
        lApp_hwnd = FindWindow(vbNullString, strApp_name)
        PostMessage lApp_hwnd, WM_CLOSE, 0, 0
    End SubPrivate Sub Command1_Click()
        AppActivate strApp_name
    End Sub
      

  2.   

    ' OpenProcess函数声明
    Private Declare Function OpenProcess Lib "kernel32" _
    (ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long _
    ) As Long
    ' CloseHandle函数声明
    Private Declare Function CloseHandle Lib "kernel32" _
    (ByVal hObject As Long) As Long' 判断程序是否正在运行的函数,如果是则返回True
    Function IsRunning(ByVal ProgramID) As Boolean   ' 传入进程标识ID
        Dim hProgram As Long  '被检测的程序进程句柄
        hProgram = OpenProcess(0, False, ProgramID)
        If Not hProgram = 0 Then
            IsRunning = True
        Else
            IsRunning = False
        End If
        CloseHandle hProgram
    End FunctionPrivate Sub Command1_Click()
    Dim X
    MsgBox "开始运行"
    X = Shell("NotePad.EXE", 1)  '这里以记事本为例
    While IsRunning(X)
        DoEvents
    WendEnd Sub