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

  FORUM HardWare.fr
  Programmation
  Divers

  En C#, VBS ou autre : retrouver une appli qui tourne avec Citrix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

En C#, VBS ou autre : retrouver une appli qui tourne avec Citrix

n°1273805
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-12-2005 à 17:30:41  profilanswer
 

Salut,
 
Au boulot, afin de donner l'accès à un ERP aux clients "éloignés" (hors du réseau local) on utilise un serveur Citrix qui fait tourner le client de l'ERP.
 
Citrix, c'est une version améliorée de Terminal Serveur (ce sont les gars qui ont développé TS pour M$ qui ont rompu leur contrat avec Microsoft, et on fait évoluer TS pour en faire Citrix de ce que j'ai compris).
 
Le seul souci, c'est que j'ai produit des éditions qui génèrent un fichier Excel.
Hors, Excel n'est pas installé sur Citrix. Idem pour celles qui font un PDF (enfin là c'est un autre problème mais on le laisse de coté pour le moment).
 
Le but du jeu sera alors de générer un fichier HTML, XML ou autre, et le charger dans IE.
 
Via code, on peut normalement aisément intercepter IE qui tourne en local afin de récupérer le contenu de la page par exemple.
 
J'aimerais donc écrire un petit programme résident, qui check régulièrement si un document est chargé dans une fenêtre IE ou autre sur Citrix, en récupérer le contenu, créer un document temporaire, puis lancer le document dans l'application qui va bien en local.
 
Seulement, je ne sais pas du tout comment accéder à Citrix depuis un programme...


Message édité par Arjuna le 28-12-2005 à 11:08:57
mood
Publicité
Posté le 27-12-2005 à 17:30:41  profilanswer
 

n°1273808
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-12-2005 à 17:34:16  profilanswer
 

Avec ça, je dois pouvoir sans problème retrouver mes petits parmi les processes :
 
http://msdn.microsoft.com/library/ [...] cesses.asp
 
Mais ensuite, comment aller jouer dedans et retrouver les méthodes... ?

n°1273814
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-12-2005 à 17:50:56  profilanswer
 

J'arrive à butter Notepad, ou récupérer le titre de la fenêtre, ou même l'adresse mémoire où il se trouve, mais aucune idée de quoi en faire après...
 

Code :
  1. private void Form1_Load(object sender, System.EventArgs e)
  2.  {
  3.   System.Diagnostics.Process[] myProcesses;
  4.   myProcesses = System.Diagnostics.Process.GetProcesses();
  5.   foreach (System.Diagnostics.Process instance in myProcesses)
  6.   {
  7. //    instance.WaitForExit(3000);
  8.     if (instance.MainWindowTitle.IndexOf("- Bloc-notes - \\\\Distant, SSL/TLS 128 bits." ) > 0)
  9.    {
  10.     instance.CloseMainWindow();
  11.     /*
  12.     MessageBox.Show(instance.MainWindowTitle);
  13. //     System.Diagnostics.ProcessModuleCollection myModules;
  14. //     myModules = instance.Modules;
  15.     MessageBox.Show(instance.MainModule.ModuleName);
  16.     MessageBox.Show(instance.MainModule.FileName);
  17. //     foreach(System.Diagnostics.ProcessModule module in myModules)
  18. //     {
  19. //      MessageBox.Show(module.ModuleName);
  20. //     }
  21.     System.IntPtr ptr = instance.MainModule.BaseAddress;
  22.     MessageBox.Show(ptr.ToString());
  23. */
  24.    }
  25.   }
  26.  }

n°1273817
theshockwa​ve
I work at a firm named Koslow
Posté le 27-12-2005 à 17:54:35  profilanswer
 

api Win32 à coups de GetProcAddress et de GetModuleHandle, non ?

n°1273856
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-12-2005 à 18:46:03  profilanswer
 

Ben les Handles et les Adresses, je les ai déjà.
Le souci, c'est qu'après, je sais pas quoi en faire :D

n°1273859
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-12-2005 à 18:48:04  profilanswer
 

En fait, même si j'ai toujours développé sur technos proprio Microsoft (VB, VBS, ASP, C#, SQL Server, etc.) je n'ai jamais vraiment développé de "spécifique windows", c'est à dire que je me suis toujours contenté des librairies qu'on me proposait, sans aller bidouiller à la main dans la mémoire ou les processes.
 
Du coup, là je suis un peu comme une poule qui a trouvé un couteau : chuis super content d'avoir trouvé mon process, mais j'ai aucune idée de quoi en faire...

n°1273863
theshockwa​ve
I work at a firm named Koslow
Posté le 27-12-2005 à 18:52:38  profilanswer
 

