Thread: Killing processes

  1. #1
    Registered User
    Join Date
    Oct 2003
    Posts
    11

    Killing processes

    My program currently opens up multiple iexplorer.exe's in the background. Everytime I run it i get around 50 iexplorer.exe processes.

    Now I'm hoping to find a way to kill all of them with a single click of a button.
    So anyway... anybody know of any code that kills a process in Windows?

  2. #2
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    TerminateProcess(HANDLE hProcess,UINT uExitCode);

    This sort of question can be answered easily by searching the forums. I searched for "kill process" and found the answer.
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

  3. #3
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    The only thing I can think of is...

    TerminateProcess("iexplore.exe", 0);

    That didnt work...
    I looked up TerminateProcess and couldnt find anything that really helped me (I'm obviously very new at this)

  4. #4
    ¡Amo fútbol!
    Join Date
    Dec 2001
    Posts
    2,138
    Here's a snippet from some code of mine.

    Code:
    void EndProcess(int id)
    {     HANDLE myHandle;
          DWORD Code;
          PROCESSENTRY32 Proc=myList[id];
          if((myHandle=OpenProcess(PROCESS_ALL_ACCESS, FALSE, Proc.th32ProcessID))==NULL) 
          {     MessageBox(hwnd, "Error in OpenProcess", "Error", MB_OK);
                return;
          }
          if(GetExitCodeProcess(myHandle, &Code)==0) 
          {     MessageBox(hwnd, "Error in GetExitCodeProcess", "Error", MB_OK);
                return;
          }
          TerminateProcess(myHandle, Code);
          CloseHandle(myHandle);
          return;
    }

  5. #5
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    Code:
    DWORD dwProcessId;
    HWND hFind;
    HANDLE hProcess;
    
    do
    {
    	hFind=FindWindow("IEFrame",NULL);
    	if (!hFind)
    		break;
    	GetWindowThreadProcessId(hFind,&dwProcessId);
    	hProcess=OpenProcess(PROCESS_TERMINATE,NULL, dwProcessId);
    	if (hProcess)
    		TerminateProcess(hProcess,0);
    }
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

  6. #6
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    error C2440: '=' : cannot convert from 'class CWnd *' to 'struct HWND__ *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.

    Using VC++ 6.0

    ???????????????????
    Last edited by Metal Man; 10-23-2003 at 12:44 PM.

  7. #7
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,659
    Perhaps a better question would be "how do I stop so many processes from being created at once"
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  8. #8
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    Originally posted by Metal Man
    error C2440: '=' : cannot convert from 'class CWnd *' to 'struct HWND__ *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.

    Using VC++ 6.0

    ???????????????????
    Could you show the code you have at this time? I can't see why you should be getting this error.
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

  9. #9
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    Code:
    // TheClicker3 Beta1Dlg.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "TheClicker3 Beta1.h"
    #include "TheClicker3 Beta1Dlg.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About
    
    class CAboutDlg : public CDialog
    {
    public:
    	CAboutDlg();
    
    // Dialog Data
    	//{{AFX_DATA(CAboutDlg)
    	enum { IDD = IDD_ABOUTBOX };
    	//}}AFX_DATA
    
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CAboutDlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    	//{{AFX_MSG(CAboutDlg)
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    	//{{AFX_DATA_INIT(CAboutDlg)
    	//}}AFX_DATA_INIT
    }
    
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CAboutDlg)
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    	//{{AFX_MSG_MAP(CAboutDlg)
    		// No message handlers
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTheClicker3Beta1Dlg dialog
    
    CTheClicker3Beta1Dlg::CTheClicker3Beta1Dlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CTheClicker3Beta1Dlg::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CTheClicker3Beta1Dlg)
    		// NOTE: the ClassWizard will add member initialization here
    	//}}AFX_DATA_INIT
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CTheClicker3Beta1Dlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CTheClicker3Beta1Dlg)
    		// NOTE: the ClassWizard will add DDX and DDV calls here
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CTheClicker3Beta1Dlg, CDialog)
    	//{{AFX_MSG_MAP(CTheClicker3Beta1Dlg)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
    	ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
    	ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
    	ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTheClicker3Beta1Dlg message handlers
    
    BOOL CTheClicker3Beta1Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Add "About..." menu item to system menu.
    
    	// IDM_ABOUTBOX must be in the system command range.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
    	
    	// TODO: Add extra initialization here
    	
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    void CTheClicker3Beta1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    	{
    		CAboutDlg dlgAbout;
    		dlgAbout.DoModal();
    	}
    	else
    	{
    		CDialog::OnSysCommand(nID, lParam);
    	}
    }
    
    // If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.
    
    void CTheClicker3Beta1Dlg::OnPaint() 
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // device context for painting
    
    		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    
    		// Center icon in client rectangle
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Draw the icon
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CDialog::OnPaint();
    	}
    }
    
    HCURSOR CTheClicker3Beta1Dlg::OnQueryDragIcon()
    {
    	return (HCURSOR) m_hIcon;
    }
    
    void CTheClicker3Beta1Dlg::OnButton5() 
    {
    	// TODO: Add your control notification handler code here
    	for(int x=0; x<10; x++)
    		{
    			char szPath[] = "C:\\Program Files\\Internet Explorer\\IEXPLORE.exe";
    
    			 HINSTANCE hRet = ShellExecute(
    			      HWND_DESKTOP, //Parent window
    			      "open",       //Operation to perform
    			      szPath,       //Path to program
    			      "www.whatever.com",         //Parameters
    			      NULL,         //Default directory
    			      SW_HIDE);     //How to open
    			 
    			 		DWORD dwProcessId;
    					HWND hFind;
    					HANDLE hProcess;
    
    				//	do
    				//	{
    						hFind=FindWindow("IEFrame",NULL);
    						if (!hFind)
    							break;
    						GetWindowThreadProcessId(hFind,&dwProcessId);
    						hProcess=OpenProcess(PROCESS_TERMINATE,NULL, dwProcessId);
    						if (hProcess)
    						TerminateProcess(hProcess,0);
    				//	}
    			 
    		
    		}
    }
    Last edited by Metal Man; 10-23-2003 at 04:48 PM.

  10. #10
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    Code:
    // TheClicker3 Beta1Dlg.h : header file
    //
    
    #if !defined(AFX_THECLICKER3BETA1DLG_H__92934473_FD13_4460_A993_E946B5A1D54E__INCLUDED_)
    #define AFX_THECLICKER3BETA1DLG_H__92934473_FD13_4460_A993_E946B5A1D54E__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    /////////////////////////////////////////////////////////////////////////////
    // CTheClicker3Beta1Dlg dialog
    
    class CTheClicker3Beta1Dlg : public CDialog
    {
    // Construction
    public:
    	CTheClicker3Beta1Dlg(CWnd* pParent = NULL);	// standard constructor
    
    // Dialog Data
    	//{{AFX_DATA(CTheClicker3Beta1Dlg)
    	enum { IDD = IDD_THECLICKER3BETA1_DIALOG };
    		// NOTE: the ClassWizard will add data members here
    	//}}AFX_DATA
    
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CTheClicker3Beta1Dlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    	HICON m_hIcon;
    
    	// Generated message map functions
    	//{{AFX_MSG(CTheClicker3Beta1Dlg)
    	virtual BOOL OnInitDialog();
    	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    	afx_msg void OnPaint();
    	afx_msg HCURSOR OnQueryDragIcon();
    	afx_msg void OnButton5();
    
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
    
    #endif // !defined(AFX_THECLICKER3BETA1DLG_H__92934473_FD13_4460_A993_E946B5A1D54E__INCLUDED_)

  11. #11
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    Which line causes the error?
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

  12. #12
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    hFind=FindWindow("IEFrame",NULL);

    If I remove that it points to any line with "hFind"

  13. #13
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    What happens if you leave that line in?
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

  14. #14
    Registered User
    Join Date
    Oct 2003
    Posts
    11
    The error points to this line
    Code:
    hFind=FindWindow("IEFrame",NULL);
    And if I remove it then the error points to the next line which has "hFind" in it.

  15. #15
    mustang benny bennyandthejets's Avatar
    Join Date
    Jul 2002
    Posts
    1,401
    I think the problem must then lie with MFC. I'm not an MFC person, so I can't help you, sorry.

    There is no logical reason why an HWND should be interpreted as a CWND *. Could you zip up your source and send it? I could try to run it, but I can't make any guarantees.
    [email protected]
    Microsoft Visual Studio .NET 2003 Enterprise Architect
    Windows XP Pro

    Code Tags
    Programming FAQ
    Tutorials

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 34
    Last Post: 05-27-2009, 12:26 PM
  2. Processes not dying
    By Elkvis in forum Linux Programming
    Replies: 12
    Last Post: 04-23-2008, 08:59 AM
  3. Stopping Processes Question
    By brett in forum Linux Programming
    Replies: 3
    Last Post: 06-24-2007, 10:15 PM
  4. binary tree of processes
    By gregulator in forum C Programming
    Replies: 1
    Last Post: 02-28-2005, 12:59 AM
  5. killing processes...
    By chris charlotte in forum C# Programming
    Replies: 1
    Last Post: 11-21-2003, 08:00 AM