日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

windows控制linux桌面图标,完全控制你的Windows桌面 (转)

發(fā)布時(shí)間:2025/3/12 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows控制linux桌面图标,完全控制你的Windows桌面 (转) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

完全控制你的Windows桌面 (轉(zhuǎn))[@more@]

完全控制你的桌面

對(duì)于Windows的桌面界面相信大家已經(jīng)十分熟悉了,占據(jù)屏幕大半部分的是桌面,在上面排列的是桌面圖標(biāo)。

任務(wù)欄一般位于桌面的下面,也可以在桌面其它邊緣。在最左邊是“開(kāi)始按鈕”,接下來(lái)是“啟動(dòng)按鈕”區(qū)、

按鈕區(qū),再下來(lái)是任務(wù)欄圖標(biāo)區(qū),在上面一般會(huì)有音量調(diào)節(jié)圖標(biāo)和輸入法調(diào)節(jié)圖標(biāo)和時(shí)鐘等。

本文首先介紹如何隱藏任務(wù)欄中的上面介紹的部分。我們知道利用Windows的ShowWindow可以隱藏或

者顯示窗口,關(guān)鍵是如何得到窗口的句柄。在Windows下的每一個(gè)窗口不但有一個(gè)窗口句柄標(biāo)示窗口,還有一個(gè)稱(chēng)

為類(lèi)名的字符串標(biāo)示窗口。如果知道窗口的類(lèi)名,通過(guò)FindWindow函數(shù)就可以獲得窗口的句柄。而Windows桌面

本身就是一個(gè)窗口,桌面圖標(biāo)區(qū)、任務(wù)欄以及任務(wù)欄下的開(kāi)始按鈕等都是它的子窗口。我們可以通過(guò)FindWindowEx

函數(shù)來(lái)尋找這些窗口。再利用ShowWindow函數(shù)隱藏或顯示窗口。下面通過(guò)一個(gè)的范例來(lái)演示如何控制任務(wù)欄。

首先建立一個(gè)新的Delphi工程,然后在Form1中加入7個(gè)CheckBox,然后在Form1中添加下面的代碼:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

CheckBox4: TCheckBox;

CheckBox5: TCheckBox;

CheckBox6: TCheckBox;

CheckBox7: TCheckBox;

procedure FormCreate(Sender: T);

private

procedure CheckButtonClick(Sender:TObject);

{ Private declarations }

public

{ Public declarations }

end;

Const

義不同窗口的類(lèi)名

sTrayWindow = '_TrayWnd';

sTrayNotify = 'TrayNotifyWnd';

sStartButton = 'Button';

sAppSwitchBar = 'ReBarWindow32';

sAppSwitch = 'MSTaskSwWClass';

sAppIcon = 'ToolbarWindow32';

sTrayClock = 'TrayClockWClass';

sDesktopIcon = 'ShellDll_DefView';

sProgman = 'Progman';

var

Form1: TForm1;

wnd:Integer;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

CheckBox1.Caption := '隱藏任務(wù)欄';

CheckBox1.OnClick := CheckButtonClick;

CheckBox2.Caption := '隱藏開(kāi)始按鈕';

CheckBox2.OnClick := CheckButtonClick;

CheckBox3.Caption := '隱藏任務(wù)欄圖標(biāo)';

CheckBox3.OnClick := CheckButtonClick;

CheckBox4.Caption := '隱藏程序按鈕';

CheckBox4.OnClick := CheckButtonClick;

CheckBox5.Caption := '隱藏任務(wù)欄時(shí)鐘';

CheckBox5.OnClick := CheckButtonClick;

CheckBox6.Caption := '隱藏桌面圖標(biāo)';

CheckBox6.OnClick := CheckButtonClick;

CheckBox7.Caption := '隱藏快速運(yùn)行圖標(biāo)';

CheckBox7.OnClick := CheckButtonClick;

end;

個(gè)CheckBox控件的Click處理函數(shù)

procedure TForm1.CheckButtonClick(Sender:TObject);

var

i:Integer;

begin

到任務(wù)欄窗口的窗口句柄

wnd := FindWindow(sTrayWindow, nil);

if (TCheckBox(Sender).Name)=? 'CheckBox2' then

wnd := FindWindowEx(wnd, 0, sStartButton, nil);

if (TCheckBox(Sender).Name)=? 'CheckBox3' then

wnd := FindWindowEx(wnd, 0, sTrayNotify, nil);

if (TCheckBox(Sender).Name)=? 'CheckBox4' then begin

wnd := FindWindowEx(wnd, 0, sAppSwitchBar, nil);

wnd := FindWindowEx(wnd, 0, sAppSwitch, nil);

end;

if (TCheckBox(Sender).Name)=? 'CheckBox5' then begin

wnd := FindWindowEx(wnd, 0, sTrayNotify, nil);

wnd := FindWindowEx(wnd, 0, sTrayClock, nil);

end;

if (TCheckBox(Sender).Name)=? 'CheckBox6' then begin

wnd := FindWindow(sProgman, nil);

wnd := FindWindowEx(wnd, 0, sDesktopIcon, nil);

end;

if (TCheckBox(Sender).Name)=? 'CheckBox7' then begin

wnd := FindWindowEx(wnd, 0, sAppSwitchBar, nil);

wnd := FindWindowEx(wnd, 0, sAppIcon, nil);

end;

if TCheckBox(Sender).Checked then

ShowWindow (wnd, SW_H)

Else

ShowWindow (wnd, SW_SHOW);

end;

end.

運(yùn)行程序,分別點(diǎn)擊不同的選擇框,可以分別隱藏任務(wù)欄或任務(wù)欄上的不同部分。

下面再來(lái)介紹如何操控桌面圖標(biāo)。設(shè)置圖標(biāo)文本的背景和顏色以及設(shè)置圖標(biāo)的排列。通過(guò)上面的介紹

上面我們知道,Windows的桌面也是一個(gè)窗口,不同的它是一個(gè)ListView類(lèi)窗口,對(duì)于ListView類(lèi)窗口,有

一系列的以LVM_開(kāi)頭的消息,通過(guò)Windows API函數(shù)SendMessage向ListView類(lèi)窗口發(fā)送這些消息就可以控

制窗口的一些屬性,而且在Delphi中還有一系列的以ListView_開(kāi)頭的函數(shù),這些函數(shù)可以代替LVM_類(lèi)消息。

具體的范例如下:首先建立一個(gè)新的Delphi工程,然后在Form1中加入兩個(gè)Commanutton控件,然后在

Form1中加入以下的代碼:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, StdCtrls,Commctrl;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean);

var

Window: HWND;

begin

Window := FindWindow('Progman', 'Program Manager');

到桌面窗口

Window := FindWindowEx(Window, HWND(nil), 'SHELLDLL_DefView', '');

到放置桌面圖標(biāo)的ListView窗口

Window := FindWindowEx(Window, HWND(nil), 'SysListView32', '');

if Trans then? 置透明的文字背景色

ListView_SetTextBkColor(Window, $ffffffff) // back color

else? 置不透明的文字背景色

ListView_SetTextBkColor(Window, Background); // back color

ListView_SetTextColor(Window, Forground); // foreground color

新繪制桌面圖標(biāo)

ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) - 1);

UpdateWindow(Window);? 新繪制窗口

end;

procedure SetDeskTopIconArr(iWidth,iHeight:Integer);

var

Window: HWND;

i,i1,i2,iCount:integer;

begin

Window := FindWindow('Progman', 'Program Manager');

Window := FindWindowEx(Window, HWND(nil), 'SHELLDLL_DefView', '');

Window := FindWindowEx(Window, HWND(nil), 'SysListView32', '');

置圖標(biāo)與邊界的距離。

i1:=20;i2:=20;

得桌面圖標(biāo)的個(gè)數(shù)

iCount:=ListView_GetItemCount(Window)-1;

for i:=0 to iCount do begin

置圖標(biāo)位置

ListView_SetItemPosition(Window,i,i1,i2);

i1:=i1+iWidth;

if i1>(Screen.Width-32) then begin

i1:=20;

i2:=i2+iHeight;

end;

end;

ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) - 1);

UpdateWindow(Window);

end;

procedure SetDefaultIconColors;

var

Kind: Integer;

Color: TColor;

begin

Kind := COLOR_DESKTOP;

Color := GetSylor(COLOR_DESKTOP);

SetSysColors(1, Kind, Color);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

可以改變clWhite,clBlack為其它的顏色值看看

標(biāo)文本顏色的變化

SetDesktopIconColor(clWhite,clBlack,True);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

置圖標(biāo)的間距為100個(gè)像素

SetDeskTopIconArr(100,100);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Button1.Caption := '設(shè)置圖標(biāo)文本顏色';

Button2.Caption := '設(shè)置圖標(biāo)排列';

end;

end.

在上面的程序中,函數(shù)SetDesktopIconColor設(shè)置圖標(biāo)文本的前景色、背景色和透明,參數(shù)ForeGround

BackGround分別指定文本的前景色和背景色,參數(shù)Trans指定文本的背景是否透明(如果有背景圖案的話)。

函數(shù)SetDeskTopIconArr排列桌面圖標(biāo),參數(shù)iWidth,iHeight分別指定圖標(biāo)之間的橫向縱向距離。如果要使

SetDeskTopIconArr函數(shù)生效,就需要將桌面圖標(biāo)的自動(dòng)排列選項(xiàng)去掉。另外ListView類(lèi)還有其它的控制消息

利用這些消息可以控制更多的桌面圖標(biāo)選項(xiàng)。有興趣的朋友可以察看MSDN庫(kù)。

以上程序由Delphi5編寫(xiě),在Windows98 下運(yùn)行通過(guò)。

總結(jié)

以上是生活随笔為你收集整理的windows控制linux桌面图标,完全控制你的Windows桌面 (转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。