Passer pointeur via message à autre prog
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 :
Code:
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); |
et dans la méthode OnMessage d'un TApplicationEvents:
Code:
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;
} |
la valeur de wParam correspond bien à l'adresse pointée pas pMsg mais
Code:
*( (int*)Msg.wParam )
vaut "????"
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]