Je cherche à faire un truc super basique mais sans me prendre la tête.
J’ai une appli qui se lance. Elle vérifie si une instance d’elle-même n’est pas déjà en train de tourner. Si c’est le cas elle envoie un message à la fenêtre de l’appli déjà existante, puis quitte.
Le problème c’est que je voudrais transmettre la ligne de commande à l’appli déjà existante. Il y a bien tout le système de shared memory (file mapping) ou même le clipboard mais ça m’oblige à écrire plein de code.
Comme je suis un gros fainéant, je me demandais s’il n’existait pas quelques fonctions toutes simples pour faire ça.
Genre faire :
ptr=AllocSharedString()
strcpy(ptr,cmdline);
SendMessage(wnd,WM_USER+30,(WPARAM)ptr,0);
et de l’autre côté :
case (WM_USER+30):
do_plein_de_choses((char*)wParam);
FreeSharedString(wParam);
épicétou !
SendMessage est effectivement une très bonne solution a ton probleme. L’inconvenient étant effectivement de savoir qui alloue la mémoire… J’ai moi même utilisé le systeme pour passer des messages a WinAmp, mais comme j’utilisais alors un systeme managé (VB, puis C#), c’est pas moi qui me suis fais chier avec la mémoire.
Faudrait regarder du coté des How To ayant rapport a SendMessage.
…
Sinon, regarde le message WM_COPYDATA…
Re-Edit :
En effet, WM_COPYDATA a l’air d’être LE message a utiliser. t’as un exemple du comment dans la MSDN.
[quote name=‹ Tzim › date=’ 19 Jun 2005, 13:08’]Re-Edit :
En effet, WM_COPYDATA a l’air d’être LE message a utiliser. t’as un exemple du comment dans la MSDN.
[right][post=« 369807 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Merci pour les infos.
Bon finalement je suis allé au plus simple et au plus trash : File Mapping perso + SendMessage.
Comme j’ai un fichier INI pour l’application, la nouvelle instance écrit dedans et peut quitter, tandis que l’instance existante reçoit le message et va donc lire le fichier INI.
Bête et méchant mais fonctionne bien
Yes, je confirme WM_COPYDATA c’est fait pour, mefie toi des cas ou ton appli cible ne pompe plus car dans ce cas tu te retrouve avec deux process bloques complet au lieu d’un.
[quote name=‹ GloP › date=’ 19 Jun 2005, 22:52’]…mefie toi des cas ou ton appli cible ne pompe plus…
[right][post=« 369926 »]<{POST_SNAPBACK}>[/post][/right][/quote]