Lancér Notepad à partir d'un programme C++ - Programmation
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 ...
Marsh Posté le 13-08-2001 à 15:45:59
Où puis je trouver un example de utilisation de ces fonctions??
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
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"
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]
Marsh Posté le 13-08-2001 à 23:52:20
et plus simplement, Winexec(chemin d'acces, paramètres) ;
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é.
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...
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
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