Frage

Ich habe eine Windows-Anwendung im Backend läuft. Ich habe Funktionen in diesen Anwendungen Hotkeys abgebildet. Wie, wenn ich legte ein Meldungsfeld in diese Funktion und geben Hot-Key als Alt + Strg + D . dann auf der Taste Alt , Strg und D zusammen das Meldungsfeld kommt. Meine Anwendung funktioniert gut bis zu diesem Punkt.

Jetzt möchte ich in dieser Funktion einen Code schreiben, so dass, wenn ich eine andere Anwendung wie Notepad verwende ich eine bestimmte Textzeile ein und drücken Sie die Tastenkombination wählen Alt + Strg + D angenommen wird, um den ausgewählten Text hängen sie ihn mit „_copied“ und fügen sie ihn zurück zu Notizblock kopieren.

Jeder, der eine ähnliche Anwendung versucht hat, bitte helfen Sie mir mit Ihrem wertvollen Inputs.

War es hilfreich?

Lösung

Ihre Frage hat zwei Antworten

Wie kann meine App einen globalen Hotkey einstellen

Sie haben eine API funcion nennen genannt RegisterHotKey

BOOL RegisterHotKey(
    HWND hWnd,         // window to receive hot-key notification
    int id,            // identifier of hot key
    UINT fsModifiers,  // key-modifier flags
    UINT vk            // virtual-key code
);

Weitere Informationen hier: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx

Wie den ausgewählten Text aus dem Fenster im Vordergrund bekommen

Der einfachste Weg ist crl-C an das Fenster zu senden und dann den Inhalt der Zwischenablage erfassen.

[DllImport("User32.dll")] 
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);


.....

private void SendCtrlC(IntPtr hWnd)
    {
    uint KEYEVENTF_KEYUP = 2;
    byte VK_CONTROL = 0x11;
    SetForegroundWindow(hWnd);
    keybd_event(VK_CONTROL,0,0,0);
    keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C")
    keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up

}

Disclaimer: Code von Marcus Peters von hier: http://bytes.com/forum/post1029553 -5.html
Geschrieben hier für Ihre Bequemlichkeit.

Andere Tipps

Mit der Zwischenablage Klasse den Inhalt kopieren die Zwischenablage, dann in den Editor einfügen.

Sie können auch den Inhalt in eine Textdatei schreiben und sie mit Notepad öffnen, indem die notepad.exe Anwendung mit der Textdatei Pfad als Befehlszeilenparameter ausgeführt wird.

Ich glaube, Sie können Send Funktion, um den Text an das Zielfenster oder den Befehl zu senden, es einzufügen, wenn Sie es in der Zwischenablage vor gesetzt worden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top