Kill all instances of an application if it is running

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • his newbness
    New Member
    • Nov 2007
    • 1

    Kill all instances of an application if it is running

    Hi all,

    I've got a rather unique problem (I think), and I'm hoping someone can help me out.

    I developed a solution for my company using MS Access 2007 with the MS Access 2007 Runtime. Everything is fine with the application itself although we've just discovered that at the bottom of all 2007 Runtime applications there's a "Powered by Microsoft Access" button which, when clicked, opens a browser and points itself to MS's Office web page. We aren't complaining about the button itself, but the problem is that my company forbids the people who will be using this program from surfing the internet while at work, so having this thing open up a browser is not good. I've tried disabling access to IE through the registry but then the runtime spits out an error saying that you must have IE installed to run the application.

    What I'd like to do is create a VB program which detects when browsers are opened and then immediately shuts them (when detected). Moreover, the program needs to run invisibly so that the personnel cannot stop it. On a skill level from 1-10 with VB I'm about a 4, so that should answer questions as to why I'm asking for advice on how to accomplish this.

    I don't expect people to write it for me, but I'm desperately hoping someone can point me toward some links which will help me. Thanks in advance.
  • mabubakarpk
    New Member
    • Feb 2007
    • 62

    #2
    Dear
    you can use APIs to end process, use following code

    Write this code in vb6.0 module. and use KillProcess proceadure

    Code:
    '-------------------------------------------------------
    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 * 260
    End Type
    '-------------------------------------------------------
    Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, _
    ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
    
    Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (ByVal hSnapshot As Long, _
    uProcess As PROCESSENTRY32) As Long
    
    Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (ByVal hSnapshot As Long, _
    uProcess As PROCESSENTRY32) As Long
    
    Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" ( _
    ByVal lFlags As Long, lProcessID As Long) As Long
    
    Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, _
    ByVal uExitCode As Long) As Long
    
    Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
    '-------------------------------------------------------
    Public Sub KillProcess(NameProcess As String)
    Const PROCESS_ALL_ACCESS = &H1F0FFF
    Const TH32CS_SNAPPROCESS As Long = 2&
    Dim uProcess  As PROCESSENTRY32
    Dim RProcessFound As Long
    Dim hSnapshot As Long
    Dim SzExename As String
    Dim ExitCode As Long
    Dim MyProcess As Long
    Dim AppKill As Boolean
    Dim AppCount As Integer
    Dim i As Integer
    Dim WinDirEnv As String
           
           If NameProcess <> "" Then
              AppCount = 0
    
              uProcess.dwSize = Len(uProcess)
              hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
              RProcessFound = ProcessFirst(hSnapshot, uProcess)
     
              Do
                i = InStr(1, uProcess.szexeFile, Chr(0))
                SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))
                WinDirEnv = Environ("Windir") + "\"
                WinDirEnv = LCase$(WinDirEnv)
           
                If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then
                   AppCount = AppCount + 1
                   MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
                   AppKill = TerminateProcess(MyProcess, ExitCode)
                   Call CloseHandle(MyProcess)
                End If
                RProcessFound = ProcessNext(hSnapshot, uProcess)
              Loop While RProcessFound
              Call CloseHandle(hSnapshot)
           End If
    
    End Sub
    hopefully you will get solution

    Regards,

    Comment

    Working...