任何人都可以使用任何窗口api或其他任何东西给我代码从delphi中的前景窗口读取鼠标选中或突出显示的文本。 这是我的代码我发送按键ctrl + c读取到剪贴板,然后从中读取
handltForForeGroundWindow := GetForegroundWindow ;
PostMessage(handltForForeGroundWindow , wm_keydown, VK_CONTROL, 0);
PostMessage(handltForForeGroundWindow , wm_keydown, VkKeyScan('c'), 0);
Sleep(40);
PostMessage(handltForForeGroundWindow , wm_keyup, VkKeyScan('c'), 0);
PostMessage(handltForForeGroundWindow , wm_keyup, VK_CONTROL, 0);
StoreWord := Clipboard.AsText; // variable to read clipboard content
答案 0 :(得分:0)
对问题中代码的批评:
SendInput
是此处使用的正确API。它将输入消息放入活动窗口的队列中。您可以创建四个键盘事件的数组,并将它们放入原子操作队列中。Sleep
的来电是错误的。为什么要在发布更多输入之前等这只会增加其他人因某些干扰输入而受阻的机会。当然,这正是SendInput
的全部内容。关于如何正确地执行此操作,而不使用剪贴板,您确实应该使用自动化API执行此任务。这是你上一个问题的主题:I want to read Mouse selected text from foreground window without using clipboard而且我不确定这个问题有什么不同。