CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[API W32] Com entre 2 instances d'1 prog

JujuDredd
JujuDredd
Niveau 10
12 avril 2008 à 19:23:30

Bon, j'ai trouvé grâce à Dnob un moyen simple pour qu'un utilisateur n'ouvre pas deux fois le même prog : avec un mutex (mais bon ça peut marcher qu'avec une version récente de Windows et il y avait un moyen de le faire avec Windows 95 alors si vous avez d'autres méthodes à me proposer ça m'intéresse).

Par contre y'a un truc que je trouve pas, c'est comment faire communiquer un nouveau lancement de programme avec l'ancien. Je donne un exemple : faites "enqueue in Winamp" alors que Winamp est déjà lancé, et vos mp3 se rajoutent à la fin de la plalist. Or, si je ne me trompe pas, Windows doit lancer une nouvelle instance de Winamp, et donc cette instance se contente de communiquer le/les fichiers à ouvrir à l'instance déjà en cours. Comment faire ?

J'ai essayé de voir avec les pipes, mais y'a un truc qui m'embête : j'ai l'impression que ça ma merdouiller si deux utilisateurs utilisent le mon prog conjointement sur le même poste un Pipe du même nom.

godrik
godrik
Niveau 30
13 avril 2008 à 04:13:02

il faut probablement entrer le pid de l'utilisateur dans le nom du pipe.

JujuDredd
JujuDredd
Niveau 10
13 avril 2008 à 10:32:04

Ah, j'ai trouvé !

http://msdn2.microsoft.com/en-us/library/aa366556(VS.85).aspx

Les File Mapping on l'air plus adapté à la communication entre deux processus sur un même ordi que les pipes. Mais, tout comme les pipe, ils ne sont supportés qu'à partir de Windows XP.
Personne n'a une idée pour les Windows précédents ?

dnob700
dnob700
Niveau 10
13 avril 2008 à 23:00:36

"mais bon ça peut marcher qu'avec une version récente de Windows et il y avait un moyen de le faire avec Windows 95 alors si vous avez d'autres méthodes à me proposer ça m'intéresse"

Qu'est ce que tu utilise comme fonction ? les mutex existent largement depuis win95, donc sauf si tu prend les versions ...Ex des fonctions quand elles existent, ton programme devrait marcher même sur des vieux windows.

Pour la communication entre processus, fait comme le dit godrik avec le nom de l'utilisateur dans le nom du pipe. Je ne sais pas vraiment si c'est la méthode standard de windows (je n'ai jamais fait ça), mais le file mapping (mmap pour les unix-iens) n'est pas fait pour ça du tout (même si ça pourrait marcher), entre autre car il ne serait pas facile d'être prévenu d'une modification du fichier par un autre processus.

Bon, mais en fait, la "bonne" méthode c'est d'utiliser un message (SendMessage). Je me demande si tu peut envoyer un pointeur de chaîne en paramètre à un message où si la mémoire de ton autre programme ne peut même pas être lue par le premier. Il faudrait tester.

JujuDredd
JujuDredd
Niveau 10
13 avril 2008 à 23:28:42

"Qu'est ce que tu utilise comme fonction ? les mutex existent largement depuis win95, donc sauf si tu prend les versions ...Ex des fonctions quand elles existent, ton programme devrait marcher même sur des vieux windows."

...

http://msdn2.microsoft.coom/en-us/library/ms682411.aspx
"Client : Requires Windows Vista, Windows XP, or Windows 2000 Professional."

:d)

Spa ma faute si msdn raconte des bobards...

JujuDredd
JujuDredd
Niveau 10
13 avril 2008 à 23:36:03

Bon, j'ai vérifié sur Windows 98 et les mutex fonctionnent.
C'est quoi ce bordel ? :noel:
Comment je fait pour savoir si un truc ou un bidule va marcher sous Windows 98 si MSDN raconte des conneries ? :hap:

dnob700
dnob700
Niveau 10
14 avril 2008 à 00:14:19

je pense que c'est parce que la msdn ne supporte plus ces versions de windows qu'elle ne les indique pas. C'est bête mais en même temps, il n'y a plus beaucoup de monde qui utilisent ces versions...

De vieilles versions de la msdn doivent pouvoir se trouver.

JujuDredd
JujuDredd
Niveau 10
14 avril 2008 à 00:24:44

Ouais, bravo Macrosoft. Il faut XP SP2 pour IE 7 alors que firefox tourne sous Win 98.

OK, j'ai une vieille version sur des CD qu'on m'a donnés. Mais on peut l'utiliser si on a pas visual installé ? Enfin si, j'ai Visual C 2008 Express, mais je suis sûr qu'il va pas me reconnaître mon MCDN trop vieux...

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment