Bonjour,
mon problème est assez simple mais je ne trouve rien pour solutionner le problème.
Je dois faire un programme qui
- lance une application externe (je prendrais l'exemple Excel même si ce n'est pas celle-ci, ce sera plus parlant pour tout le monde)
- puis faire un traitement quelconque mais assez long(traitement qui n'a rien à voir avec Excel)
- puis je dois me brancher sur le excel lancé 10 minutes auparavant pour ouvrir un fichier, executer une macro
Donc ça je sais faire avec la méthode getObject en VB, et l'équivalent C# (Marshal.GetActiveObject). Ca marche bien mais ça me pose des problèmes si plusieurs Excel sont lancés (la méthode getObject ne me garanti pas la communication avec le excel lancé par mon application, ça peut être n'importe quel autre Excel lancé auparavant) Mais ce n'est pas ça mon problème.
Là où ça se complique c'est que mon application externe peut se lancer en tâche de fond: c'est à dire qu'il n'y a plus d'UI, j'ai juste un processus qui tourne. Et là le getObject ne fonctionne plus...
Exemple avec Excel: imaginez que excel est lancé en tâche de fond (donc j'ai juste Excel.exe et son PID (en gros ce que je vois dans le gestionnaire des tâches) et son instance de la classe Process), maintenant je voudrais qu'il execute une macro.
Donc question comment faire pour utiliser un excel en cours d'execution quand la méthode getObject ne fonctionne pas? juste avec son PID et son nom de processus.
Partager