Is there any way to start/lunch a program through Process in another screen?
Someone asked that here but there was no answer.
Note: it is not a form in my app, I'm asking about running an external program in another screen!
1] Move apps to the desired monitor To do so, open the app on your computer first. Then, drag or move it to the desired monitor you want to open it on. Following that, close the app by clicking the Close or red cross button. After that, it will open on the last opened monitor all the time.
Since the window is not yours, you can only move it by invoking the Windows API. You will have to do this:
Launch the process.
Use FindWindow
to retrieve the handle to the window. If the window doesn’t exist yet, the process hasn’t created it yet; sleep for 500ms and then try again. (But don’t go into an infinite loop; stop if you can’t find the window after a reasonable timeout.)
Use SetWindowPos
to change the position of the window.
If you don’t know the title of the window, you can’t use FindWindow
. In that case,
Launch the process and get the process handle by retrieving Process.Handle
.
Use EnumWindows
to retrieve all the windows. For each window, use GetWindowThreadProcessId
to check whether it belongs to your process. If no window belongs to your process, wait and keep trying.
Use SetWindowPos
to change the position of the window.
Of course, you can use Screen.AllScreens[n].WorkingArea
to retrieve the position and size of the screen you want, and then you can position the window relative to that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With