Ich weiß, dass Sie sendKeys in einer Windows-Formularanwendung verwenden können, aber wie können Sie Schlüssel an einen Prozess in einer Konsolenanwendung senden?Können Sie SendKeys zu einem Prozess in einer Visual Studio Console-Anwendung verwenden?
Antwort
Es kann auch andere Optionen geben, aber in dieser Antwort möchte ich mich auf einen Filestream als Eingabe konzentrieren.
Der Befehl würde wie folgt aussehen:
c:\>MyConsole < c:\temp\streamin.txt
Das folgende Beispiel ist eine einfache Konsolenanwendung, die Eingabe aus einer Datei, bis ‚q‘ akzeptiert wurde ‚gedrückt‘.
Programm 1
static void Main(string[] args)
{
var isBusy = true;
while (isBusy)
{
var k = Console.In.Read();
if (k > -1)
{
var c = Convert.ToChar(k);
// quit if 'q' was pressed.
if (c == 'q')
isBusy = false;
Console.WriteLine($"Key pressed: {c}");
}
Thread.Sleep(500);
}
Console.WriteLine();
Console.WriteLine("Done. Closing in 5 seconds.");
Thread.Sleep(5000);
}
Bitte beachten Sie, dass Console.ReadKey wird nicht verfügbar sein, da die Eingabe von einer Datei kommt.
Wenn Sie die Datei in Notepad öffnen und anhängen Schlüssel und speichern die Datei, werden Sie feststellen, Programm 1 die Schlüssel lesen.
Sie können auch ein anderes Programm erstellen, das Schlüssel an die Datei anfügt.
Programm 2
static void Main(string[] args)
{
var f = new FileStream(@"c:\temp\streamin.txt", FileMode.Append);
var key = new ConsoleKeyInfo();
while (key.KeyChar != 'q')
{
key = Console.ReadKey(false);
f.Write(new[] { Convert.ToByte(key.KeyChar) }, 0, 1);
f.Flush();
}
f.Close();
f.Dispose();
Console.WriteLine();
Console.WriteLine("Done. Press any key to quit.");
Console.ReadKey(true);
Console.WriteLine();
}
Diese sind sehr einfache Programme, nur um zu zeigen, was möglich ist. Programm 2 wird Keys an die Datei anhängen, während Programm 1 weiter von der Datei liest, bis 'q' gedrückt wurde.
Sie können auch Console.SetIn()
verwenden, um den Eingabestrom in Programm 1 anstatt in der Befehlszeile festzulegen.
- 1. So verwenden Sie XUnit mit Visual Studio, um den Testcode in einem Remote-Prozess zu testen
- 2. Prozess automatisch anfügen in Visual Studio 2015
- 3. Verwenden einer DLL in Visual Studio C++
- 4. Attach-Prozess in Visual Studio 2013 Debugger
- 5. Wie verwenden Sie versuchen, in Visual Studio C++ zu fangen?
- 6. Verwenden Sie Visual Studio-Ausnahme in C
- 7. Können Sie Visual Studio 2008 Tabs schweben?
- 8. Automatisieren Sie "An den Prozess anfügen" in Visual Studio 2012
- 9. Führt Visual Studio Tests mit einem weniger privilegierten Prozess aus?
- 10. Datei wird von einem anderen Prozess verwendet C# Visual Studio
- 11. Können Sie in Visual Studio Mac 2 Lösungen gleichzeitig öffnen?
- 12. NET-Performance-Probleme - Visual Studio-Hosting-Prozess
- 13. Können Sie das Schlüsselwort params in einem Delegaten verwenden?
- 14. Fügen Sie ein project.json-basiertes Projekt zu einer .sln-Datei hinzu, ohne Visual Studio zu verwenden
- 15. Verwenden Sie Visual Studio, um nach einer bestimmten Zeichenfolge in einer Spalte usw. zu suchen.
- 16. Wie können Sie die folgenden Linkfehler in Visual Studio beheben?
- 17. Visual Studio Codegenerierung - Verwenden Sie Großtypnamen
- 18. Verwenden Sie angular2 mit Visual Studio
- 19. Visual Studio 2013 Remote-Debug-Prozess in Windows XP
- 20. Verwenden Sie einen SAS-gespeicherten Prozess in ASP.NET Visual Studio. SAS-Integrationstechnologien?
- 21. Verwenden einer DLL mit Qt in Visual Studio
- 22. Wie können Sie Namen in Visual Studio Assembler-Ausgabe abmelden?
- 23. Können Sie ein DockPanel wie Visual Studio in WPF erstellen
- 24. Können Sie die AutoHide-Animation in Visual Studio-Docking deaktivieren?
- 25. Welche Visual Studio-Add-Ins verwenden Sie?
- 26. Konfigurieren Sie Visual Studio, um mehr RAM zu verwenden
- 27. Wie können Sie Tabulatoren in Visual Studio 2010 aktivieren?
- 28. Debugging mit einem Abfragezeichenfolgenparameter in Visual Studio
- 29. Visual Studio 6.0 zu Visual Studio 2008
- 30. Visual Studio 2015 'var' Refactoring-Verknüpfung verwenden