我们在客户桌面上放置了许多快捷方式,并希望将它们放在一起以方便使用,并远离其他可用于其他程序的快捷方式。如果他们更改了屏幕分辨率,监视或对显示进行了其他更改,则快捷方式变为“#34;”#34;
我找到了一些代码示例来查找快捷方式的其他属性,例如。目标,但我没有看到任何指示快捷方式在屏幕上物理位置的属性。
我正在考虑创建一个简单的程序来读取我们的快捷方式的位置,并在它们位于正确的位置时将其保存到文件中。按下一个简单的按钮就可以将它们恢复到正确的位置。
我在Delphi编程,我们在各种客户机器上使用W7-10。
答案 0 :(得分:3)
shell API为此提供了功能。关键界面为IFolderView
,特别是方法IFolderView::GetItemPosition
和IFolderView::SelectAndPositionItems
。
使用shell API有点牵扯。与往常一样,在调用这些方法之前需要相当数量的脚手架。我向你推荐Raymond Chen的文章Manipulating the positions of desktop icons,它提供了实例代码。
答案 1 :(得分:1)
桌面在图标模式下实现为标准的Win32 ListView控件。桌面上的项目是ListView项目。您可以使用GetDesktopWindow()
函数获取桌面ListView的HWND
,然后根据需要使用标准ListView消息进行操作。
没有API可以检索代表特定文件/快捷方式的Desktop ListView项目,因此您必须手动查找它们。通过:
使用LVM_GETITEMCOUNT
和LVM_GETITEMTEXT
循环浏览项目,将每个项目的文本与您的快捷方式名称进行比较。
使用LVM_FINDITEM
搜索与给定快捷方式名称具有相同文本的项目。
找到目标商品后,您可以使用LVM_GETITEMPOSITION
和LVM_SETITEMPOSITION
/ LVM_SETITEMPOSITION32
根据需要获取/设置商品位置。