2011-03-31 2 views
1

J'ai un .exe qui fonctionne sur mon ordinateur. Comment puis-je me connecter à partir de C#?Comment communiquer avec une application distincte de C#

Par exemple, notepad.exe est en cours d'exécution. Je voudrais écrire dans le bloc-notes à partir de Windows formulaire application ou formulaire de l'application de la console. Comment puis je faire ça?

+2

Utiliser 'SendKeys()' –

+0

Si je me souviens bien, 'SendKeys' interagit avec l'application active et non spécifiée. Je préférerais envoyer des messages dans la mesure du possible (en général, seuls les jeux requièrent des approches de niveau inférieur) – CodesInChaos

+0

@Code, ouais 'AppActivate', puis' SendKeys' – Blorgbeard

Répondre

0

Jetez un oeil à this tutorial. Pour autant que je sache, il fait exactement ce que vous cherchez. Je me rends compte que c'est en allemand, alors regardez le code source.

+0

thx beaucoup Thalaur. Avez-vous téléchargé le code source? J'ai une erreur: les propriétés du fichier de ressources \ resources.resx sont introuvables. Pouvez-vous s'il vous plaît m'aider un peu? THX. a fait dans ce code créer un exe à partir du bloc-notes exe, puis exécutez-le? – elisa

+0

Regardez le code source dans l'article. D'abord, ils démarrent l'application du bloc-notes. Ensuite, ils récupèrent la poignée de la fenêtre et envoient des messages à la fenêtre. Avec ces messages de fenêtre, vous pouvez modifier le texte (WM_SETTEXT), ajouter du texte et faire beaucoup plus. Je n'ai pas compilé le programme donné, c'est juste pour vous montrer comment faire ces choses. – Thalur

2

Deux suggestions:

soit démarrer le processus à l'aide Process.Start()

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

ou utiliser SendKeys à partir de Windows Script Host

http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx

+0

Je sais que je peux activer un fichier .exe avec process.start(). Je demandais comment envoyer un message texte au bloc-notes de C#? Je veux dire après avoir construit mon code C# pour voir dans le bloc-notes la chaîne que j'ai écrite dans C# – elisa

1

Cela dépend exactement que veux-tu faire. L'utilisation de SendKeys est la solution la plus simple, mais c'est une fonctionnalité brute et limitée. Vous pouvez faire plus et mieux avec SendMessage, mais cela sera plus difficile à coder.

+0

pouvez-vous me dire comment pourrais-je le faire? Je veux être en mesure d'ouvrir le bloc-notes exe et envoyer des données à lui ... et aussi lire les dates de celui-ci. c'est possible? – elisa

+1

@elisa: Je ne peux pas vous donner une solution. Essayez sur votre propre premier. – Jon

+0

thx Jon :). Je pensais que vous avez des exemples de C# – elisa

0

La lecture d'un autre processus dans Windows est problématique, c'est le moins qu'on puisse dire. Nous avons travaillé sur ce sujet il y a un certain temps et cela impliquait de se connecter à l'API Win32 de bas niveau en utilisant le langage d'assemblage. Essentiellement, ce n'est vraiment pas agréable et si vous pouvez éviter cela, vous aurez beaucoup plus de cheveux sur votre tête. L'utilisation de SendMessage fonctionnerait si l'application que vous envoyez comprend le message que vous tentez d'envoyer à SendMessage. Je soupçonne que vous commencez à entrer dans des problèmes de sécurité avec cela sur les versions ultérieures de Windows (Vista + Win7) et devrait exécuter votre application avec des privilèges élevés.

Pourquoi voulez-vous faire cela?

+0

salut. Je veux accéder par exemple au bloc-notes et en lire et écrire.Je voudrais également l'implémenter en tant que service Windows. Je veux dire que j'aurais envie d'accéder au bloc-notes d'un service Windows et d'y envoyer des messages depuis mon service – elisa

Questions connexes