Deutsch
Forum

2. Bildschirm bei Bildschirmschonerprogrammierung

 
- 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?
 
12.12.2015  
 



« 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
 $H Windows.ph
WindowTitle "GetSystemMetrics"
Def GetSystemMetrics(1) !"user32","GetSystemMetrics"
Font 2
cls
Print "                            SlowProcessor = ";~GetSystemMetrics(73)
Print " BootMode 0Normal 1Failsafe 2Safe+Network = ";~GetSystemMetrics(67)
Print " Network present LSB = ";~GetSystemMetrics(63) & 1;", No. of Monitors = ";~GetSystemMetrics(80)
Print "         Width of primary display monitor = ";~GetSystemMetrics(0)
Print "                Heigth of primary monitor = ";~GetSystemMetrics(1)
Print "  WindowBorder px = ";~GetSystemMetrics(5);";  WindowBorder3D px = ";~GetSystemMetrics(45)
Print "                     MinWidth of a Window = ";~GetSystemMetrics(28)
Print "                      MinHeight of Window = ";~GetSystemMetrics(29)
Print "                    Heigth of CaptionArea = ";~GetSystemMetrics(4)
Print "                            MenubarHeight = ";~GetSystemMetrics(15)
Print "                    SM_CX-FIXED/DLG-FRAME = ";~GetSystemMetrics(7)
Print "     CursorWidth = ";~GetSystemMetrics(13);";       CursorHeight = ";~GetSystemMetrics(14)
Print "             ArrangeMinimizedWindows Mode = ";~GetSystemMetrics(56)
print
Print "                       MousePortInstalled = ";~GetSystemMetrics(19)
Print "                   Number of MouseButtons = ";~GetSystemMetrics(43)
Print "                VerticalScrollWheel Mouse = ";(~GetSystemMetrics(75)>0)
Print "              HorizontalScrollWheel Mouse = ";(~GetSystemMetrics(91)>0)
Print "          XP/Vista/Win7 Edition='Starter' = "; ~GetSystemMetrics(88)
Print "                   TabletPCSupport Active = ";~GetSystemMetrics(86)
Print "            Windows4PenComputingInstalled = ";~GetSystemMetrics(41)
Print "             Windows Media Center Edition = ";~GetSystemMetrics(87)
Print ~GetSystemMetrics(78)'x-virtual Screen
Print ~GetSystemMetrics(79)'y-virtual screen
Print ~GetSystemMetrics(16)'SM_CXFULLSCREEN = 16 - Gibt die Weite des Arbeitsbereiches eines maximierten Fensters zurück.
Print ~GetSystemMetrics(17)'SM_CYFULLSCREEN = 17 - Gibt die Höhe des Arbeitsbereiches eines maximierten Fensters zurück.
'SM_CXSCREEN = 0 - Gibt die Weite des Bildschirms zurück.
'SM_CYSCREEN = 1 - Gibt die Höhe des Bildschirms zurück.
Print ~GetSystemMetrics(76)'SM_XVIRTUALSCREEN = 76 - Windows 98/NT - Liefert die linke Koordinate (bei mehreren Monitoren)
Print ~GetSystemMetrics(77)'SM_YVIRTUALSCREEN = 77 - Windows 98/NT - Liefert die obere Koordinate (bei mehreren Monitoren)
WaitInput
End

Provisorisches was gerade einfällt
KompilierenMarkierenSeparieren
Def 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
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

12.12.2015  
 



Hast Du einmal setErrorLevel -2 probiert?
 
12.12.2015  
 




Georg
Teles
Hm, da fällt mir nur GetSystemMetrics & dieses  [...]  Workarea, mit denen du spielen & etwas basteln kannst

GetSystemMetrics
KompilierenMarkierenSeparieren
 $H Windows.ph
WindowTitle "GetSystemMetrics"
Def GetSystemMetrics(1) !"user32","GetSystemMetrics"
Font 2
cls
Print "                            SlowProcessor = ";~GetSystemMetrics(73)
Print " BootMode 0Normal 1Failsafe 2Safe+Network = ";~GetSystemMetrics(67)
Print " Network present LSB = ";~GetSystemMetrics(63) & 1;", No. of Monitors = ";~GetSystemMetrics(80)
Print "         Width of primary display monitor = ";~GetSystemMetrics(0)
Print "                Heigth of primary monitor = ";~GetSystemMetrics(1)
Print "  WindowBorder px = ";~GetSystemMetrics(5);";  WindowBorder3D px = ";~GetSystemMetrics(45)
Print "                     MinWidth of a Window = ";~GetSystemMetrics(28)
Print "                      MinHeight of Window = ";~GetSystemMetrics(29)
Print "                    Heigth of CaptionArea = ";~GetSystemMetrics(4)
Print "                            MenubarHeight = ";~GetSystemMetrics(15)
Print "                    SM_CX-FIXED/DLG-FRAME = ";~GetSystemMetrics(7)
Print "     CursorWidth = ";~GetSystemMetrics(13);";       CursorHeight = ";~GetSystemMetrics(14)
Print "             ArrangeMinimizedWindows Mode = ";~GetSystemMetrics(56)
print
Print "                       MousePortInstalled = ";~GetSystemMetrics(19)
Print "                   Number of MouseButtons = ";~GetSystemMetrics(43)
Print "                VerticalScrollWheel Mouse = ";(~GetSystemMetrics(75)>0)
Print "              HorizontalScrollWheel Mouse = ";(~GetSystemMetrics(91)>0)
Print "          XP/Vista/Win7 Edition='Starter' = "; ~GetSystemMetrics(88)
Print "                   TabletPCSupport Active = ";~GetSystemMetrics(86)
Print "            Windows4PenComputingInstalled = ";~GetSystemMetrics(41)
Print "             Windows Media Center Edition = ";~GetSystemMetrics(87)
Print ~GetSystemMetrics(78)'x-virtual Screen
Print ~GetSystemMetrics(79)'y-virtual screen
Print ~GetSystemMetrics(16)'SM_CXFULLSCREEN = 16 - Gibt die Weite des Arbeitsbereiches eines maximierten Fensters zurück.
Print ~GetSystemMetrics(17)'SM_CYFULLSCREEN = 17 - Gibt die Höhe des Arbeitsbereiches eines maximierten Fensters zurück.
'SM_CXSCREEN = 0 - Gibt die Weite des Bildschirms zurück.
'SM_CYSCREEN = 1 - Gibt die Höhe des Bildschirms zurück.
Print ~GetSystemMetrics(76)'SM_XVIRTUALSCREEN = 76 - Windows 98/NT - Liefert die linke Koordinate (bei mehreren Monitoren)
Print ~GetSystemMetrics(77)'SM_YVIRTUALSCREEN = 77 - Windows 98/NT - Liefert die obere Koordinate (bei mehreren Monitoren)
WaitInput
End

Provisorisches was gerade einfällt
KompilierenMarkierenSeparieren
Def 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
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

12.12.2015  
 




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 .....
 
12.12.2015  
 




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


15 kB
Hochgeladen:13.12.2015
Ladeanzahl157
Herunterladen
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

13.12.2015  
 




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.
 
13.12.2015  
 




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 !
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

20.03.2016  
 




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.
 
05.06.2016  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.285 Betrachtungen

Unbenanntvor 0 min.
Member 862464128.03.2024
Xegon30.12.2021
Erasmus.Herold30.04.2019
Heiko Dix11.01.2019
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Xegon (4x)
Georg Teles (3x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie