j'avais un problème : mon programme se lançait plusieurs fois lorsque l'on sélectionnait plusieurs fichiers dans l'explorateur et qu'on appuyait sur "Entrée".
Ca c'est résolu.
MAIS
j'aimerai que les autres instances du programme, avant de se fermer, envoient leurs paramètres au programme déjà lancé.
J'ai donc mis en place un petit message : WM_ADDFILE
en me disant que je pourrais mettre en wParam un pointeur sur la chaine de paramètres.
non.
ça ne fonctionne pas.
Pour voir j'ai essayé de passer juste un pointeur sur un entier, ça donne ça :
dans le WinMain :
et dans la méthode OnMessage d'un TApplicationEvents:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #define WM_ADDFILE (WM_USER + 2005) ... int* pMsg; pMsg = new int; AnsiString s = (int)pMsg; //on affiche l'adresse pointée MessageBox(NULL, s.c_str(), "toto", MB_OK); PostMessage(hPreviousInstance, WM_ADDFILE, (WPARAM)pMsg, NULL);
la valeur de wParam correspond bien à l'adresse pointée pas pMsg mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if (Msg.message == WM_ADDFILE) { if (*( (int*)Msg.wParam ) == 24) MessageBox(NULL, "message24", "titi", MB_OK); else MessageBox(NULL, "echec24", "titi", MB_OK); delete (int*)Msg.wParam; Handled = true; }vaut "????"
Code : Sélectionner tout - Visualiser dans une fenêtre à part *( (int*)Msg.wParam )
euh... pourquoi ?
quelle autres solutions pour passer les paramètres du programme au programme déjà présent ?
[Modération, Alacazam : Prière d'utiliser un langage correct, merci]
Partager