Seite 1 von 1

Beliebiges aktives Fenster auf nächsten Monitor verschieben

Verfasst: 12.01.2015 21:28
von Zerosurf
Hallo Leute,
nach langer Zeit - ich hab schon wieder alles über PB verlernt ;) - möchte ich mich an ein kleines Programm wagen, welches folgendermassen funktionieren soll:

Ich möchte ein beliebiges, aktives Fensters auf den nächsten Monitor mittels (einstellbarer) Tasten-Kombination verschieben ev. kombiniert mit einer gleichzeitigen Maximierung bzw. Minimierung des aktiven Fensters (auch einstellbar).

Wie beginne ich da am besten?

Vielen Dank im Voraus!
LG
Zerosurf

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 21:31
von RSBasic
Was meinst du mit "beliebig"? Ein beliebiges Fenster deiner Anwendung oder fremder Anwendung?

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 21:42
von Zerosurf
Mit beliebig meinte ich, einfach ein Fenster welches grad aktiv ist, z.B. ich schau grad mit dem VLC-Player einen Film und möchte diesen auf den zweiten Monitor sehen, dann drücke ich eine Tasten-Kombination und schwups ist der Film (bzw. der VLC-Player) auf dem zweiten Monitor und auch gleich maximiert!

Oder ich klicke auf eine Film Datei und der VLC-Player startet maximiert im zweiten Monitor - das wäre auch eine Möglichkeit!
Ev. auch als Rechts-Klick Option!

Wird das zu kompliziert?

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 21:58
von RSBasic
Für sowas nutze ich gerne die Anwendung "Ultramon". Damit kannst du u.a. ein Fenster auf den anderen Monitor verschieben.
Du kannst aber auch mit Hilfe einer vorhandenen Windows-Tastenkombination ein aktives Fenster verschieben: Windows-Taste + Shift + Rechts/Links
Reicht dir das?
Da du aber in diesem Unterforum geschrieben hast, nehme ich an, dass du selber eine Anwendung entwickeln möchtest, die sowas kann.
Um ein beliebiges Fenster (auch fremde) zu verwalten, musst du WinAPIs verwenden. Deshalb meine Frage von vorhin. Wenn es nur eigene Fenster sind, die gesteuert werden sollen, dann gehts deutlich einfacher.

Anyway, was du machen musst, sind folgende Schritte:
1. Du ermittelst das aktive Fenster: GetForegroundWindow_()
Damit bekommst du die Handle-Nummer des jeweiligen Fensters. Mit Hilfe der einmaligen Handle-Nummer kannst du das Fenster komplett steuern, ob minimieren, maximieren, schließen, verschieben, vergrößern, abfragen, verändern usw.
2. Dann kannst du mit ExamineDesktops() die vorhandenen Desktops mit den Auflösungen ermitteln. Siehe PB-Hilfe
3. Um ein Fenster verschieben zu können: SetWindowPos_()

Beschreibungen und Parameterlisten der einzelnen WinAPI-Funktionen findest du auf MSDN.

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 22:02
von NicTheQuick
Anscheinend kann man unter Windows dem VLC-Player auch ein Fensterhandle mitgeben, auf das er das Video rendern soll. Könnte dann so aussehen (ungetestet):

Code: Alles auswählen

Define.s videoFile.s = "C:\....\Video.avi"
Define.s vlcPath.s = "C:\....\vlc.exe"

If OpenWindow(0, 0, 0, 800, 600, "VLC Video")
	
	RunProgram(vlcPath, "--drawable-hwnd=" + Str(WindowID(0)) + " " + #DQUOTE$ + videoFile + #DQUOTE$, GetPathPart(videoFile), )
	
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 22:09
von Zerosurf
Die Idee hab ich von diesem Programm: http://www.casic.de/Produkte/Monitor_Sw ... tcher.html
wobei ich dort leider 2 Tasten-Kombinationen durchführen muss:

Einmal um das Fenster zum nächsten Monitor zu verschieben und die Zweite um es dann zu maximieren bzw. zu minimieren!

Und dann hat es auch noch 143MB - das müsste doch mit PB viel "leichter" werden! ;)

Aber mit euren Denkanstößen werd ich mich gleich mal auseinander setzen!

Vielen Dank! :allright:

Re: Beliebiges aktives Fenster auf nächsten Monitor verschie

Verfasst: 12.01.2015 23:12
von edel
Die 143 MB kommen durch das .Net Framework zustande. Das eigentliche Programm ist bei weitem nicht so gross.