Open Chrome from command line and wait till it's closed Open Chrome from command line and wait till it's closed google-chrome google-chrome

Open Chrome from command line and wait till it's closed


If you want to open/close entire Chrome window:

Chrome by default is constantly running in background because of its default settings. Change this option to unchecked:
Settings > Show advanced > System > 'Continue running background apps when Google Chrome is closed'

So you have to make sure Chrome is closed before you run it again by your code. That works for me.


If you want to open/close related tabs only:

Chrome have one 'mother process' and some child processes.The problem is that if you run chrome using your code you are trying to create new instance of 'mother process' but the existing one won't let you do it. She'll instantly kill your new process and create her own child instead. That's how it works...

So, all you need is figure out how to run another 'chrome mother process' and prevent the previous hug from killing her ;P

I figure out this solution:
Run new chrome process with this parameter --user-data-dir="%temp%/random_name". This means that you are opening chrome with new user profile.

Advantages:

  • It works
  • Chrome is opening in new window
  • Chrome is closing when all related tabs are closed

Disadvantages:

  • Default settings (no bookmarks, etc) but you can copy them from default user profile directory

So, maybe you should look for sth in this direction...


Another command line parameter that (sort of) works is --chrome-frame. It appears Chrome uses WinInet API when in this mode, because the IE history is available. I do like more the idea about using --user-data-dir with a unique temp folder, as proposed by @DamianDrygiel.


You could find all the child processes of the Chrome process you run and then wait for them to finish.

There is a StackOverflow question that has some useful code: Find all child processes of my own .NET process / find out if a given process is a child of my own?. Also you might find this useful: Monitor child processes of a process.