Lancér Notepad à partir d'un programme C++

Lancér Notepad à partir d'un programme C++ - Programmation

Marsh Posté le 13-08-2001 à 13:30:10    

Salut les gars,
 
je suis en train de faire (pour le fun...) une appli Win32 et j'aimerai qu'à un moment donné cette appli ouvre un fichier Note Pad, que l'utilisateur puisse écrire dedans. Puis il faudrait que l'appli puisse commander la sauvegarde du .txt créé.
 
A vrai dire je n'ai aucune idée de la manière dont il faut que je m'y prenne. je crois que ca à voir avec les objets COM, mais bon...
 
Merci d'avance

Reply

Marsh Posté le 13-08-2001 à 13:30:10   

Reply

Marsh Posté le 13-08-2001 à 13:52:53    

Pour ouvrir un programme :
 ShellExecute
Pour ouvrir un programme et et pour que l'appli qui ouvre puisse le fermer :
 CreateProcess
 
Pour pouvoir faire executer des commandes par un application lancée par une autre application :
 Méthode propre : met il faut que l'application qui lance soit un "client COM" et que l'application commandée soit un " serveur COM" ( ce qui n'est pas le cas du NotePad)
 Methode bidouille :
Récuperer le Handle de la fenetre du notepad et lancer des évenement  du type WM_LBUTTONDOWN ...

Reply

Marsh Posté le 13-08-2001 à 15:45:59    

Où puis je trouver un example de utilisation de ces fonctions??

Reply

Marsh Posté le 13-08-2001 à 15:50:51    

Dans l'aide sur les API Win32 ( fournis en général avec le compilateur)
ou sur msdn.microsoft.com

Reply

Marsh Posté le 13-08-2001 à 16:00:57    

salut,
 
'ai retrouvé ce vieu truc en C d'un vieu prog
 
<pre>
void  manuel(HWND hwnd,char *fiche)
{
   char command[300];
   char chemin1[300];
   char chemin2[300];
   LPTSTR val;
 
  HANDLE Pross;
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
 
  memset(command,0,300);
  memset(chemin1,0,300);
  memset(chemin2,0,300);
 
  if(recherche_wordpad(chemin1) != 0)
  {
   GetFullPathName(fiche,MAX_PATH,chemin2,&val);
   strcpy(command,"wordpad.exe " );
   strcat(command,chemin2);
   ZeroMemory(&si,sizeof(STARTUPINFO));
   ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
   si.cb = sizeof(STARTUPINFO);
   CreateProcess(chemin1,command,NULL, NULL,FALSE,IDLE_PRIORITY_CLASS, NULL, NULL, &si, &pi);
   Pross = pi.hProcess;
 
   WaitForSingleObject(&Pross,INFINITE);
 
   CloseHandle( pi.hProcess );
   CloseHandle( pi.hThread );
  }
  else
  {
    wsprintf(command,"Wordpad.exe est introuvable \n Veuillez le copier dans le \n répertoire de LOG2PI.exe" );
    MessageBox(hwnd,command,"WORDPAD INTROUVABLE",MB_OK|MB_ICONASTERISK);
  }
  RedrawWindow(hwnd,NULL,NULL,RDW_ERASE | RDW_INVALIDATE);
  lulu(hwnd);
}
</pre>
 
fichie1 contient le nom du fichier.doc exemple. "manuel.doc"

Reply

Marsh Posté le 13-08-2001 à 16:03:03    

ah et la fonction recherche wordpad ressemble a  
 
<PRE>
int recherche_wordpad(char *chemin)
{
  LPTSTR val;
 
  if(SearchPath("C:\\Program Files\\Windows NT\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
  {
   if(SearchPath("D:\\Program Files\\Windows NT\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
     {
    if(SearchPath("C:\\Program Files\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
    {
     if(SearchPath("D:\\Program Files\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
           {
             return(0); /* echec ... proposer de mettre Wordpad dans le repertoire */
           }
    }
     }
  }
  return(1);
}
 
</PRE>

 

[edtdd]--Message édité par barbarella--[/edtdd]

Reply

Marsh Posté le 13-08-2001 à 16:38:26    

Je vous remercie de votre aide... :hello:

Reply

Marsh Posté le 13-08-2001 à 23:52:20    

et plus simplement, Winexec(chemin d'acces, paramètres) ;

Reply

Marsh Posté le 14-08-2001 à 08:40:53    

j'avoue ne pas avoir trop suivi l'actualité des API Windows.
 
Micro$ a réintégré winexec ? car elle n'avait été conservée dans l'API32 qu'a des  fins de compatibilité.

Reply

Marsh Posté le 14-08-2001 à 10:37:55    

barbarella a écrit a écrit :

j'avoue ne pas avoir trop suivi l'actualité des API Windows.
 
Micro$ a réintégré winexec ? car elle n'avait été conservée dans l'API32 qu'a des  fins de compatibilité.  




 
ben oui :) Je m'en suis servi y'a 2 mois environ...

Reply

Marsh Posté le 14-08-2001 à 10:37:55   

Reply

Marsh Posté le 14-08-2001 à 10:45:15    

barbarella a écrit a écrit :

ah et la fonction recherche wordpad ressemble a  
 
<PRE>
int recherche_wordpad(char *chemin)
{
  LPTSTR val;
 
  if(SearchPath("C:\\Program Files\\Windows NT\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
  {
   if(SearchPath("D:\\Program Files\\Windows NT\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
     {
    if(SearchPath("C:\\Program Files\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
    {
     if(SearchPath("D:\\Program Files\\Accessoires","wordpad.exe",NULL,MAX_PATH,chemin,&val) == 0)
           {
             return(0); /* echec ... proposer de mettre Wordpad dans le repertoire */
           }
    }
     }
  }
  return(1);
}
 
</PRE>  
 
 




 
Plus simple : chopper le contenu de la clef : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE

Reply

Sujets relatifs:

Leave a Replay

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