查了很多资料,要不是说改注册表
hkey_current_user\software\microsoft\windows\currentversion\policies\explorer
中的"NoDesktop"=1 
就是通过 hDeskIcon:=FindWindow('Progman',nil);
ShowWindow(hDeskIcon,SW_HIDE);
但这都是隐藏桌面,而不是隐藏桌面图标,隐藏桌面会把桌面的壁纸,右键都隐藏了,我要的仅仅是隐藏桌面图标,桌面壁纸要可以显示,有哪位大虾知道?

解决方案 »

  1.   

    在桌面上按右键-->排列图标-->显示桌面图标的钩去掉
      

  2.   

    procedure ShowDesktop(const YesNo : boolean);  //YesNo =True 显示桌面图标,YesNo=False 隐藏桌面图标;
    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;
      

  3.   

    var
      Handle,Handle2: THandle;
    begin
      Handle := FindWindow('progman', 'Program Manager');
      Handle2 := GetTopWindow(Handle);
      Handle2 := GetTopWindow(Handle2);
      EnableWindow(Handle,False);
      ShowWindow(Handle2, SW_HIDE);
    end;
      

  4.   

    var
      Handle,Handle2: THandle;
    begin
      Handle := FindWindow('progman', 'Program Manager');
      Handle2 := GetTopWindow(Handle);
      Handle2 := GetTopWindow(Handle2);
      //EnableWindow(Handle,False);
      ShowWindow(Handle2, SW_HIDE);
    end;
      

  5.   

    An application sends messages to a list view control to alter its appearance, add or change items and columns, and so on. Each message has a corresponding macro that you can use instead of sending the message explicitly. Message Corresponding Macro
    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
      

  6.   

    厉害,已经可以了,呵呵naughtyboy(重归起跑线)的应该可以
      

  7.   

    uses 中加入 CommCtrl 单元procedure TForm1.Button1Click(Sender: TObject);
    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;呵~~~
      

  8.   

    function Getdesktoplistview:HWND;
    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;这样就可以了,不过如果你用菜单刷新,图标会再次出来的
      

  9.   

    naughtyboy(重归起跑线)  的是不错喔,但刷新一下图标就出来了.
    有没有按刷新都不回出来的方法呀?
      

  10.   

    另外可以通过virtual Desktop实现
    CreateDesktop
    SwitchDesktop
    不过要慎用
      

  11.   

    如果是virtual Desktop的话,那就和隐藏桌面差不多了,不是隐藏隐藏桌面图标.
      

  12.   

    有意思,桌面上那些个图标实际是放了个ListView啊
    要刷新也不出来,那把Explorer进程杀了:)
      

  13.   

    tjianliang(乡关何处),你太搞笑了,呵呵
      

  14.   

    ShowWindow(Handle2, SW_SHOWMINIMIZED or SW_SHOWNOACTIVATE);
    or 
    ShowWindow(Handle2, SW_SHOWMINIMIZED)
      

  15.   

    ShowWindow(Handle2, SW_SHOWMINNOACTIVE)
      

  16.   

    我看过最狠的方法还是把Explorer进程杀了,直接后果是必须重新启动计算机…… 我同事干的 呵呵当时他郁闷死了!不一定非要瘾藏桌面,你可以用一个虚拟桌面来替代现在的桌面啊,具体的用google找找吧
      

  17.   

    运行gpedit.msc 在那里设置就好了