我正在将用户可定义的键宏制作到程序中。 (那些宏仅限于该程序。)

我正在使用TApplicationEvents记录关键消息。然后使用SendInput播放它们。但是我需要禁用鼠标和键盘,以免中断播放。

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

有没有一种简单的方法可以在仍然使用SendInput的同时阻止鼠标和键盘输入。 (不需要特权的方法。)

我还需要一个退出键来停止播放。

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

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

最佳答案

如果您希望将“人工输入”限制为您自己的应用程序,则不会使用SendInput。如果您使用TApplicationEvents.OnMessage来记录消息,则在播放宏时我会添加一个“ if not(PlayingBack)then”,请在OnMessage中签入并使用Form1.Perform

关于delphi - 绕过键盘,鼠标输入并让SendInput通过,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1810390/

10-14 04:25