Entwickler-Ecke
Sonstiges (Delphi) - Bildschirmschoner abschalten
jakobwenzel - Mo 07.11.05 20:36
Titel: Bildschirmschoner abschalten
Angenommen ich habe ein Programm, in dem eine längere Berechnung (o.ä.) ausgeführt wird, bei der schon mal der Bildschirmschoner anspringt, wie krieg ich den dann wieder weg?
Ich will ihn jetzt nicht generell deaktivieren, sondern einfach nur abstellen, wie wenn der User die Maus bewegt.
Ich hab das Problem jetzt nicht direkt, sondern es interessiert mich einfach.
Wie geht das?
Tilman - Mo 07.11.05 20:43
hab gegoogelt, keine Gewäh:
Bildschirmschoner deaktivieren:
Delphi-Quelltext
1:
| SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 0, @NULL, SPIF_UPDATEINIFILE); |
Bildschirmschoner aktivieren:
Delphi-Quelltext
1:
| SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 1, @NULL, SPIF_UPDATEINIFILE); |
jakobwenzel - Mo 07.11.05 20:47
Geht nich. :cry:
Amateur - Mo 07.11.05 20:49
kann man nicht per api den mauszeiger verschieben oder nen tastendruck simulieren bzw. die message für nen tastendruck schicken? dann das ganze nur wenn der schoner aktiviert ist oder in nem bestimmten zeitintervall. ist sicher nicht die sauberste aber ne einfache lösung wenn man sich mit api auskennt(ich tus nicht)
jakobwenzel - Mo 07.11.05 20:53
@Amateur: Das geht sicherlich, ich weiß nur nicht wie man das macht. Die Frage ist halt, ob Windows das als Grund annimmt, den Bildschiormschoner abzuschalten.
@Tilman: Ich hab auch mal gegoogelt, und ich glaub, dass das die Befehle zum gänzlichen Deaktivieren des Bildschirmschoners sind, also genau das, was ich nicht will.
Tilman - Mo 07.11.05 21:02
jakobwenzel hat folgendes geschrieben: |
@Tilman: Ich hab auch mal gegoogelt, und ich glaub, dass das die Befehle zum gänzlichen Deaktivieren des Bildschirmschoners sind, also genau das, was ich nicht will. |
Naja stimmt wohl, aber ich hab keine Ahnung wie es sonst geht
@Jakobwezel: es funktuioniert, habs gerade ausprobiert. Jedenfalls unter WinXP.
@Amateur: setCursorPos reicht jedenfalls nicht, habs gerade getestet
jakobwenzel - Mo 07.11.05 21:05
@Tilman: Ich hab in einem Timer versucht alle 2 Sekunden den Bildschirmschoner an- / auszuschalten. Bei mir gings nicht. (Auch XP)
Tilman - Mo 07.11.05 21:20
jakobwenzel hat folgendes geschrieben: |
@Tilman: Ich hab in einem Timer versucht alle 2 Sekunden den Bildschirmschoner an- / auszuschalten. Bei mir gings nicht. (Auch XP) |
Wieso willst du alle 2 Sekunden den Schoner abstellen? Realitätsnaher wäre es du
- Deaktivierst den Schoner
- Rechnest (z.B. 3 Minuten)
- Schaltest den Schoner wieder ein
dann müsste der Schoner wenn er z.B. auf 1 Minute steht ca. eine Minute nach beendeter Berechnung wieder anspringen. Oder hab ich dein problem ganz falsch verstanden?
jakobwenzel - Mo 07.11.05 21:22
Das war ja nur ein kleines Testprogramm, weil ich nicht so lang warten wollte. :oops:
Tilman - Mo 07.11.05 21:29
jakobwenzel hat folgendes geschrieben: |
Das war ja nur ein kleines Testprogramm, weil ich nicht so lang warten wollte. :oops: |
Wenn du den Schoner alle 2 sekunden an und ausstellst, dann ist er (fast) immer aktiviert. Dann ist es doch normal das er anspringt, oder?
jakobwenzel - Mo 07.11.05 21:31
Es ist aber überhaupt nicht passiert. :cry:
duffbartman - Mi 19.07.06 13:51
sorry wenn ich das thema wieder aufgreife, aber was muss ich eigentlich veranstallten, um die schoner für immer zu deaktivieren?? ich will das mein bildschirmschoner auch nach einem neustart deaktiviertr bleibt!!!
F34r0fTh3D4rk - Mi 19.07.06 14:00
Rechtsklick auf Monitor -> Eigenschaften -> Bildschirmschoner -> Bilschirmschoner: kein
duffbartman - Mi 19.07.06 16:47
F34r0fTh3D4rk hat folgendes geschrieben: |
Rechtsklick auf Monitor -> Eigenschaften -> Bildschirmschoner -> Bilschirmschoner: kein |
und das ganze jetzt bitte so, dass ich nur auf einen knopf im delphi programm klicken muss :)
F34r0fTh3D4rk - Mi 19.07.06 17:00
such mal in der registry
duffbartman - Mi 19.07.06 20:02
du bist wohl ein typ der wenigen worte was???
JayEff - Mi 19.07.06 20:20
hmm.. IIRC Setzt man auf die Art ob ein Bildschirmschoner läuft oder nicht. Sag Windows, DASS er läuft (mit der 1) und hoff, dass er nicht anspringt.)
Stop Falsch: Das war SPI_SETSCREENSAVERRUNNING(oder so). Versuchs damit.
Jakob Schöttl - Mi 19.07.06 21:19
du könntest es auch unelegant machen mit "SetCurser(x,y)". So glaub ich heißt der Befehl, mit dem man den Mauszeiger auf eine bestimmte Position setzen kann. du kannst mit Mouse.x und Mouse.y + 1 den Zeiger ein bisschen nach rechts verschieben, oder sonstwohin.
JayEff - Mi 19.07.06 21:34
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Procedure TForm1.Timer1Timer(Sender: TObject); Begin Case x Of true: SetCursorPos(Mouse.CursorPos.x + 1, Mouse.CursorPos.y + 1); false: SetCursorPos(Mouse.CursorPos.x - 1, Mouse.CursorPos.y - 1); End; x := Not x; End; |
x:boolean.
Funktioniert leider nicht. Der Bildschirmschoner sprang bei mir trotzdem an. Den Timer hatte ich auf 1 Sekunde, Die maus HAT sich bewegt... (Windoof XP Home)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!