[:ddr555]
 
ce sont les fonctions de Citrix ou de IE que tu cherches ?

n°1273884
Tamahome
⭐⭐⭐⭐⭐
Posté le 27-12-2005 à 20:19:40  profilanswer
 

caÿ un peu crade ce que tu cherches a faire [:chrisbk]

n°1273927
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 01:10:16  profilanswer
 

ben je cherche à accéder à l'application à travers citrix. le copier/coller fonctionnant, il doit y avoir moyen d'interagir avec l'appli depuis le bureau [:spamafote]

n°1273928
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 01:11:23  profilanswer
 

et je sais, c'est crade, mais ces idiots de développeurs de citrix n'ont pas pensé à faire un support pour les lecteurs partagés ni transfert de fichier...  du coup on fait avec les moyens du bord. ou alors j'ai pas trouvé comment ça marchait, en tout cas j'en ai pas


Message édité par Arjuna le 28-12-2005 à 11:10:08
mood
Publicité
Posté le 28-12-2005 à 01:11:23  profilanswer
 

n°1273978
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 10:16:39  profilanswer
 

Hmmm...
 
A votre avis, une méthode comme ça, ça attends quoi ?
 

Code :
  1. Function AttachSession(ByVal pSessionId As String) As Long
  2. method AttachSession


 
Ce pSessionId c'est quoi ?
 
Vu que je sais pas comment taper dans mon application via les process (et en effet, si j'ai bien sous les yeux mon application, il n'y a aucune chance pour que ce soit vraiment elle que j'ai sous les yeux), je vais passer par Citrix directement.
Seulement voilà...
 
=> J'ai trouvé un objet COM sur mon disque, qui correspond au client.
=> Maintenant que mon projet sais comment jouer avec Citrix, j'aimerais bien qu'il me récupère la session active...
 
Notamment parceque j'ai trouvé ça comme méthode dans la class, et ça me plait bien :  
 

Code :
  1. Sub LoadIcaFile(ByVal File As String)
  2. method Load ICA file


 
Avec beaucoup d'espoir, ça permet de charger un fichier depuis le serveur (l'espoir fait vivre)

n°1273980
lorill
Posté le 28-12-2005 à 10:21:00  profilanswer
 

Arjuna a écrit :


Notamment parceque j'ai trouvé ça comme méthode dans la class, et ça me plait bien :  
 

Code :
  1. Sub LoadIcaFile(ByVal File As String)
  2. method Load ICA file


 
Avec beaucoup d'espoir, ça permet de charger un fichier depuis le serveur (l'espoir fait vivre)


ahem.
 
 
Le fichier ica, c'est juste les infos de connexion a une application (ou bureau, bref, a citrix).  [:klem3i1]

n°1273981
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 10:21:42  profilanswer
 

J'ai trouvé un forum de support sur le site de citrix, vais leur poser mes questions, on verra bien :)

n°1273988
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 10:46:35  profilanswer
 

http://support.citrix.com/forums/t [...] adID=71521
 
Qui vivra verra [:spamafote]


Message édité par Arjuna le 28-12-2005 à 10:46:42
n°1273989
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 10:46:57  profilanswer
 

lorill a écrit :

ahem.
 
 
Le fichier ica, c'est juste les infos de connexion a une application (ou bureau, bref, a citrix).  [:klem3i1]


Rha c'est mal :o

n°1273996
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:03:23  profilanswer
 

lorill a écrit :

ahem.
 
 
Le fichier ica, c'est juste les infos de connexion a une application (ou bureau, bref, a citrix).  [:klem3i1]


Sinon, t'as l'air de connaitre :)
 
Tu sais pas comment on peut transférer un fichier à partir de Citrix ?
 
L'architecture :
 
euh... attends, je dois avoir un dessin quelquepart...
 
http://magicbuzz.multimania.com/files/network.png
 
Alors... C'est pas très clair.
 
Bon, Citrix, il tourne sur le serveur nommé "METAFRAME" sur le dessin. C'est à dire que pour se connecter aux serveur de droite, il doit passer à travers un firewall.
Sur les serveurs en question se trouve l'appli Server du système d'information. Sur Citrix, on a un client pour ce système.
 
Les personnes qui utilisent Citrix viennent d'internet (même si elles sont depuis l'intérieur du réseau, y'a un modem pour les connections sortantes et un pour les entrantes).
 
Le but du jeu, c'est donc, une fois le client connecté via Citrix, lui permettre d'aller chercher un fichier jusque sur le serveur du SI, et ce, de façon automatisée.
 
