Salut,
je bosse sur un projet d' economiseur d ecran , comme le programme est dependant de nombreux fichiers externes et dll , son install est prevu dans c:/program files ou tout autre dossier
lors du lancement seul un tout petit programme regarde si des parametres ont ete passé au screensaver et lance au choix, soit la preview, soit le screensaver lui meme, soit le panneau de configuration du logiciel
pour la preview et le panneau de config tout va bien , quand on double clique sur le fichier .scr dans system32 tout va bien aussi : le programme se lance correctement
par contre si on attends le temps ecoulé pour la mise en route automatique de l ecran de veille par windows, le programme ne se lance pas ! :
la souris passe de l etat normal au sablier rapidement comme ci le programme tentait de se lancer en boucle et se terminait de suite...
ca ne semble pas un probleme de path car le programme trouve bien les fichiers quand on le lance directement en double cliquant depuis /system32
voici le code (simplifé l appel)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include <windows.h> #include <shellapi.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) { char *c; c = GetCommandLine(); while(*c != ' ') c++; if(*(c + 2) == 'p' || *(c + 2) == 'P'){ // mode preview HWND hwnd; //...etc.. --> ok return 0; } else if(*(c + 2) == 'c' || *(c + 2) == 'C') { // panneau de configuration du screensaver SetCurrentDirectory("C:\\program/"); ShellExecute(NULL,"open","C:\\program/config_program.exe",NULL,"C:\\program/", SW_SHOW); // --> aucun probleme return 0; } SetCurrentDirectory("C:\\program/"); ShellExecute(NULL,"open","C:\\program/program.exe",NULL,"C:\\program/", SW_SHOW); // --> PROBLEME return 0; }
quelqu un a t il une idée de la source de ce probleme et de comment le corriger ?
Partager