Make Chrome open on second monitor?
18,642
Chrome allows you to pass a position and size on the command line with --window-position and --window-size I believe. Check out this page for details.
Example:
:: Left screen is 1024x768
"C:\chrome.exe" "https://www.example.com/?a=0&b=1" --window-position=0,0 --window-size=1024,768 --user-data-dir="C:\my-chrome1"
:: Right screen is 1280x720
:: Now chrome.exe we need to open in the second screen then we do it as below:
:: we might want to use --kiosk but combination of --kiosk and --window-position wont work so in that case we can use --app
"C:\chrome.exe" --app="https://www.example.com/?a=0&b=1" --window-position=1025,0 --window-size=1280,720 --user-data-dir="C:\my-chrome2"
Author by
user3464658
Updated on June 13, 2022Comments
-
user3464658 almost 2 years
I'm currently trying to make an app that forces a Chrome window to open on my second monitor but I can't find anyway to do it using arguments, now I'm wondering if I can somehow use Delphi to force it to open on the second screen or a specific pixel? This is solely an app for myself and my PC so I can put the code in specific for my case.
I'm currently using this bit of code to start the app
procedure TForm1.BtnClick(Sender: TObject); begin ExecProcess(ChromePath,'',False); end; function ExecProcess(ProgramName, WorkDir: string; Wait: boolean): integer; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CreateOK: boolean; ExitCode: integer; dwExitCode: DWORD; begin ExitCode := -1; FillChar(StartInfo, SizeOf(TStartupInfo), #0); FillChar(ProcInfo, SizeOf(TProcessInformation), #0); StartInfo.cb := SizeOf(TStartupInfo); if WorkDir <> '' then begin CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, Addr(WorkDir[1]), false, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcInfo); end else begin CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, nil, false, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil, Addr(WorkDir[1]), StartInfo, ProcInfo); end; { check to see if successful } if CreateOK then begin // may or may not be needed. Usually wait for child processes if Wait then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); GetExitCodeProcess(ProcInfo.hProcess, dwExitCode); ExitCode := dwExitCode; end; end else begin ShowMessage('Unable to run ' + ProgramName); end; CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); Result := ExitCode; end;
Can I somehow use something in
StartInfo.wShowWindow
maybe? -
SilverWarior over 9 yearsis wright. All you have to do is set initial position of the Chrome window to be on the second monitor. For more information how you can do this with your own Delphi application forms check this article stackoverflow.com/questions/206400/…
-
user3464658 over 9 yearsThank you @Nat, this worked perfectly! I was looking everywhere but couldn't find anything regarding this, so simple yet so hard.