将密钥发送到Windows桌面

时间:2013-03-29 19:17:06

标签: c# windows

我想构建一个应用程序,以便以编程方式将键击发送到Windows桌面而不是指定的窗口。 例如,如果我们点击箭头键,则选择桌面中的图标... 有可能吗?

2 个答案:

答案 0 :(得分:2)

SendInput Windows API可以满足您的需求。实际上,将输入发送到目标窗口是一项更困难的任务。 SendInput将输入发送到与调用此API的进程的Windows会话相对应的虚拟输入队列。如果您愿意,输入或键将落在任何活动的桌面上,并且位于前景中的任何窗口内。

如果显示桌面图标的Listview控件是前景窗口,那么您要发送的箭头键将移动选择 - 否则它可能会将光标移动到记事本上(如果记事本是前景窗口)。 注意:顶部的窗口不一定是前景窗口。查看SetForegroundWindow API以了解有关前景窗口含义的更多信息。

答案 1 :(得分:0)

您应该可以通过win API中的LVM_SETITEMPOSITION执行此操作。请查看以下主题,其中包含使用此功能的一些建议:How can I programmatically manipulate Windows desktop icon locations?