c# Senden von Tastatur-Befehle zu einem anderen Fenster / Prozess
Ich versuche, ein Programm zu schreiben, der eine Zeile von Daten und übergeben Sie es in einem anderen Fenster /Prozess.
Dies ist der code, den ich bisher, aber ich habe nicht in der Lage, herauszufinden, wie ich die Tastatur-Befehl, um den OUTLOOK-Prozess.
Ich würde gerne in der Lage sein, mit der Tab-Befehl /- Taste und der Enter-Befehl /key.
Dies ist, was ich bisher versucht habe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Windows.Forms;
namespace Config
{
class Program
{
[STAThread]
static void Main(string[] args)
{
System.Threading.Thread.Sleep(30);//300000
TextReader tr = new StreamReader("config.txt");
Clipboard.SetText(tr.ReadLine());
tr.Close();
var proc = Process.GetProcessesByName("OUTLOOK").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
{
SetForegroundWindow(proc.MainWindowHandle);
//SendKeys.Send("{ENTER}");
// Clipboard.GetText();
}
}
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
SendMessage
ist, was Sie suchen.Vielleicht ist deine Frage wurde bereits hier gelöst: Wie zu senden text-Editor in C#/Win32?
SendMessage(hwnd, WM_KEYDOWN, VK_TAB, NULL)
Versuchen smth like this.
SendKeys
funktioniert nicht solide. Vorgeben, eine andere Fenster wird in den Vordergrund gerückt. In diesem Fall würden Sie senden Sie Ihre Schlüssel an der falschen Anwendung.Ich geschrieben habe, ein paar Programme, die das senden von Tastatureingaben an hintergrund-Fenster, ich in der Regel umgesetzt PostMessage/SendMessage. Ich dokumentierte alle meine Erkenntnisse hier!
Aber Sie wird grundsätzlich mit einem low-level-c-Aufruf zu Meldungen in die windows message queue zu ermöglichen, um die Anwendung zu Holen, die Taste drückt.
PostMessage
SendMessage
Bitte lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben, meine Bibliothek ist in C# geschrieben und ich wäre glücklich, es zu teilen. Diese Methode ermöglicht auch die Benutzung der Maus in einem hintergrund-Fenster 🙂
Gesamte code überprüft wurde in GitHub: https://github.com/EasyAsABC123/Keyboard
Wenn man bedenkt, dass Sie wissen wenn und was Tastatur-Befehl, den Sie gonna senden an Outlook-Prozess, die Sie verwenden müssen SendMessage Windows-API-Funktion.
Nur ein Beispiel