| |
|
|
- Seite 1 - |
|
Xegon | Hallo zusammen, ich programmiere schon einige Zeit an einem Bildschirmschoner rum der auch wirklich gut funktioniert. Problem ist aber das dieser nur auf dem primären Monitor unter Windows laufen soll. Also Bildschirm 2 und 3 müssen aus geschaltet werden oder schwarz gepinselt. Mir will es nicht gelingen hier eine Lösung dafür zu finden. Fenstergröße ausdehnen geht nicht, da %maxx dieses nicht zulässt. Gibt man eine Übergröße ein - führt das zu einem Programmfehler. Gezielt den 2. Monitor ausschalten in den Standby habe ich auch noch nicht gefunden.
Kann jemand helfen? |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
Georg Teles | Hm, da fällt mir nur GetSystemMetrics & dieses [...] Workarea, mit denen du spielen & etwas basteln kannst
GetSystemMetrics KompilierenMarkierenSeparieren Provisorisches was gerade einfällt KompilierenMarkierenSeparierenDef GetSystemMetrics(1) !"user32","GetSystemMetrics"
WindowStyle $f0
Declare x&,y&,wx&,wy&
x& = GetSystemMetrics(76)'SM_XVIRTUALSCREEN /
y& = GetSystemMetrics(77)'SM_YVIRTUALSCREEN /
wx&= GetSystemMetrics(78)'x-virtual Screen /
wy&= GetSystemMetrics(79)'y-virtual Screen /
Create("Window",%Desktop,"",x&,y&,wx&,wy&)'übermalen
window 0,0-%MaxX,%MaxY'Screensaver
CLS RGB(0,0,0)
WaitInput
END
|
|
|
| |
|
|
|
|
| Hast Du einmal setErrorLevel -2 probiert? |
|
|
| |
|
|
|
Georg Teles | Hm, da fällt mir nur GetSystemMetrics & dieses [...] Workarea, mit denen du spielen & etwas basteln kannst
GetSystemMetrics KompilierenMarkierenSeparieren Provisorisches was gerade einfällt KompilierenMarkierenSeparierenDef GetSystemMetrics(1) !"user32","GetSystemMetrics"
WindowStyle $f0
Declare x&,y&,wx&,wy&
x& = GetSystemMetrics(76)'SM_XVIRTUALSCREEN /
y& = GetSystemMetrics(77)'SM_YVIRTUALSCREEN /
wx&= GetSystemMetrics(78)'x-virtual Screen /
wy&= GetSystemMetrics(79)'y-virtual Screen /
Create("Window",%Desktop,"",x&,y&,wx&,wy&)'übermalen
window 0,0-%MaxX,%MaxY'Screensaver
CLS RGB(0,0,0)
WaitInput
END
|
|
|
| |
|
|
|
Xegon | Genau sowas suche ich.... Erster Test war ok - werde es morgen mal in den Progammcode des Schoners einbauen..... Melde mich mit dem Ergebnis
und....
Vielen, vielen Dank ..... |
|
|
| |
|
|
|
Georg Teles | Naja, so effektiv war die provis. Lösung nicht --- diese erzeugt über den ganzen 'virtuellen Monitor' (rote Fläche s. Bild) das Fenster (Windows erzeugt diesen virtuellen Monitor als eine Fläche und weist den physikalischen TFTs die Bereiche zu) und die %HWnd wird auf dem 'primären physikalischen' erzeugt
|
|
|
| |
|
|
|
Xegon | Hallo,
in meinen Tests habe ich immer einen zweiten weißen Bildschirm. Paßt in meinem Fall sehr gut, da ich den Schoner in Weiß programmiert habe. Eine andere Farbe kann ich aber nicht einstellen. Ich werde den Erfolg morgen im Unternehmen testen. |
|
|
| |
|
|
|
Georg Teles | Hmm nun haben mich die Screensaver auch interessiert, habe auf schnelle einen Ansatzschnipsel für 2 Monitore als Beispiel zusammengeschustert
hierfür benötigst Du noch diese PCU [...]
$U ListMonitors.pcu = mon_
Declare e%
Set("AutoPaint",0)
Windowstyle $f0+512+1024'nirgends anzeigen
window 0,0-0,0
Def GetSystemMetrics(1) !"user32","GetSystemMetrics"
Declare x&,y&,wx&,wy&
x& = GetSystemMetrics(76)'SM_XVIRTUALSCREEN /
y& = GetSystemMetrics(77)'SM_YVIRTUALSCREEN /
wx&= GetSystemMetrics(78)'x-virtual Screen /
wy&= GetSystemMetrics(79)'y-virtual Screen /
' Monitore ermitteln
Declare mons&, mons$, anzahl&
mons& = Create("Grid",1,0)
' Monitore in GridBox einlesen !
mon_GetMonitors(mons&)
anzahl& = GetCount(mons&)
Declare wnd&[(anzahl&-1)]
WindowStyle $f0+512
WhileLoop 0,(anzahl&-1)
mons$ = GetText$(mons&,&loop,0)
' in Taskleiste anzeigen
'wnd&[&loop] = Create("Window",%Desktop,"",Val(SubStr$(mons$,1,"_")),Val(SubStr$(mons$,2,"_")),Val(SubStr$(mons$,3,"_")),Val(SubStr$(mons$,4,"_")))
' in Taskleiste ausblenden
wnd&[&loop] = Create("Window",%hWnd,"",Val(SubStr$(mons$,1,"_")),Val(SubStr$(mons$,2,"_")),Val(SubStr$(mons$,3,"_")),Val(SubStr$(mons$,4,"_")))
' immer im vordergrund
SetWindowPos wnd&[&loop] = Val(SubStr$(mons$,1,"_")),Val(SubStr$(mons$,2,"_"))-Val(SubStr$(mons$,3,"_")),Val(SubStr$(mons$,4,"_"));-1
EndWhile
Declare bg_rot&, bg_blau&
MCls wx&,wy&,RGB(160,0,0)
bg_rot& = Create("hPic",0,"&MEMBMP")
MCls wx&,wy&,RGB(0,0,160)
bg_blau& = Create("hPic",0,"&MEMBMP")
male(wnd&[0],bg_rot&,"Monitor 1")
male(wnd&[1],bg_blau&,"Monitor 2")
Clear e%
WhileNot e%
WaitInput
If (%Key = 2) | (%Key = 27)
Inc e%
EndIf
If %wmPaint
male(wnd&[0],bg_rot&,"Monitor 1 wurde neu gezeichnet !")
male(wnd&[1],bg_blau&,"Monitor 2 wurde neu gezeichnet !")
EndIf
EndWhile
Proc male
Parameters wnd&, hPic&, text$
Startpaint wnd&
Drawpic hPic&,0,0;0
Print text$
EndPaint
EndProc
DeleteObject bg_rot&
DeleteObject bg_blau&
END
Grüße, gute Nacht, guten Morgen ! |
|
|
| |
|
|
|
Xegon | Hallo und vielen Dank für die Hilfe....
Für meine Zwecke hat das Beispiel mit dem weissen Fenster in der virtuellen Auflösung gereicht.
Der zweite, dritte und vierte Monitor bleibt weiss. Das paßt sehr gut und der BS wird auf dem ersten Monitor ausgeben mit Hintergrundfarbe weiss.
Ja - richtig gehört ... vier Monitore. Der Trend geht nicht mehr zum zweiten Monitor bei uns im Unternehemen, sondern zum dritten oder vierten Monitor. |
|
|
| |
|
|