ユーザーがキーボードのF8キーを押すと、選択したテキストをコピーするプログラム(C#)の1つでSendKeysを使用しています。
Windows 7では正常に動作していますが、WindowsXPでは次の問題があります。
メモ帳で、次の文が「これはテストです」と書かれているとします。
ユーザーが「is」を選択してF8キーを押すと、テキストはコピーされません。
その後、ユーザーが「これ」を選択すると、コピーされるテキストは「です」になります
その後、ユーザーが「テスト」を選択すると、コピーされるテキストは「これ」になります
ご覧のとおり、F8キーを押すと、現在のテキストではなく、以前に選択したテキストがコピーされます。これはWindowsXPでのみ発生します。
これがコードです
System.IntPtr test = GetForegroundWindow();
System.Windows.Forms.SendKeys.Send("^(c)");
string copiedText = Clipboard.GetText();
F8にグローバルキーバインディングを使用しているため、コードの最初の行は現在アクティブなウィンドウを示しています。その後、Ctrl + Cが送信され、クリップボードからテキストがコピーされます。