Seite 1 von 2
Bildschirmschoner
Verfasst: 06.11.2005 14:25
von Programie
Ja, Hallo erstmal.
Ich hätte da mal "eine" kleine Frage.
Ist es möglich in PB einen Bildschirmschoner zu schreiben? Und wenn ja, wie?
Währe echt cooooooool!

Verfasst: 06.11.2005 15:27
von hardfalcon
Im CodeArchiv gibts ein CodeBeispiel dazu. Musst nur mal etwas suchen...
EDIT: Hier ist der Code:
http://www.purearea.net/pb/CodeArchiv/O ... enSaver.pb
Verfasst: 29.07.2007 01:44
von ReneMiner
Ich möchte keinen Screensaver programmieren- nein,
aber ich hab einige Anfänger-Fragen die damit zusammenhängen und wollte keinen Extra-Thread eröffnen,
und zwar ist konrekt folgendes passiert:
Ich hab mein Balla-balla- Spielchen
( siehe im Spiele-Feedback-Bereich
http://www.purebasic.fr/german/viewtopi ... 645#161645 ) testgespielt - und zwar per Joystick.
Irgendwann ging dann während des Spielens der Bildschirmschoner an - ein Ruckeln mit der Maus brachte zwar mein Window und den Rest des Desktops wieder in Ordnung aber nicht den im Window geöffneten Screen - der blieb grau...
Drum hier mal ein paar Fragen:
Gibt es einen cleveren Weg oder einen Parameter (z.b. beim InitJoystick() - wo es zwar nix direkt mit zu tun hat, aber Sinnvoll wäre ) den Bildschirmschoner solange der Joystick noch Eingaben macht zu unterdrücken bzw. irgendwelche Tastendrücke oder sowas zu simulieren damit der Bildschirmschoner nicht anspringt?
Wie stelle ich meinen (windowed) Screen wieder her falls ich doch einen Bildschirmschoner zulassen möchte?
Verfasst: 29.07.2007 15:51
von PureLust
Wie wäre es mit einer kleinen Forensuche nach "bildschirmschoner deaktivieren"?
Verfasst: 29.07.2007 16:23
von Kaeru Gaman
@ReneMiner
kann deine beobachtung
nicht bestätigen.
weder für dein game noch für ne eigene windowedscreen-demo.
was fürn bildschirmschoner ist denn das?
teste doch mal deinen bildschirmschoner, ob er diesen windowedscreen auch kaputt macht:
http://www.purebasic.fr/german/viewtopic.php?t=11280
Verfasst: 29.07.2007 17:35
von PureLust
Kaeru Gaman hat geschrieben:kann deine beobachtung nicht bestätigen.
weder für dein game noch für ne eigene windowedscreen-demo.
Wenn er solche Fälle nicht mit "IsScreenActive()" abgefangen hat, kann es sehr gut sein, dass sein Programm durch einen Bildschirmschoner oder auch Alt+TAB abstürzt - MUSS es aber nicht.
Somit kann es also sein dass Du "Glück" gehabt hast.

Verfasst: 30.07.2007 20:20
von ReneMiner
Doch- ein IsScreenActive hab ich drin- nur dann wird gerendert.
Der Bildschirmschoner hier (auf diesem Rechner) ist der Default WinXP- auf meinem Spiel und Programmier-Rechner hab ich sowas natürlich nicht.
Die Forensuche nach Bildschirmschoner deaktivieren erspar ich mir jetzt aber weil ich den Thread selbstverständlich längst gelesen habe: der Thread dort verwendet irgendwelche nicht näher bezeichneten Libs, wahrscheinlich auch Windows-spezifisch.
Dazu müsste ich erstmal wissen:
In welcher Lib würde ich die Screensaver-Settings finden?
Wie kann ich in meinem PB-Code abfragen auf welchem System das PB-Programm ausgeführt wird?
Es tät ja sicher keinen Sinn machen einen Windows-Screensaver auf einem Mac oder Amiga umgehen zu wollen...
Zudem will ich den Screensaver nicht deaktivieren sondern nur zeitweilig unterdrücken und nachdem der Screensaver vieleicht gelaufen ist möchte ich die initialisierte Sprite-Engine nicht unbedingt erneut initialisieren müssen um weiterspielen zu können,
Testergebnis (KG's Link) :
Versuch 1:
Nach dem Rückkehren vom Screensaver bleibt das Fenster weiss, pb bricht die Ausführung des Codes ab mit folgender Meldung:
ERROR- Line 116
ERROR - There's no current 2dDrawing Object
Beim 2. Versuch hab ich das Fenster per Klick auf's X (Fenster-Schliessen) abbrechen wollen:
"PB hat ein Problem festgestellt und muss beendet werden"
Danach war mein PB-Editor-Fenster aber noch da, gleiche Meldungen wie Versuch 1
Verfasst: 30.07.2007 20:38
von Christian H
ReneMiner hat geschrieben:Wie kann ich in meinem PB-Code abfragen auf welchem System das PB-Programm ausgeführt wird?
Es tät ja sicher keinen Sinn machen einen Windows-Screensaver auf einem Mac oder Amiga umgehen zu wollen...
Über Compiler Direktiven
http://www.purearea.net/pb/german/manua ... tives.html
Beispiel:
Code: Alles auswählen
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_AmigaOS
; etwas Amiga spezifischer Programmcode
CompilerCase #PB_OS_Linux
; etwas Linux spezifischer Programmcode
CompilerCase #PB_OS_Windows
; etwas Windows spezifischer Programmcode
CompilerEndSelect
Gruß Christian
Verfasst: 30.07.2007 20:41
von Kaeru Gaman
> Testergebnis (KG's Link) :
äußerst merkwürdig...
wie gesagt, ich hab den bildschirmschoner aktiviert, einfach den obersten in der liste (3D-flowerbox) und ich hab keine probleme beobachtet...
Verfasst: 02.08.2007 23:07
von ReneMiner
Vieleicht ist es untergegangen- eigentlich hätte ich gern gewusst wie man nun rauskriegt ob zwischenzeitlich ein Bildschirmschoner gestartet wurde und wie ich den WindowedScreen wieder herstellen kann:
Ist das nun ein generelles PB-Problem - und nicht nur ein auf gerade beide von mir benutzte Rechner beschränktes - das das initialisierte DirectX- oder 2dDrawing-Objekt im Windowed Screen beim Umschalten auf Bildschirmschoner-Vollbild zerstört wird? (ich habs inzwischen übrigens mit mehreren verschiedenen Screensavern ausprobiert, immer das Selbe)
Wäre es die einzige Lösung alles neu zu initialisieren sobald ich per OnError... mitgeteilt bekomme das es kein gültiges Bildausgabe-Objekt mehr gibt?
Und - kann man (z.B. bei Joystick-Eingaben) irgendwas ans Windows senden was dem Windows vormacht die Joystick-Eingaben wären z.B. eingehende Tastendrücke oder Mausbewegungen so das der Bildschirmschoner nur dann anspringt wenn wirklich nix los ist?