您的位置 首页 > 数码极客

如何桌面实现贪吃蛇

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

摆成I的字母形状

摆成原型

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

vHandle = FindWindowEx(vHandle, In, "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。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何桌面实现贪吃蛇,桌面贪吃蛇代码”边界阅读