2011-03-12 6 views

Répondre

5

afaik il y a deux façons:

  1. enregistrement permanent en copiant vers un emplacement que les recherches de fenêtres, comme System32. Mais ne codez pas "C: \ Windows \ System32". Vous devez interroger le système pour savoir où se trouve le répertoire système.
  2. Appel de l'action Install sur le fichier .scr, ce qui entraîne une activation temporaire. Mais l'économiseur d'écran disparaîtra une fois que l'autre aura été sélectionné et que la boîte de dialogue aura redémarré.

Mais cela vient de Win95 fois, donc c'est peut-être obsolète.


Je vois trois façons d'appeler install:

  1. ShellExecute (Ex) en utilisant le verbe install
  2. Appel rundll32.exe desk.cpl,InstallScreenSaver %l
  3. de charge desk.cpl comme bibliothèque (LoadLibrary ou en déclarant une importation pour InstallScreenSaver) puis appelez la méthode InstallScreenSaver avec votre propre chemin en tant que paramètre.
+2

Probablement pas démodé je soupçonne! –

+1

Comment appeler l'action "install" par programme? – user626528

+0

@user a ajouté quelques idées sur cela – CodesInChaos

0

Cela a fonctionné pour moi 32 ou systèmes 64bit simplement en enregistrant à partir du dossier principal de Windows. (pas System32 ou Syswow64).

Pour répliquer un menu contextuel 'install' utilisation:

Copy .scr to Windows folder. 

alors (comme ci-dessus)

rundll32.exe 
-> Parameters: "desk.cpl,InstallScreenSaver {win-loc-constant}\YourScreenSaver.scr" 

^Il y a trop de façons de le faire 'programme' à la liste chaque - si vous ne savez pas comment utiliser ce qui précède dans votre code, essayez Google + 'Votre-lang + windows api + rundll32 ShellExecute' etc.

Pour forcer l'emplacement/scr par registre (pas incité - semble fonctionner):

HKCU\Control Panel\Desktop\ 
Name: SCRNSAVE.EXE; 
Type: string; 
Data: {win-location-constant}\YourScreenSaver.scr 

à la force comme actif dans le registre:

HKCU\Control Panel\Desktop\ 
Name: ScreenSaveActive 
Type: string 
Data: 1 
+0

Pourquoi voulez-vous le placer dans le répertoire Windows et non dans 'System32'? Bien que cela fonctionne, il ne suit pas ce que Microsoft fait avec leurs propres économiseurs d'écran. – CodesInChaos

+0

@CodesInChaos: Je pense que c'est une convention de l'ère 9x, où les utilisateurs avaient un accès en écriture garanti à% WINDIR%, mais pas nécessairement à System32. – efotinis

Questions connexes