Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
862 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C/C#] Passage d'arguments d'une application à une autre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C#] Passage d'arguments d'une application à une autre

n°783847
kytine
:|
Posté le 01-07-2004 à 17:13:25  profilanswer
 

Voila mon problème : j'ai deux applications à réaliser, une en C# (1) et l'autre en C (2).
 
1 lance a un moment 2 et doit lui envoyer comme argument un numero de port pour que cette dernière puisse se connecter dessus.
 
Le hic, c'est que sous .NET (enfin comment j'ai fait), les arguments sont saisis dans les proprietes du projet qui genere l'application.  
 
Comment faire pour faire passer cet argument et le remplacer sans problème? :jap:
 
Merci d'avance :hello:


Message édité par kytine le 01-07-2004 à 17:30:58
mood
Publicité
Posté le 01-07-2004 à 17:13:25  profilanswer
 

n°783850
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-07-2004 à 17:18:26  profilanswer
 

Essaie d'envoyer tes paramètres par la fonction SendMessage de Win32 (ça t'oblige par contre à déclarer cette fonction dans ton programme C#).
Tu déclares un message personnalisé (WM_PORT par exemple), et tu le transmets à ton programme C en mettant le n° de port dans lParam par exemple.
Puis, dans ton programme C, tu interceptes le message WM_PORT dans la pompe à messages de ta fenêtre principale, et tu en récupères le lParam.
 
Autre moyen pour faire communiquer tes programmes entre eux : les sockets (mais à mon avis, pour le problème décrit, c'est un coup de canon pour tuer une mouche)


---------------
J'ai un string dans l'array (Paris Hilton)
n°783855
chrisbk
-
Posté le 01-07-2004 à 17:22:44  profilanswer
 

si ton appli C reside dans une DLL tu peux aussi utiliser une fonction c# externe avec l'attribut DllImport
 
ca rend un truc genre :

Code :
  1. [DllImport("maDll","maFonctionExportee" )]
  2. extern void maFonction(int numPort);


Message édité par chrisbk le 01-07-2004 à 17:23:31
n°783864
kytine
:|
Posté le 01-07-2004 à 17:28:46  profilanswer
 

Mon argument est envoyé par ma fonction d'appel de l'autre application, celle en C (c un collegue qui m'a aide parce que moi j'ai vraiment du mal :/)
 
Donc en gros a partir de ca, je peux flusher ma variable Port et la remplacer dedans directement?
 
Sinon ca m'interesse ta methode des socket (surtout que pour l'application en C# j'en utilise pour communiquer avec l'environnement exterieur) :)

n°783865
kytine
:|
Posté le 01-07-2004 à 17:29:17  profilanswer
 

chrisbk a écrit :

si ton appli C reside dans une DLL tu peux aussi utiliser une fonction c# externe avec l'attribut DllImport
 
ca rend un truc genre :

Code :
  1. [DllImport("maDll","maFonctionExportee" )]
  2. extern void maFonction(int numPort);



j'utilise pas les Dll :/
 
c limite si je savais pas ce que ct a mon arrivee :sweat:

n°784318
Tamahome
⭐⭐⭐⭐⭐
Posté le 02-07-2004 à 09:32:16  profilanswer
 

kytine a écrit :

Voila mon problème : j'ai deux applications à réaliser, une en C# (1) et l'autre en C (2).
 
1 lance a un moment 2 et doit lui envoyer comme argument un numero de port pour que cette dernière puisse se connecter dessus.
 
Le hic, c'est que sous .NET (enfin comment j'ai fait), les arguments sont saisis dans les proprietes du projet qui genere l'application.  
 
Comment faire pour faire passer cet argument et le remplacer sans problème? :jap:
 
Merci d'avance :hello:


 
euh c'est vraiment tout con ca... comment tu lances l'appli 2 via l'appli 1 ? (dans le code)  
 
Car il suffit de rajouter ton n° de port apres le nom du fichier (comme un argument normal quoi) et dans l'appli 2, tu recuperes ca dans le  

Code :
  1. int main(char **argc, int argv)
  2.    {
  3. }


Message édité par Tamahome le 02-07-2004 à 09:33:38
n°784328
kytine
:|
Posté le 02-07-2004 à 09:41:53  profilanswer
 

merchi :)
 
et dans les proprietes du projet je mets quoi alors? :sweat:
 
Desolee de vous embeter : apparemment ca a l'air con mais j'ai du mal en ce moment :sweat:

n°784398
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-07-2004 à 10:11:17  profilanswer
 

kytine a écrit :

merchi :)
 
