Von 1680x1050 nur 1200x1050 tatsächlich für Programme nutzen?

gogoland2002

Lt. Commander
Registriert
Nov. 2004
Beiträge
1.202
[Hoffe ich bin im richtigen Forum. Meine Frage hat eher mit tft als mit graka zu tun..]

Ich habe einen neuen 22" tft, mit 1680x1050 Auflösung. Nun möchte ich gerne dauerhaft ca. 480 pixel rechts ungenutzt lassen, soll heißen, dort immer den desktop sehen können.

Es sollen also z.B. 1200x1050 fürs browsen genutzt werden, und rechts davon auf 480x1050 der desktop sichtbar sein. Die Taskbar soll ganz durchgängig bleiben.

Natürlich könnte ich jedes Programmfenster entsprechend anpassen.
Ich suche aber nach einer Möglichkeit, dies fest zu definieren.
So, dass ich jegliches Programm "maximieren" kann, dieses aber nur auf 1200-pixel-Breite maximiert wird. Gibt es eine Möglichkeit, sowas hinzubekommen?

Wäre echt toll, wenn mir da jemand Tipps zu geben könnte.

Und bitte, bitte keine "warum-das-alles"-Diskussionen!

Danke und greetz,
gogoland2002
 
Also ein Tool oder ein Programm was sowas ermöglicht wäre mir was ganz neues.

Da hilft leider wohl nur selbst anpassen.
 
Mir wäre sowas ja eben auch ganz neu; sonst würde ich ja nicht fragen ;)



Kennt denn keiner so eine Möglichkeit?
 
Ich denke mal so eine Möglichkeit gibt es nicht, deswegen schreibt hier wohl auch keiner was dazu ^^

Ich meine, wozu auch solch eine Funktion? (Ich weiß, ich soll nicht nach fragen, machs aber trotzdem ;)
Schnapp dir einfach 2 Monitore, mach links dein primäres Bild und rechts eben die anderen Sachen rein.
 
Code:
#Include <array.au3>
#Include <WinAPI.au3>

While 1
	Sleep(10)
	Call('_resize')
WEnd

Func _resize()
	$width = @DesktopWidth - 480
	$height = @DesktopHeight - 25
	$active_window_name = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
	$active_window_state = WinGetState($active_window_name[0])
	$active_window_pos = WinGetPos($active_window_name[0])
	If BitAND($active_window_state, 32) And $active_window_pos[0] <= 0 And $active_window_pos[1] <= 0 Then
		WinMove($active_window_name[0], '', 0, 0, $width, $height)
	EndIf
EndFunc   ;==>_resize
Das hier im Open Source Tool "AutoIt" ausführen / kompilieren und starten. Kurz zur Funktionsweise:
Prüft alle 10ms, ob das gerade aktive Fenster maximiert ist. Falls ja, und nur dann, wird diesem Fenster eine andere Größe verpaßt (die der Angabe von gogoland2002 entspricht).

Das heißt, wenn das Fenster nicht maximiert ist oder der Benutzer es woanders hin verschiebt, bleiben neue Position und Größe erhalten, bis das Fenster irgendwann wieder maximiert wird.

www.autoitscript.com

Alternativ hier der Download der fertig kompilierten Version: http://rapidshare.com/files/104617589/resize.exe.html
 
Zuletzt bearbeitet:
You're a WiseGuy !! ;)

Affengeil! Super! D-A-N-K-E !

Habe Deinen Vorschlag in eine Textdatei gepackt, dann in .au3 umbenannt und anschliessen mit nem eigenen Icon compiled.
Das braucht gerade mal 6mb und ist echt ne 1A Lösung! Danke!

PS: Nur mal so ne Frage - falls Du Lust hast: Liesse sich das auch individuel für bestimmte Prozesse definieren?​



@Illusionist:
Ich denke mal so eine Möglichkeit gibt es nicht...
Scheinbar geht's ja doch ;)

