System.Diagnostics.Process expose un streamwriter nommé StandardInput, qui accepte uniquement des caractères autant que je sache. P>
Mais je dois aussi envoyer des frappes de frappe, et des coups de frappe ne correspondent pas bien aux personnages. P>
Que dois-je faire? p>
4 Réponses :
Avez-vous vu ce superbe outil - AutoIt . Ceci est un outil de script. Pour envoyer un backcace, vous utiliseriez C'est un excellent outil et il peut vous aider à automatiser de nombreux clics manuels / clics / etc. p>
est-ce pertinent pour votre question? P> envoyer ("{backspace}") code> p>
Bonjour, il est pertinent, mais je préfère une solution que je pourrais utiliser directement dans .NET.
@Jader; Il y a une DLL disponible pour AutoIt que vous pouvez facilement ajouter à votre application ...
Si vous avez une fenêtre Formulaires Windows que vous pouvez envoyer les touches, alors SendKeys pourrait être une solution appropriée.
pour appuyer sur le dos de l'espace arrière et Ctrl + C, qui doit être P>
SendKeys.Send("{BACKSPACE}^C");
Envoi de CTRL + C comme ça ne fonctionne pas réellement dans un processus, il devrait être ^ {pause} ...
Vous mélangez des flux d'entrée avec des signaux de contrôle. Un processus de console a un flux d'entrée par défaut que vous pouvez contrôler avec la normeInput, comme vous le savez déjà. Mais Ctrl-C et Ctrl-Break ne sont pas des caractères envoyés au processus via ce flux, mais ils sont plutôt Par défaut, quand une fenêtre de console a
la mise au point du clavier, Ctrl + C ou
Ctrl + Break est traité comme un signal
(Sigint ou Sigbreak) et pas comme
Entrée de clavier. P>
blockQuote> envoyer de faux signaux à un processus que vous pouvez utiliser Pour l'utiliser à partir de .NET, vous devez simplement inclure la définition de la fonction: P>
generateconsolectrument code>
et envoyer soit ctrl_c_event code> ou
ctrl_break_event code>. Cette API n'a pas d'équivalent .net, vous devez donc la pincer. P>
const int CTRL_C_EVENT = 0;
const int CTRL_BREAK_EVENT = 1;
[DllImport("kernel32.dll")]
static extern bool GenerateConsoleCtrlEvent(
uint dwCtrlEvent,
uint dwProcessGroupId);
Google. com / codesearch / på hl = fr # ncfzehh4qla / pubs / ...
J'utilise le processus d'enregistrement de l'écran FFMPEG. Est-ce que cela fonctionne pour moi? En fait, je veux arrêter le début du début de l'enregistrement de l'écran à l'aide de FFMPEG
Il y a un simulateur d'entrée trouvé ici sur codeProject qui fait exactement et reflète les envois Sendkeys ... Je colle encore un certain code dans ceci pour démontrer .... p>
nitpicky de côté, je sais que le fichier
netstat code> est en cours d'exécution sur le thread "Backworker" et j'ai invoqué directement la méthode "PostCtrlc" de la Fil d'interface graphique principale ... Ceci est pédant comme un code de la preuve de concept, mais il montre qu'il doit mettre en œuvre «isynchronizeinvoke» pour le faire vitrage, cela de côté ... il fonctionne effectivement. P > p>
Mais si vous avez exécuté plusieurs processus qui utilise netstat.exe, vous affecterez tout avec POSTCTRLC ()? Y a-t-il un moyen de faire la même chose quand vous connaissez la session suivante?
@CONSANTINE Le code ne vise qu'une fenêtre en cours d'exécution netstat.exe. Vous pouvez utiliser le Enumwindows a> et créer la fonction de rappel EnumwindowsProc pour obtenir la poignée et inspecter la vérification de voir si le titre de cette poignée a NetStat.exe dans le titre ... Si sa constatée, apportez-le dans le premier plan et "zap" comme la preuve de -Concept code ci-dessus montre :)
Quel frappe, par exemple?
C'est la future future de l'abstraction des tuyaux UNIX. La redirection se produit à travers des flux de caractères, il ne peut pas simuler les coups de clé de frappe de frappe.
Essayez-vous de capturer puis de vous renvoyer à un autre processus ou d'envoyer simplement des caractères non imprimables comme moyen de contrôle, etc.?
@Marc j'essaie de créer une interface graphique pour un interprète de script interactif comme Octave.exe
Voir Stackoverflow.com/search?q=autohotkey
Vérifiez cette question Stackoverflow.com/Questtions/283128/...