C'est à dire que si mon appli détecte l'ouverture d'une fenêtre "trucmuche.pdf - Acrobat Reader", alors je shoot la fenêtre, et je télécharge le fichier trucmuche.pdf et je l'affiche en local.
Pour les fichiers Excel, le mieu, c'est de générer deux fichier : le fichier Excel, et un TXT (ouvrable donc par notepad sur le serveur Citrix) contenant les infos mime et chemin du fichier Excel, et donc intercepter les fichiers TXT formatés tels quels.
 
Voilà le truc... Puisque Citrix semble pas foutu de le faire tout seul :/


Message édité par Arjuna le 28-12-2005 à 11:13:06
n°1273997
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:06:24  profilanswer
 

A noter que le client sait faire ça tout seul normalement : si je lance une édition et que je demande à voir le résultat, il télécharge automatiquement le fichier (transfert interne à l'application, donc ne nécessite ni port particulier ni protocole ni partage de disque), puis recherche dans le BDR si le type est connu, et lance alors l'application concernée et lui envoie le fichier.
Si l'application n'est pas connue (notre cas ici avec Excel), alors ça fait un message d'erreur.
 
Dans notre cas, on a donc des magasins qui ont Excel sur leur poste, mais qui ne peuvent pas ouvrir une édition Excel car il n'est pas installé sur le serveur Citrix, et ils peuvent ouvrir des PDF mais pas les imprimer car ils ne voient que les imprimantes déclarées sur le serveur METAFRAME... (donc ça va pas chercher loin)


Message édité par Arjuna le 28-12-2005 à 11:11:55
n°1273999
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:11:26  profilanswer
 

ps: c'est pas clair ce que je raconte. dans le post précédent, je parle du client du SI, pas citrix, puisque justement, citrix sait pas faire ce que je veux qu'il apprenne à faire avec mon programme :D

n°1274001
lorill
Posté le 28-12-2005 à 11:15:15  profilanswer
 

ben je sais pas trop, j'y connais pas grand chose en fait.
les fichiers  ica je connais parce que j'ai déjà du en générer, mais sinon ben :whistle:
 
part contre pour les fichiers, on a simplement mappé des lecteurs reseaux, et ca marche, mais je serais incapable de t'en dire plus.

n°1274004
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:22:21  profilanswer
 

a priori, il y a en effet une fonction de mapping de lecteurs réseaux, mais je ne trouve pas comment ça marche. en effet, le client "monte" les lecteurs réseau et imprimantes, mais ils n'apparaissent pas une fois connectés (ni imprimantes ni lecteurs :/)

n°1274009
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:35:09  profilanswer
 

Voilà ce que ça donne :
 
Au lancement d'une application depuis le client Citrix :
http://magicbuzz.multimania.com/files/citrix2.PNG
=> Il cherche bien à mapper des clients réseaux
 
Une fois loggué.
http://magicbuzz.multimania.com/files/citrix.PNG
 
Ici, une fenêtre de session "Exporer" ouverte sur le serveur Metaframe, et par dessus (en bas à droite) un explorateur Windows Local.
 
On voit bien dans l'explorateur distant le répertoire "test" qui est partagé. Idem pour le lecteur réseau L: monté depuis un autre serveur.
 
Pourtant, dans mon lecteur explorateur local, on ne voit ni l'un ni l'autre.
Le user que j'ai utilisé pour se loguer à Citrix est admin du domain, et a les droits nécessaires pour voir tout ça. Mais rien n'y fait, y'a que pouic.

n°1274014
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:51:21  profilanswer
 

Rien compris :heink:
 
Je suis allé dans les outils de config, j'ai rien touché, juste validé, et maintenant je peux imprimer sur mes imprimantes locales et je peux accéder à mes disques locaux :heink:
 
Bon, problème à moitié résolu, reste plus qu'à trouver un moyen simple de rappatrier le fichier en local et de le transformer en document Excel quand nécessaire :D

n°1274015
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-12-2005 à 11:53:00  profilanswer
 

Je crois qu'en fait, je vais pas me prendre le choux. Je vais demander au client d'installer Excel et Word sur le serveur, ça va être très simple...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  En C#, VBS ou autre : retrouver une appli qui tourne avec Citrix

 

Sujets relatifs
ptit problemes en VBSconseil pour une appli. de gestion de poid
[java] exécuter une appli java en tache de fond ou service.[VBS] Split
Retrouver un lieu à partir de son adresse IP[VBS] Recuperer une valeur depuis un autre script
Récupérer nom d'une pièce jointe (VBS)[VBS] Tester la présence d'un Certificat
[VBS] Accèder à une machine distante[VBS][SOURCE] Optimisation du Path
Plus de sujets relatifs à : En C#, VBS ou autre : retrouver une appli qui tourne avec Citrix


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