Heim > Backend-Entwicklung > C++ > Wie kann ich Schlüssel zuverlässig an eine Hintergrundanwendung wie Notepad senden?

Wie kann ich Schlüssel zuverlässig an eine Hintergrundanwendung wie Notepad senden?

Susan Sarandon
Freigeben: 2025-01-05 08:43:41
Original
929 Leute haben es durchsucht

How Can I Reliably Send Keys to a Background Application Like Notepad?

Senden von Schlüsseln an Hintergrundanwendungen

Der bereitgestellte Code versucht, die Taste „k“ an Notepad zu senden, es tritt jedoch ein Problem auf. Um dieses Problem zu lösen, müssen mehrere Aspekte des Codes berücksichtigt werden.

Korrekte Prozessbehandlung:

Der Code geht davon aus, dass Notepad bereits ausgeführt wird. Um dies genau zu handhaben, sollten Sie den ersten Notepad-Prozess wie folgt abrufen:

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
Nach dem Login kopieren

Wenn Notepad derzeit nicht ausgeführt wird, können Sie ihn starten, indem Sie:

Process p = Process.Start("notepad.exe");
Nach dem Login kopieren

Bring Notepad verwenden in den Vordergrund:

Sobald Sie den Notepad-Prozess abgeschlossen haben, müssen Sie dessen Hauptfenster in den Vordergrund bringen Vordergrund:

IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
Nach dem Login kopieren

Warten auf Eingabestabilität:

Bevor Sie Schlüssel senden, sollten Sie warten, bis die Anwendung ihre Eingabeschleife stabilisiert hat:

p.WaitForInputIdle();
Nach dem Login kopieren

Schlüssel senden:

Abschließend können Sie das gewünschte senden Schlüssel:

SendKeys.SendWait("k");
Nach dem Login kopieren

Mögliches Problem mit Administratorrechten:

Es ist erwähnenswert, dass diese Methode möglicherweise nicht funktioniert, wenn Notepad als Administrator ausgeführt wird und Ihre Anwendung nicht .

Geänderter Code:

Hier ist der geänderte Code enthält die notwendigen Korrekturen:

[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
else
{
    p = Process.Start("notepad.exe");
    p.WaitForInputIdle();
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Schlüssel zuverlässig an eine Hintergrundanwendung wie Notepad senden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage