• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2153
  • Last Modified:

Kill the iexplore.exe process using java code

I want to get rid of all internet explorer browser windows. I believe this can be done using killing all the iexplore.exe processes. Pleaase provide the java code for this.
Thanks for reading
0
PearlJamFanatic
Asked:
PearlJamFanatic
  • 7
  • 7
  • 6
  • +3
2 Solutions
 
CEHJCommented:
That can't be done in Java - you'd need native code. You can try a command line util, such as pkill + Java

http://technojeeves.com/joomla/index.php/free/52-runtimeexec
0
 
ksivananthCommented:
you need to execute the windows command from Java app through Runtime.exec, http://www.tech-recipes.com/rx/446/xp_kill_windows_process_command_line_taskkill/
0
 
objectsCommented:
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
PearlJamFanaticAuthor Commented:
can anyone give the exact piece of code. Not able to figure out from the links you have provided so far.
something like
void kill_All_IE(){
//blah
}
 
0
 
ksivananthCommented:
this explains the step by steps for Runtime.exec http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
0
 
ValeriCommented:
try this :
void kill_All_IE() {
try {
    Process process = Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe");
    } catch (IOException e) {
      e.printStackTrace();
    }
}
0
 
ksivananthCommented:
try this,

try {
String[] cmd = new String[3];
                cmd[0] = "cmd.exe" ;
                cmd[1] = "/C" ;
                cmd[2] = "taskkill /F /IM iexplore.exe" ;

    Process process = Runtime.getRuntime().exec( cmd );
    } catch (IOException e) {
      e.printStackTrace();
    }

0
 
ksivananthCommented:
also read the traps link I have posted, you need to follow it for correct execution!
0
 
ValeriCommented:
Just to make things more clear. This is the function:

void kill_All_IE() {
String s;
      try {
          Process process = Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe /T");
          BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
          BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));

          // read the output from the command
          while ((s = stdInput.readLine()) != null) {
              System.out.println(s);
          }

          // read any errors from the attempted command
          while ((s = stdError.readLine()) != null) {
              System.out.println(s);
          }

      } catch (IOException e) {
        e.printStackTrace();
      }
}
You have to read standart output and error stream in order to avoid some hangs of your app.
0
 
CEHJCommented:
Try the following to avoid any lockup
	try {
	    String[] cmd = new String[] {
	    "cmd.exe",
	    "/C",
	    "taskkill",
	    "/F",
	    "/IM",
	    "iexplore.exe" };

	    Process process = Runtime.getRuntime().exec( cmd );
	    IOUtils.outputProcessStreams(process);
	} catch (IOException e) {
	    e.printStackTrace();
	}

Open in new window

0
 
ksivananthCommented:
>>"taskkill",
          "/F",
          "/IM",
          "iexplore.exe"
>>

can be combined to one string!
0
 
CEHJCommented:
It can, but an array is usually stronger as it's less likely to break in the shell
0
 
ValeriCommented:
What's the difference between
Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe");
and
String[] cmd = new String[3];
                cmd[0] = "cmd.exe" ;
                cmd[1] = "/C" ;
                cmd[2] = "taskkill /F /IM iexplore.exe" ;
Process process = Runtime.getRuntime().exec( cmd );
The first one will be executed silently, the second will open cmd window. Is there any other differences?
0
 
ValeriCommented:
Probably the second solution will consume output & error streams, or not?
0
 
CEHJCommented:
>>What's the difference between ..?

There's very little difference. You must remember that the purpose of this site is not only to provide the most direct answers but to show best practices too for reusable solutions

0
 
ksivananthCommented:
>>The first one will be executed silently, the second will open cmd window. Is there any other differences?

have you tried this?
0
 
CEHJCommented:
btw PearlJamFanatic, you should test any command line command before trying to implement it in Java, obviously
0
 
ksivananthCommented:
>>Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe");

will not execute the actual command, actually this command can be executed in the win command console only, win doesn't understand this. if you don't specify cmd.exe, java will try to execute as win command which will just fail!
0
 
ValeriCommented:
>> have you tried this?
Yes, I tried it. The IE windows were closed silently... the following code works:
Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe");
>> You must remember that the purpose of this site is not only to provide the most direct answers but to show best practices too for reusable solutions
Yes, I agree with that! You are absolutely right! :-)
I was wondering whether the second solution consumes the output and error streams and the developer don't have to do that in the code?!
0
 
CEHJCommented:
>>I was wondering whether the second solution consumes the output and error streams and the developer don't have to do that in the code?!

Line 11 of my last code will consume and print all
0
 
ValeriCommented:
>> Line 11 of my last code will consume and print all
Hm... that's the question, will be there anything to consume at all?!
Ok, I will check this! :-)
0
 
CEHJCommented:
>>will be there anything to consume at all?!

Even if there isn't, i refer you to http:#33672843 again. There's always the possibility that stderr could be produced under certain circumstances. Redirection of both stderr and stdout to nul could also be done, but again, that's not a reusable solution in all cases
0
 
chatarosCommented:
import java.io.IOException;


public class test
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        try
        {
            Process p = new ProcessBuilder("cmd", "/k taskkill /IM iexplore.exe /F").start();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

}
0
 
chatarosCommented:
tested on WinXp, java 1.6, but it should work with 1.5 also
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 7
  • 7
  • 6
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now