查了很多资料,要不是说改注册表
hkey_current_user\software\microsoft\windows\currentversion\policies\explorer
中的"NoDesktop"=1
就是通过 hDeskIcon:=FindWindow('Progman',nil);
ShowWindow(hDeskIcon,SW_HIDE);
但这都是隐藏桌面,而不是隐藏桌面图标,隐藏桌面会把桌面的壁纸,右键都隐藏了,我要的仅仅是隐藏桌面图标,桌面壁纸要可以显示,有哪位大虾知道?
hkey_current_user\software\microsoft\windows\currentversion\policies\explorer
中的"NoDesktop"=1
就是通过 hDeskIcon:=FindWindow('Progman',nil);
ShowWindow(hDeskIcon,SW_HIDE);
但这都是隐藏桌面,而不是隐藏桌面图标,隐藏桌面会把桌面的壁纸,右键都隐藏了,我要的仅仅是隐藏桌面图标,桌面壁纸要可以显示,有哪位大虾知道?
var h : THandle;
begin
h := FindWindow('ProgMan', nil);
h := GetWindow(h, GW_CHILD);
if YesNo = True then
ShowWindow(h, SW_SHOW)
else
ShowWindow(h, SW_HIDE);
end;
Handle,Handle2: THandle;
begin
Handle := FindWindow('progman', 'Program Manager');
Handle2 := GetTopWindow(Handle);
Handle2 := GetTopWindow(Handle2);
EnableWindow(Handle,False);
ShowWindow(Handle2, SW_HIDE);
end;
Handle,Handle2: THandle;
begin
Handle := FindWindow('progman', 'Program Manager');
Handle2 := GetTopWindow(Handle);
Handle2 := GetTopWindow(Handle2);
//EnableWindow(Handle,False);
ShowWindow(Handle2, SW_HIDE);
end;
LVM_ARRANGE ListView_Arrange
LVM_CREATEDRAGIMAGE ListView_CreateDragImage
LVM_DELETEALLITEMS ListView_DeleteAllItems
LVM_DELETECOLUMN ListView_DeleteColumn
LVM_DELETEITEM ListView_DeleteItem
LVM_EDITLABEL ListView_EditLabel
LVM_ENSUREVISIBLE ListView_EnsureVisible
LVM_FINDITEM ListView_FindItem
LVM_GETBKCOLOR ListView_GetBkColor
LVM_GETCALLBACKMASK ListView_GetCallbackMask
LVM_GETCOLUMN ListView_GetColumn
LVM_GETCOLUMNWIDTH ListView_GetColumnWidth
LVM_GETCOUNTPERPAGE ListView_GetCountPerPage
LVM_GETEDITCONTROL ListView_GetEditControl
LVM_GETIMAGELIST ListView_GetImageList
LVM_GETISEARCHSTRING ListView_GetISearchString
LVM_GETITEM ListView_GetItem
LVM_GETITEMCOUNT ListView_GetItemCount
LVM_GETITEMPOSITION ListView_GetItemPosition
LVM_GETITEMRECT ListView_GetItemRect
LVM_GETITEMSPACING ListView_GetItemSpacing
LVM_GETITEMSTATE ListView_GetItemState
LVM_GETITEMTEXT ListView_GetItemText
LVM_GETNEXTITEM ListView_GetNextItem
LVM_GETORIGIN ListView_GetOrigin
LVM_GETSELECTEDCOUNT ListView_GetSelectedCount
LVM_GETSTRINGWIDTH ListView_GetStringWidth
LVM_GETTEXTBKCOLOR ListView_GetTextBkColor
LVM_GETTEXTCOLOR ListView_GetTextColor
LVM_GETTOPINDEX ListView_GetTopIndex
LVM_GETVIEWRECT ListView_GetViewRect
LVM_HITTEST ListView_HitTest
LVM_INSERTCOLUMN ListView_InsertColumn
LVM_INSERTITEM ListView_InsertItem
LVM_REDRAWITEMS ListView_RedrawItems
LVM_SCROLL ListView_Scroll
LVM_SETBKCOLOR ListView_SetBkColor
LVM_SETCALLBACKMASK ListView_SetCallbackMask
LVM_SETCOLUMN ListView_SetColumn
LVM_SETCOLUMNWIDTH ListView_SetColumnWidth
LVM_SETIMAGELIST ListView_SetImageList
LVM_SETITEM ListView_SetItem
LVM_SETITEMCOUNT ListView_SetItemCount
LVM_SETITEMPOSITION ListView_SetItemPosition
LVM_SETITEMPOSITION32 ListView_SetItemPosition32
LVM_SETITEMSTATE ListView_SetItemState
LVM_SETITEMTEXT ListView_SetItemText
LVM_SETTEXTBKCOLOR ListView_SetTextBkColor
LVM_SETTEXTCOLOR ListView_SetTextColor
LVM_SORTITEMS ListView_SortItems
LVM_UPDATE ListView_Update
var
wnd:HWND;
begin
Wnd := GetDesktopWindow;
Wnd := FindWindowEx(Wnd, 0, 'Progman', nil);
Wnd := FindWindowEx(Wnd, 0, 'SHELLDLL_DefView', nil);
Wnd := FindWindowEx(Wnd, 0, 'SysListView32', nil);
SendMessage(wnd, LVM_DELETEALLITEMS, 0, 0);
end;呵~~~
begin
Result:=GetWindow(GetWindow(FindWindow(PChar('progman'),nil),GW_CHILD),GW_CHILD);
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
ShowWindow(GetDesktopWindow,SW_SHOW);end;procedure TForm1.btn2Click(Sender: TObject);
begin
ShowWindow(GetDesktopListview,SW_HIDE);
end;这样就可以了,不过如果你用菜单刷新,图标会再次出来的
有没有按刷新都不回出来的方法呀?
CreateDesktop
SwitchDesktop
不过要慎用
要刷新也不出来,那把Explorer进程杀了:)
or
ShowWindow(Handle2, SW_SHOWMINIMIZED)