ここで使用されているSendInput を使用して+の組み合わせを送信することにより、システム全体のホットキーCtrl+ Shift+a key of the user's choiceを使用してクリップボードにテキストを貼り付けるプログラムがあります。これは、ほとんどのプログラムでうまく機能します。しかし、新しい電子メールの [宛先] フィールドの Outlook では、キーを押すたびに、 + +キーの組み合わせであるはずの [アイテムをフォルダーに移動] Outlook ダイアログ ボックスが表示されます。Body フィールドでは何も起こりません。ここで何が起こっているのですか?以下の再現するコードを参照してください。CtrlVCtrlShiftV
procedure TForm1.FormCreate(Sender: TObject);
begin
If not RegisterHotkey( Handle, 1, MOD_SHIFT or MOD_CONTROL, Ord('P') ) Then
ShowMessage('Error');
end;
Procedure TForm1.WMHotkey( Var msg: TWMHotkey );
var
KeyInputs: array of TInput;
procedure KeybdInput(VKey: Byte; Flags: DWORD);
begin
SetLength(KeyInputs, Length(KeyInputs)+1);
KeyInputs[high(KeyInputs)].Itype := INPUT_KEYBOARD;
with KeyInputs[high(KeyInputs)].ki do
begin
wVk := VKey;
wScan := MapVirtualKey(wVk, 0);
dwFlags := Flags;
end;
end;
Begin
If (msg.HotKey > 0) And (msg.HotKey < 2) Then
Begin
Clipboard.AsText:= 'Some text';
KeybdInput(VK_CONTROL, 0); // Ctrl
KeybdInput(Ord('V'), 0);
KeybdInput(Ord('V'), KEYEVENTF_KEYUP);
KeybdInput(VK_CONTROL, KEYEVENTF_KEYUP); // Ctrl
SendInput(Length(KeyInputs), KeyInputs[0], SizeOf(KeyInputs[0]));
end
End;