別のアプリケーションで選択したテキストをコピーして変更する

StackOverflow https://stackoverflow.com/questions/235972

  •  04-07-2019
  •  | 
  •  

質問

Windowsアプリケーションをバックエンドで実行しています。このアプリケーションの機能はホットキーにマップされています。メッセージボックスをこの関数に入れて、ホットキーを Alt + Ctrl + D として指定した場合のように。次に、 Alt Ctrl 、および D を同時に押すと、メッセージボックスが表示されます。この時点まで、私のアプリケーションは正常に機能しています。

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

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

役に立ちましたか?

解決

あなたの質問には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
便宜上、ここに投稿します。

他のヒント

クリップボードクラスを使用してコンテンツをコピーしますクリップボードをメモ帳に貼り付けます。

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

SendInput を使用できると思います対象のウィンドウにテキストを送信する機能、または以前にクリップボードにコピーしたことがある場合は貼り付けるコマンドのみ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top