Lancer l'appli heure/zone horaire windows depuis C++

Lancer l'appli heure/zone horaire windows depuis C++ - C++ - Programmation

Marsh Posté le 09-06-2009 à 00:26:35    

Salut,
 
Est-il possible de lancer le dialogue Windows de changement d'heure/zone horaire/date via une ligne de commande C++?
 
 

Reply

Marsh Posté le 09-06-2009 à 00:26:35   

Reply

Marsh Posté le 09-06-2009 à 12:31:45    

Cette boite de dialogue est une application du panneau de control qui peut être lancée de différentes manières, voir http://vlaurie.com/computers2/Articles/control.htm (mais ce n'est pas l'une des boîtes de dialogue "communes", et donc on ne peut pas la lancer comme la fenêtre de choix d'un fichier ou d'une couleur.)  
 
La ligne de commande la plus simple est :

control timedate.cpl

Testé avec Windows XP, mais il parait qu'il y a eu quelques changements avec Windows Vista. Voir http://blogs.technet.com/deploymen [...] shell.aspx .

Reply

Marsh Posté le 10-06-2009 à 23:39:27    

Merci olivthill
 
En effet en utilisant un ShellExecute ca a marche:

Code :
  1. ShellExecute( 0, "open", "control.exe", "sysdm.cpl", 0, SW_SHOW );


 
Par contre maintenant, j'ai un autre probleme. Le SW_SHOW argument ne prend pas en compte la position en z de la fenetre.  
Je lance ce shell depuis un MFC/thread completement independant.
J'ai essaye plusieurs methodes pour pouvoir recuperer un "handle" de la fenetre "Date and Time Properties" mais rien a faire.

Code :
  1. hwnd = FindWindow(NULL,TEXT("Date and Time Properties" ));
  2. SetWindowPos(hwnd,HWND_TOP,100,100,100,100,SWP_NOSIZE);


 
mais hwnd revient "unused".
Donc mes questions sont:
Est il possible de recuperer le handle d'un dialogue qui n'appartient pas au mfc/thread en cours?
J'ai aussi essaye ca
 

Code :
  1. ShellExecute( hwnd, "open", "control.exe", "sysdm.cpl", 0, SW_SHOW );


mais pareil, hwnd revient inutilisable.
Le dernier truc que j'ai essaye est ca:
 

Code :
  1. int g_nCount=0;
  2.    int g_nFount=0;
  3. BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
  4. {
  5.    char strg[81];
  6.    GetWindowText(hwnd,strg,80);
  7.    if(strcmp("System Properties",strg)==0)
  8.    {
  9.       g_nFount=1;
  10.       return FALSE;
  11.    }
  12.    g_nCount++;
  13.    return TRUE;
  14. }
  15. EnumDesktopWindows(NULL, EnumWindowsProc, lParam);


mais sans succes car il y a des dizaines de fenetres et strg semble avoir un nom bizarre (Je n ai rien vu qui ressemblait a Date and Time Properties lors de mon debug)
Quelqu'un a une idee?

Reply

Marsh Posté le 11-06-2009 à 20:37:22    

up

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed