2009-05-21 15 views
2

Je ne sais pas par où commencer. Commençons par les questions stupides:Créer un programme qui se trouve dans la barre des tâches de Windows et, lorsqu'il est activé, arrête l'économiseur d'écran du démarrage

Quelle langue dois-je utiliser pour cela? Qu'est-ce qui convient à la tâche à accomplir?

Ensuite, les vrais:

est-il un moyen d'arrêter l'économiseur d'écran de démarrage, à court de changer la position du curseur? Si non, va changer la position du curseur fonctionne même?

Répondre

1
  1. Votre programme n'a pas besoin d'être visible dans la barre des tâches.
  2. Vous n'avez même pas besoin d'un programme, si vous pouvez désactiver l'économiseur d'écran dans le registre. Ce que vous voulez faire peut être atteint en envoyant un événement MOUSE_MOVE à la fenêtre du bureau. Si vous voulez utiliser C# (la seule langue avec laquelle je suis actuellement en cours), vous pouvez regarder this article, mais peut-être qu'un simple programme C utilisant WinAPI est mieux adapté à cette tâche.
+1

Je crois que l'utilisateur voulait seulement désactiver l'économiseur d'écran pendant que leur application était en cours d'exécution. Et le veut dans la barre d'état système pour un accès facile à allumer/éteindre. Je pourrais être en train d'y lire trop. – Nate

+0

Vous avez raison. –

0

.NET vous permettra facilement de mettre une application dans la barre d'état système (vérifiez l'objet NotifyIcon dans System.Windows.Forms.Controls). Je crois que vous pouvez utiliser l'appel API SetCursorPos (http://msdn.microsoft.com/en-us/library/ms648394(VS.85).aspx) pour empêcher l'économiseur d'écran, assurez-vous juste de les définir à l'emplacement actuel afin que vous ne déplacez pas réellement la souris.

7

SetThreadExecutionState empêchera l'économiseur d'écran de se mettre en marche ou la machine de se mettre automatiquement en veille si vous passez les drapeaux ES_CONTINUOUS et ES_DISPLAY_REQUIRED.

2

J'ai écrit une application il y a quelque temps qui fait exactement ce que vous demandez. Il s'exécute en tant qu'icône dans la barre d'état système, et non dans la barre des tâches, et utilise un hook de message global pour désactiver la notification WM_SYSCOMMAND/SC_SCREENSAVE pour atteindre toutes les applications. Si cette notification n'atteint pas la fonction DefWindowProc(), l'économiseur d'écran ne sera jamais exécuté.