教你如何换游戏图标(这些图标我可以玩一年)

最近我发布了一些关于桌面图标的有趣视频,例如哎呀,我的桌面疯掉了,我的电脑会替我说爱你,里面利用图标摆出各种各样的造型,还有桌面上的图标可以玩贪吃蛇,天哪,技术宅们的电脑这么神奇吗?用图标玩起了贪吃蛇。

教你如何换游戏图标(这些图标我可以玩一年)(1)

摆成I的字母形状

教你如何换游戏图标(这些图标我可以玩一年)(2)

摆成原型

有些朋友以为这是病毒,其实只是我自己写了一些自娱自乐的小程序。因为有些朋友想学,在这给大家做一个教程科普一下做法,如果大家喜欢请留言,我会根据大家的反馈继续推出更多好玩的教程和视频。言归正传,下面是正餐时间(代码为C#编写):

我们首先定义一些常量,LVM_GETITEMCOUNT,LVM_SETITEMPOSITION代表了两个操作指令,一个是用来获取图标的个数,一个用来修改图标的位置。

constuint LVM_FIRST = 0x1000;

constuint LVM_GETITEMCOUNT = LVM_FIRST 4;

constuint LVM_SETITEMPOSITION = LVM_FIRST 15;

接下来我们来定义两个方法,ListView_GetItemCount用来获取桌面上图标的个数,它的参数为图标所在容器的句柄(看不懂没关系,下面有具体用法)。

publicint ListView_GetItemCount(IntPtr AHandle)

{

return SendMessage(AHandle, LVM_GETITEMCOUNT, 0, 0);

}

ListView_SetItemPosition用来设定图标的位置,它的参数为图标所在的容器的句柄,要设定图标的标号(第几个),目标位置的坐标X和Y。

public void ListView_SetItemPosition(IntPtr AHandle, int AIndex, int X, int Y)

{

SendMessage(vHandle, LVM_SETITEMPOSITION, AIndex, Y* 0x10000 X);

}

我们看到这两个函数里面都调用了SendMessage方法,其作用是往存放图标的容器发送消息来执行特定的动作。例如SendMessage(AHandle, LVM_GETITEMCOUNT, 0, 0);含义为告诉AHandle这个容器LVM_GETITEMCOUNT消息要求其返回图标的个数。

下面是一个让图标消失的小例子:

桌面上图标是放在一个容器里的,要控制它我们首先要找到图标所在的容器。

IntPtr vHandle = FindWindow("Progman", null);

vHandle = FindWindowEx(vHandle, IntPtr.Zero, "SHELLDLL_DefView", null);

vHandle = FindWindowEx(vHandle, IntPtr.Zero, "SysListView32", null);

此时vHandle就是容器的句柄了,把它作为参数调用获取图标个数的函数

int vItemCount = ListView_GetItemCount(vHandle);

vItemCount就是图标的数量,下面我们循环把所有的图标位置都设为(-100,-100)

for (int i = 0; i < vItemCount; i ){

ListView_SetItemPosition(vHandle, i, -100, -100);

}

为什么是-100呢,因为桌面左上角坐标为0,0,都设为-100图标就都放在屏幕外了,整体效果就是图标都消失了。当然可以发挥想象,设置其他值来摆些漂亮的造型。

更多好玩创意视频、程序欢迎关注我的头条号,或者微博6liwe9。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页