我有一个使用系统宽热键Ctrl键 + 移 + 用户的选择的键通过发送Ctrl键 + 所用here V使用SendInput组合到剪贴板中的文本粘贴的程序。这在大多数程序中工作正常。但是,在新邮件的To字段的Outlook中,我尝试的每个密钥最终都会显示“Move Item To Folder”Outlook对话框,该对话框应该是Ctrl + Shift + V组合键。在Body字段中没有任何反应。有什么想法发生在这里?看代码重现如下:为什么SendInput Ctrl + V在Outlook中不起作用?
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;
这可能是更容易使用自动化 –
我的软件是指具有任何程序,允许文本的粘贴这样的自动化将是不实际工作。我只注意到这个SendInput技术在Outlook中不起作用。 – user3640611
我认为如果你添加了一个好的SSCCE,更有可能有人会提供帮助。如果我能够不费吹灰之力,那么我会更倾向于提供帮助。就目前而言,我必须投入时间来制作报刊。确实,每个潜在的帮手都需要这样做。也许这一步已经足够了。 –