Senden von Tastatur-Taste, um den browser in C# mit sendkey Funktion
Hallo, ich bin versucht, senden Sie eine Taste, um browser mit dem code unten, wird die neue chrome-Fenster öffnet sich für mich, aber es nicht senden Sie die Schlüssel an den browser.
Wenn ich ausgetestet, fand ich heraus, Chrom Prozess keine Titel name, wie kann ich dieses problem lösen?
Process.Start("chrome.exe", "https://labs.sketchfab.com/sculptfab/");
System.Threading.Thread.Sleep(2000);
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if (p.ProcessName == "chrome" && p.MainWindowTitle == "SculptFab - SculptGL + Sketchfab" &&
p.MainWindowHandle != IntPtr.Zero)
{
System.Threading.Thread.Sleep(2000);
for (int i = 0; i < 50; i++)
{
KeyHandle.SetForeGround(p.MainWindowHandle);
SendKeys.Send("s");
System.Threading.Thread.Sleep(2000);
}
}
}
In der oben erwähnten Seite, wenn "S" auf der Tastatur gedrückt wird, es verkleinert das Objekt will ich auch erreichen dies mit meinem C# - code
- Warum nicht Selen? Abgesehen von windows Bildunterschriften problem, SendKeys.Senden ist nicht genug stabil auf aktuellen Windows-Versionen aufgrund der UAC...
- Ich bin eigentlich so eine C# Anwendung mit der kinect, welche eine Eingabe, die durch gesten, ich denke nicht, dass Selen helfen kann, mich das tun
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen eine neue Instanz der
Process
es verwenden, um senden Sie Ihre Tastatureingaben. Sehen https://stackoverflow.com/a/12892316/2058898 für weitere Informationen.Update
Ich habe getan, einige forschen und es scheint, dass Chrome in der Tat nicht reagieren
SendKeys.Send
Methode. Allerdings können Sie die Windows API-aufrufen, dieSendMessage
- Funktion und senden Keydown/-up-Signale an das Fenster. Hier ist ein einfacher wrapper für die Verwendung in Chrome:Verwendung dieser Klasse ist ziemlich einfach:
Funktioniert auf meinem Rechner™ (Windows 8.1 Pro N, Google Chrome 42).
Zusätzliche Informationen
Diese Lösung funktioniert nur, wenn es kein Chrome läuft noch, wie Chrome sendet nur die neue URL für die eigentliche Prozess, der öffnet es dann. Also entweder schließen Sie alle anderen Chrome-Instanzen vorher, oder verwenden Sie die
SendMessage
Methode auf den Prozess, den Sie gefunden, mitProcess.GetProcesses
Hier ist eine aktualisierte version von ChromeWrapper, dass:
.
Ich es verwenden, wie unten, für die Zusendung von Tab-und Enter-Tasten.