10

バックエンドで Windows アプリケーションを実行しています。このアプリケーションには、ホット キーにマップされた機能があります。メッセージボックスをこの関数に入れて、ホットキーをAlt++として与える場合のようにCtrlD次に を押すAltCtrlD一緒にメッセージ ボックスが表示されます。私のアプリケーションは、この時点まで正常に動作しています。

ここで、この関数内にコードを記述して、メモ帳などの別のアプリケーションを使用しているときに、特定のテキスト行を選択してホットキーを押しますAlt+ Ctrl+D選択したテキストをコピーして「_copied」を追加し、それをメモ帳に貼り付けます。

同様のアプリケーションを試したことがある人は、貴重な情報を提供してください。

4

4 に答える 4

14

あなたの質問には2つの答えがあります

アプリでグローバル ホットキーを設定するにはどうすればよいですか

RegisterHotKey という API 関数を呼び出す必要があります。

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
);

詳細はこちら: http://www.codeproject.com/KB/system/nishhotkeys01.aspx

前景ウィンドウから選択したテキストを取得する方法

最も簡単な方法は、crl-C をウィンドウに送信してから、クリップボードの内容をキャプチャすることです。

[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

}

免責事項: ここからの Marcus Peters によるコード: http://bytes.com/forum/post1029553-5.html
便宜上、ここに投稿します。

于 2008-11-07T18:49:56.293 に答える
1

Clipboardクラスを使用して内容をクリップボードにコピーし、メモ帳に貼り付けます。

コマンド ライン パラメータとしてテキスト ファイルのパスを指定して notepad.exe アプリケーションを実行することにより、内容をテキスト ファイルに書き込んでメモ帳で開くこともできます。

于 2008-10-25T09:54:04.007 に答える
0

SendInput関数を使用して、テキストをターゲットウィンドウに送信したり、以前にクリップボードに入れたことがある場合はコマンドだけで貼り付けたりできると思います。

于 2008-10-25T16:04:48.647 に答える