Screen Saver verhindern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Screen Saver verhindern

    Kommen wir nun zu einem kleinen Alltagsproblem:

    Normalerweise finde ich es gut, dass nach ein paar Minuten der Bildschrim abschaltet. Manchmal aber so gar nicht. Zum Beispiel wenn ich EyeTV nicht auf Vollbild habe, weil nebenan noch ein ICQ-Fenster überwacht werden will. Da wäre es eigentlich ganz sinnvoll, das zu verhindern, ohne ständig die Einstellung für den Screensaver zu ändern. Meine Idee: ein kleines Progrämmchen ohne Fenster, das nichts anderes tut, als das einschalten des Screensavers zu verhindern. Müsste ja eigentlich ein Einzeiler sein. Dummerweise finde ich in der Dokumentation nichts dazu. Vielleicht suche ich auch irgendwie falsch?

    Hat jemand von euch einen kleinen Tipp parat?
  • Vielen Dank! Bin gerade dabei, das Progrämmchen zu basteln. Hab einen Timer gebaut, der alle 5 Sekunden (lässt sich ja noch variieren) eine Methode auslösen soll. Nur klappt das irgendwie nicht, die Funktion wird nicht aufgerufen.

    Hier mein Code:

    Quellcode

    1. - (void)timerFired {
    2. NSLog(@"Kinners, wie die Zeit vergeht...");
    3. }
    4. - (void)awakeFromNib {
    5. SEL theSelector;
    6. NSMethodSignature *aSignature;
    7. NSInvocation *anInvocation;
    8. NSTimer *theTimer;
    9. theSelector = @selector(timerFired);
    10. aSignature = [self methodSignatureForSelector:theSelector];
    11. anInvocation = [NSInvocation invocationWithMethodSignature:aSignature];
    12. [anInvocation setSelector:theSelector];
    13. theTimer = [NSTimer scheduledTimerWithTimeInterval:5 invocation:anInvocation repeats:YES];
    14. }
    Alles anzeigen


    Jemand eine Idee, was falsch läuft? Musste den Code aus der Dokumentation für die Timer-Erstellung etwas abwandeln und methodSignatureForSelector statt wie im Beispiel instanceMethodForSelector benutzen, weil das Programm sonst crashte. Bin auch nicht so der Crack und steige bei der Sache nicht ganz durch. Wahrscheinlich liegt es daran...
  • Zumindest musst Du noch in der NSInvocation das Target (in diesem Fall self) setzen. Kürzer geht's allerdings ganz ohne NSInvocation, etwa so:

    Quellcode

    1. - (void) timerFired:(NSTimer*)timer {
    2. UpdateSystemActivity(UsrActivity);
    3. }
    4. - (void) awakeFromNib {
    5. [NSTimer scheduledTimerWithTimeInterval:5.0
    6. target:self
    7. selector:@selector(timerFired:)
    8. userInfo:NULL
    9. repeats:YES];
    10. }
    Alles anzeigen
    Multigrad - 360°-Produktfotografie für den Mac
  • Ist es nicht ein bisschen zu krass dafuer gleich ein GUI-Tool zu machen? ich wuerde das ja so vorschlagen:

    C-Quellcode

    1. // (c) sneumann, 2006
    2. // main.c
    3. // compile with
    4. // cc -o main -framework Carbon -w -Wall main.c
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <CoreServices/CoreServices.h>
    8. #include <unistd.h>
    9. int main(int argc, char *argv[]){
    10. #pragma unused(argc)
    11. int updateInterval = atoi(argv[1]);
    12. // we get the updateInterval passed as the first argument
    13. // and convert it from char* to int
    14. while(1){
    15. UpdateSystemActivity(UsrActivity);
    16. sleep(updateInterval);
    17. }
    18. return 0;
    19. }
    Alles anzeigen


    sneumann

    Auf Wuensche von laeng geupdated ;)
    "We can make all our dreams come true, but first we have to decide to awaken from them.", Josephine Baker
  • Nunja, ein Kommandozeilentool, besonders wenn es ein Argument erwartet, kriege ich so schlecht im Dock untergebracht, oder? Bevor ich per Terminal das Progrämmchen starte, kann ich auch gleich in den Systemeinstellungen das Screen-abschalten deaktivieren. ;)

    @mattik: Vielen Dank, nu funztet. Das kommt davon, wenn man in der Doku den Wald vor lauter Bäumen nicht sieht. ;)
  • Hi,

    Was mich nun verwundert ist die Funktion des Funktionsargumentes in
    UpdateSystemActivity(UsrActivity). Anscheinend kann man jeden
    Wert den UInt8 (char) annehmen darf also 0-255 übergeben.
    Wäre es da nicht einfacher/logischer wenn man schlicht und einfach die Funktion so
    im Funktionsprototypen darstelt.

    Quellcode

    1. OSErr UpdateSystemActivity(void)


    C-Quellcode

    1. // (c) sneumann, 2006
    2. // main.c
    3. // compile with
    4. // cc -o main -framework Carbon -w -Wall main.c
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <CoreServices/CoreServices.h>
    8. #include <unistd.h>
    9. int main(int argc, char *argv[]){
    10. #pragma unused(argc)
    11. int updateInterval = atoi(argv[1]);
    12. /* UInt8 UsrActivity=255; */
    13. // we get the updateInterval passed as the first argument
    14. // and convert it from char* to int
    15. while(1){
    16. UpdateSystemActivity(UsrActivity);
    17. printf("\n%i\n",UsrActivity);
    18. sleep(updateInterval);
    19. }
    20. return 0;
    21. }
    Alles anzeigen


    cu
    Josef
  • Original von Josef
    Was mich nun verwundert ist die Funktion des Funktionsargumentes in
    UpdateSystemActivity(UsrActivity). Anscheinend kann man jeden
    Wert den UInt8 (char) annehmen darf also 0-255 übergeben.

    Kann man, man kann aber auch Power.h lesen.

    Quellcode

    1. /* System Activity Selectors */
    2. /* Notes: The IdleActivity selector is not available unless the hasAggressiveIdling PMFeatures bit is set. */
    3. /* Use IdleActivity where you used to use OverallAct if necessary. OverallAct will only */
    4. /* delay power cycling if it's enabled, and will delay sleep by a small amount when */
    5. /* hasAggressiveIdling is set. Don't use IdleActivity unless hasAggressiveIdling is set; when */
    6. /* hasAggressiveIdling is not set, the use of IdleActivity is undefined, and well do different */
    7. /* things depending on which Power Manager is currently running. */
    8. enum {
    9. OverallAct = 0, /* Delays idle sleep by small amount */
    10. UsrActivity = 1, /* Delays idle sleep and dimming by timeout time */
    11. NetActivity = 2, /* Delays idle sleep and power cycling by small amount */
    12. HDActivity = 3, /* Delays hard drive spindown and idle sleep by small amount */
    13. IdleActivity = 4 /* Delays idle sleep by timeout time */
    14. };
    Alles anzeigen


    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Danke!

    Alle anderen Werte von 5-255 ergeben einen Fehlercode von -50.

    C-Quellcode

    1. #include <stdio.h>
    2. #include <CoreServices/CoreServices.h>
    3. int main(void){
    4. int i;
    5. for(i=0;i<=255;i++){
    6. printf("\n%i : %i\n",i,UpdateSystemActivity(i));
    7. }
    8. return 0;
    9. }
  • LSUIElement statt LSUIElements müsste gehen.

    Wo schon alle fröhlich am Basteln sind: Wenn man jetzt noch temporär die aktiven Ecken abschalten könnte, wäre das der ideale Begleiter für Präsentationen. Nichts ist nerviger als ein einsetzender Bildschirmschoner, ein einschlafender Rechner oder das durch eine Ecke aktivierte Dashboard in 10qm Größe auf einer Projektionsfläche...
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von mattik
    Nichts ist nerviger als ein einsetzender Bildschirmschoner, ein einschlafender Rechner oder das durch eine Ecke aktivierte Dashboard in 10qm Größe auf einer Projektionsfläche...

    Vor allem nicht, wenn man das Hoola-Girl aufm Dashboard hat, oder? :D
    "Wales is the land of my fathers. And my fathers can have it." - Dylan Thomas
  • Original von hugoderwolf
    Nunja, ein Kommandozeilentool, besonders wenn es ein Argument erwartet, kriege ich so schlecht im Dock untergebracht, oder?
    [ snipped ]


    Und was ist mit ...

    << application wrappers around scripts >> ?

    Platypus
    MacUpdate
    Die erste Zeile der Bschreibung:
    Platypus is a powerful developer tool for creating application wrappers around scripts, i.e. for creating MacOS X applications that execute a bundled script.


    So habe ich flux eine .app geschrieben (eigentlich ein Shell-Skript) die/das beim Log-In im Hintergrund gestartet wird und die interne Mac-HD rauswirft & auch Datum/Zeit/IP-Adresse logt. very simple mind'ed


    arki

    ( wenn etwas zu * ist, um * zu sein, dann * doch einfach * )