Schnapp dir einfach 2 Monitore, mach links dein primäres Bild und rechts eben die anderen Sachen rein.
Findest Du nicht, das ist ein bisschen viel Aufwand? Abgesehen vom zusätzlichen Platz und Strom, die ein zusätzlicher Monitor (ver-) braucht. :(
 
Zuletzt bearbeitet:
Sicher geht das.
Code:
$active_window_name = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
ist ja ziemlich allgemein; es sucht den Namen des gerade aktiven Fensters raus und gibt ihn zur Nachbehandlung weiter. Man erstelle stattdessen ein Array mit den Fensternamen der in Frage kommenden Programme und jage das Procedere durch eine For Schleife, z.B. so:
Code:
#Include <array.au3>
Opt("WinTitleMatchMode", 2)

Dim $WinNamesArray = _ArrayCreate('0', 'Firefox', 'IrfanView')
$WinNamesArray[0] = UBound($WinNamesArray) - 1

While 1
	Sleep(10)
	Call('_resize')
WEnd

Func _resize()
	$width = @DesktopWidth - 480
	$height = @DesktopHeight - 25
	
	For $i = 1 To $WinNamesArray[0]
		$active_window_state = WinGetState($WinNamesArray[$i])
		$active_window_pos = WinGetPos($WinNamesArray[$i])
		If BitAND($active_window_state, 32) And $active_window_pos <= 0 And $active_window_pos[1] <= 0 Then
			WinMove($WinNamesArray[$i], '', 0, 0, $width, $height)
		EndIf
	Next
EndFunc   ;==>_resize

Die Zeile
Code:
Dim $WinNamesArray = _ArrayCreate('0', 'Firefox', 'IrfanView')
einfach um weitere Fensternamen ergänzen, z.B.
Code:
Dim $WinNamesArray = _ArrayCreate('0', 'Firefox', 'IrfanView', 'Notepad', 'Write', 'Minesweeper')
Mehr ist nicht notwendig.
 
Zuletzt bearbeitet:
Super, werde ich morgen mal ausprobieren. Eine Sache aber noch: Würde es Dir was ausmachen, die Prog-Analyse umzukehren, sodass nur definierte Programme die volle Breite erhalten?

DANKE Dir auf jeden Fall noch mal für das Skript! Unglaublich geil!
 
Auch wenns total OffTopic ist, ich als Programmier-n00b finde sowas einfach geil :daumen:
Werde mir das nachher auch mal anschauen und testen, so was in der Art wollte ich auch mal.

cYa
 
Das wäre dann sowas:

Code:
#Include <array.au3>

Dim $WinNamesArray = _ArrayCreate('Firefox', 'IrfanView')

While 1
	Sleep(10)
	Call("_resize")
WEnd

Func _resize()
	$dont_resize = 0
	$active_window_name = WinGetTitle('')
	$active_window_handle = WinGetHandle('')
	For $i = 0 To UBound($WinNamesArray) - 1
		$active_window_name3 = StringInStr($active_window_name, $WinNamesArray[$i])
		If $active_window_name3 > 0 Then
			$dont_resize = 1
		EndIf
		If $i = UBound($WinNamesArray) - 1 and not ($dont_resize = 1) Then
			$width = @DesktopWidth - 480
			$height = @DesktopHeight - 25
			$active_window_state = WinGetState($active_window_handle)
			$active_window_pos = WinGetPos($active_window_handle)
			If BitAND($active_window_state, 32) And $active_window_pos[0] <= 0 And $active_window_pos[1] <= 0 Then
				WinMove($active_window_handle, '', 0, 0, $width, $height)
			EndIf
		EndIf
	Next
EndFunc   ;==>_resize
 
Zuletzt bearbeitet:
Sensationell! Werde ich am WE auch noch mal ausprobieren.

Vielen, vielen Dank!

Gruß,
gogoland2002
 
Zurück
Oben