別のアプリケーションで選択したテキストをコピーして変更する
質問
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
便宜上、ここに投稿します。
所属していません StackOverflow