et dans les proprietes du projet je mets quoi alors? :sweat:
 
Desolee de vous embeter : apparemment ca a l'air con mais j'ai du mal en ce moment :sweat:


ce qu'il faudrait qu'on sache, c'est si tu souhaites transmettre le n° de port à partir du code de l'appli 1.
car si c'est pas le cas, alors la soluce de Tamahome suffit largement.
sinon, pour en revenir aux sockets, c'est tout con :
- tu créé un socket serveur dans l'appli 2 (celle qui devra récupérer le port)
- tu met ce socket en écoute sur un port que tu auras toi même défini
- dans l'appli 1, tu créé un autre socket, qui se connectera à celui de l'appli 2 via le numéro de port
- puis tu utilises ce socket client pour envoyer ta donnée au socket serveur de l'appli 2
comme je te disais, c'est lourd pour ce que tu souhaites faire


---------------
J'ai un string dans l'array (Paris Hilton)
n°784425
kytine
:|
Posté le 02-07-2004 à 10:24:18  profilanswer
 

Alors voila : mon application 1 recoit des informations d'invite d'ouverture de session sip et en gros y a un message Mime avec la description de toute la session dedans.
Je recupere le numero du port RTP qu'il ouvre et c ce numero de port que je veux envoyer a l'appli 2 :)
 
Donc je pense que la solution de tamahome suffit nan?
 
En plus j'ai cru entendre que les sockets en C c assez bourrin :sweat:

n°784428
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-07-2004 à 10:28:01  profilanswer
 

dans ce cas, oui, la soluce de Tamahome est suffisante. un petit ShellExecute dans ton appli 1 pour lancer l'appli 2 avec l'argument, et ça roule (autant tout faire en automatique :D)


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 02-07-2004 à 10:28:01  profilanswer
 

n°784431
Tamahome
⭐⭐⭐⭐⭐
Posté le 02-07-2004 à 10:30:05  profilanswer
 

non les sockets en C sont assez simple à mettreen oeuvre, le seul truc dangereux c'est de bien vérfier les buffer overflow (ben oui, le C et les char* ...)
 
Sinon, comment tu lances ton appli 2 via ton appli 1 ?  
 
tu utilises un truc comme ca :
 

Code :
  1. ProcessStartInfo v_myStartInfo = new ProcessStartInfo();
  2.       v_myStartInfo.CreateNoWindow = true;
  3.       v_myStartInfo.RedirectStandardError = true;
  4.       v_myStartInfo.UseShellExecute = false;
  5.       v_myStartInfo.RedirectStandardOutput = true;
  6.       v_myStartInfo.Arguments = p_Arg;
  7.       v_myStartInfo.FileName = p_fullpathApplication;
  8.       v_myStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  9.       Process v_myProcess = Process.Start(v_myStartInfo);
  10.       v_myProcess.WaitForExit(p_timeout);


Message édité par Tamahome le 02-07-2004 à 10:30:23
n°784438
kytine
:|
Posté le 02-07-2004 à 10:33:08  profilanswer
 

merci :)
 
on m'avais filer deja un bout de code pour lancer mon appli a partir du c# :jap:

n°784440
kytine
:|
Posté le 02-07-2004 à 10:33:55  profilanswer
 

Harkonnen a écrit :

dans ce cas, oui, la soluce de Tamahome est suffisante. un petit ShellExecute dans ton appli 1 pour lancer l'appli 2 avec l'argument, et ça roule (autant tout faire en automatique :D)

c clair :D

n°784950
kytine
:|
Posté le 02-07-2004 à 14:55:32  profilanswer
 

je voulais juste dire que ca marchait nickel (je m'etais trompe dans le passage d'une variable :D)
 
Merchi a tout ceux qui m'ont aide :jap:

n°785217
Tamahome
⭐⭐⭐⭐⭐
Posté le 02-07-2004 à 18:50:09  profilanswer
 

pas de koiche


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°785350
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-07-2004 à 21:53:02  profilanswer
 

ce fut un plaisir :o
(asv ? [:cupra])


---------------
J'ai un string dans l'array (Paris Hilton)
n°785380
Tamahome
⭐⭐⭐⭐⭐
Posté le 02-07-2004 à 23:19:27  profilanswer
 

Harkonnen a écrit :

ce fut un plaisir :o
(asv ? [:cupra])


 
 :lol:  :lol:  :lol:


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°785401
kytine
:|
Posté le 02-07-2004 à 23:35:06  profilanswer
 

Harkonnen a écrit :

ce fut un plaisir :o
(asv ? [:cupra])

