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
PearlJamFanaticAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.