tft每日頭條

 > 圖文

 > 教你如何換遊戲圖标

教你如何換遊戲圖标

圖文 更新时间:2025-02-08 21:58:15

最近我發布了一些關于桌面圖标的有趣視頻,例如哎呀,我的桌面瘋掉了,我的電腦會替我說愛你,裡面利用圖标擺出各種各樣的造型,還有桌面上的圖标可以玩貪吃蛇,天哪,技術宅們的電腦這麼神奇嗎?用圖标玩起了貪吃蛇。

教你如何換遊戲圖标(這些圖标我可以玩一年)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。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved