绕过键盘,鼠标输入并让SendInput通过

时间:2009-11-27 19:41:43

标签: delphi winapi windows-7 windows-vista delphi-7

我正在为程序创建用户可定义的关键宏。 (那些宏仅限于该程序。)

我正在使用TApplicationEvents来记录关键信息。然后使用SendInput播放它们。但我需要禁用鼠标和键盘,这样就不会中断播放。

我无法使用JournalPlaybackProc和JournalRecordProc,因为它们受Vista和Win7中的UAC,UIPI约束。

是否有一种简单的方法可以在使用SendInput时阻止鼠标和键盘输入。 (一种不需要提高特权的方式。)

另外我需要一个停止播放的转义键。

编辑: TControl.Perform无效,因为它忽略了热键。

我想在WM_KEY消息中使用保留的半字节(位25-28),但是在Windows文档中它表示它是保留的并且不使用。可能是什么后果。

2 个答案:

答案 0 :(得分:3)

如果您希望“人工输入”仅限于您自己的应用程序,我不会使用SendInput。如果您使用TApplicationEvents.OnMessage来记录消息,我会添加一个'if not(PlayingBack)然后'在回放宏时检查OnMessage并使用Form1.Perform

答案 1 :(得分:1)

我一直使用AutoIT的DLL发送KeyStrokes以及阻止键盘和鼠标。

有一件事就是AutoIT无法阻止Ctrl + Alt + Del键。

Do check it out

HTH