ah non pas ici :o
 
je veux bien le donner mais alors on m'aide dans mon prog :whistle: :D

n°785411
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-07-2004 à 23:41:58  profilanswer
 

je peux même te le faire entièrement si tu veux [:cupralf]


---------------
J'ai un string dans l'array (Paris Hilton)
n°785421
kytine
:|
Posté le 02-07-2004 à 23:56:04  profilanswer
 

Harkonnen a écrit :

je peux même te le faire entièrement si tu veux [:cupralf]

mp :o
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
non je rigole :D
 
de l'aide suffira :o

n°785426
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-07-2004 à 23:59:22  profilanswer
 

et merde, encore un ratal [:sisicaivrai]
 
edit: je suis vraiment une sous merde, j'arrive meme pas à draguer une nerdzette [:sisicaivrai]


Message édité par Harkonnen le 02-07-2004 à 23:59:55

---------------
J'ai un string dans l'array (Paris Hilton)
n°785436
kytine
:|
Posté le 03-07-2004 à 00:09:09  profilanswer
 

Harkonnen a écrit :

et merde, encore un ratal [:sisicaivrai]
 
edit: je suis vraiment une sous merde, j'arrive meme pas à draguer une nerdzette [:sisicaivrai]

:heink:  
 
et pis celine ne serait pas contente :o
 
un truc je pense tout con mais que je retrouve pas :o comment on fait pour fermer l'application en C? [:boidleau]

n°785445
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-07-2004 à 00:19:38  profilanswer
 

kytine a écrit :


un truc je pense tout con mais que je retrouve pas :o comment on fait pour fermer l'application en C? [:boidleau]


exit() [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton)
n°785452
kytine
:|
Posté le 03-07-2004 à 00:24:37  profilanswer
 

je me disais bien [:boidleau]

n°785454
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-07-2004 à 00:25:29  profilanswer
 

[:lorill]


---------------
J'ai un string dans l'array (Paris Hilton)
n°785458
kytine
:|
Posté le 03-07-2004 à 00:27:48  profilanswer
 

[:icon9]
 
Bon je reviens lundi avec mes questions hein :o
 
Bonne nuit :)

n°785460
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-07-2004 à 00:28:55  profilanswer
 

gout de night :ange:


---------------
J'ai un string dans l'array (Paris Hilton)
n°785461
kytine
:|
Posté le 03-07-2004 à 00:29:34  profilanswer
 

:non: good night :o

n°788830
kytine
:|
Posté le 07-07-2004 à 10:40:54  profilanswer
 

kytine a écrit :

:heink:  
 
et pis celine ne serait pas contente :o
 
un truc je pense tout con mais que je retrouve pas :o comment on fait pour fermer l'application en C? [:boidleau]

et si je veux que ce soit mon application en C# qui ferme mon application en C? qqn a des conseils [:cupra]

n°788939
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-07-2004 à 12:04:48  profilanswer
 

kytine a écrit :

et si je veux que ce soit mon application en C# qui ferme mon application en C? qqn a des conseils [:cupra]


Oui, là encore tu peux utiliser l'API, même en C# :
- un petit coup de

Code :
  1. [DllImport("User32.Dll" )]
  2. public static extern IntPtr PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);


pour envoyer un message à ton programme en C,
- un petit coup de  

Code :
  1. [DllImport("user32.dll",EntryPoint="FindWindow" )]
  2. private static extern int FindWindow(string _ClassName, string _WindowName);


pour récupérer le handle de ton programme C à partir de sa fenêtre
- et un petit coup de

Code :
  1. PostMessage(handle, WM_QUIT, 0, 0);


dans ton programme C# pour fermer le programme en C (handle = handle du programme C récupéré via FindWindow)


---------------
J'ai un string dans l'array (Paris Hilton)
n°789066
kytine
:|
Posté le 07-07-2004 à 13:25:24  profilanswer
 

je vais essayer ca :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C/C#] Passage d'arguments d'une application à une autre

 

Sujets relatifs
[RESOLU]passage par l'url en asp[PHP] Commande exec - probleme de passage de parametres
Passage de variable par cookieJava application -> connection sqlserver Pbm driver dans Manifest
HTML et php passage de valeurFaire un echo ds la partie réservée au arguments dans une fonction ?
[MySQL]fonction sum avec plusieurs arguments???Passage de variable entre 2 langages : JavaScript et CGI - C
Passage de parametres dans une URL en ASP[Batch] Script pour mesurer le temps de lancement d'une application
Plus de sujets relatifs à : [C/C#] Passage d'arguments d'une application à une autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR