whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

24 Visitors Online


 
...switch the XP startpanel to classic or XP style?
Autor: Assarbad
Homepage: http://assarbad.net
[ Print tip ]  

Tip Rating (8):  
     


(***********************************************************************
 ** Who wants to know more about the method how I discovered all this
 ** may have a look at the following URL (German) or contact me via my
 ** forum:
 **
 ** http://www.delphipraxis.net/topic62087,0,asc,0.html
 ***********************************************************************)
type
  
SHELLSTATE = record
    
Flags1: DWORD;
(*
    BOOL fShowAllObjects : 1;
    BOOL fShowExtensions : 1;
    BOOL fNoConfirmRecycle : 1;

    BOOL fShowSysFiles : 1;
    BOOL fShowCompColor : 1;
    BOOL fDoubleClickInWebView : 1;
    BOOL fDesktopHTML : 1;
    BOOL fWin95Classic : 1;
    BOOL fDontPrettyPath : 1;
    BOOL fShowAttribCol : 1; // No longer used, dead bit
    BOOL fMapNetDrvBtn : 1;
    BOOL fShowInfoTip : 1;
    BOOL fHideIcons : 1;
    BOOL fWebView : 1;
    BOOL fFilter : 1;
    BOOL fShowSuperHidden : 1;
    BOOL fNoNetCrawling : 1;
*)
    
dwWin95Unused: DWORD; // Win95 only - no longer supported pszHiddenFileExts
    
uWin95Unused: UINT; // Win95 only - no longer supported cbHiddenFileExts

    // Note: Not a typo!  This is a persisted structure so we cannot use LPARAM
    
lParamSort: Integer;
    iSortDirection: Integer;

    version: UINT;

    // new for win2k. need notUsed var to calc the right size of ie4 struct
    // FIELD_OFFSET does not work on bit fields
    
uNotUsed: UINT; // feel free to rename and use
    
Flags2: DWORD;
(*
    BOOL fSepProcess: 1;
    // new for Whistler.
    BOOL fStartPanelOn: 1;       //Indicates if the Whistler StartPanel mode is ON or OFF.
    BOOL fShowStartPage: 1;      //Indicates if the Whistler StartPage on desktop is ON or OFF.
    UINT fSpareFlags : 13;
*)
  
end;
  LPSHELLSTATE = ^SHELLSTATE;

const
  
SSF_SHOWALLOBJECTS  = $00000001;
  SSF_SHOWEXTENSIONS  = $00000002;
  SSF_HIDDENFILEEXTS  = $00000004;
  SSF_SERVERADMINUI   = $00000004;
  SSF_SHOWCOMPCOLOR   = $00000008;
  SSF_SORTCOLUMNS     = $00000010;
  SSF_SHOWSYSFILES    = $00000020;
  SSF_DOUBLECLICKINWEBVIEW = $00000080;
  SSF_SHOWATTRIBCOL   = $00000100;
  SSF_DESKTOPHTML     = $00000200;
  SSF_WIN95CLASSIC    = $00000400;
  SSF_DONTPRETTYPATH  = $00000800;
  SSF_SHOWINFOTIP     = $00002000;
  SSF_MAPNETDRVBUTTON = $00001000;
  SSF_NOCONFIRMRECYCLE = $00008000;
  SSF_HIDEICONS       = $00004000;
  SSF_FILTER          = $00010000;
  SSF_WEBVIEW         = $00020000;
  SSF_SHOWSUPERHIDDEN = $00040000;
  SSF_SEPPROCESS      = $00080000;
  SSF_NONETCRAWLING   = $00100000;
  SSF_STARTPANELON    = $00200000;
  SSF_SHOWSTARTPAGE   = $00400000;


procedure SHGetSetSettings(var lpss: SHELLSTATE; dwMask: DWORD; bSet: BOOL) stdcall;
  external 'shell32.dll';

procedure SwitchStartpanelXP(xpstyle: Boolean);
var
  
lpss: SHELLSTATE;
  bIsXPstyle: Boolean;
begin
  
ZeroMemory(@lpss, SizeOf(lpss));
  // Retrieve current style
  
SHGetSetSettings(lpss, SSF_STARTPANELON, False);
  // Check the current style
  
bIsXPstyle := (lpss.Flags2 and 2) = 2; // fStartPanelOn
  // If a change occurred
  
if (bIsXPstyle <> xpstyle) then
  begin
    
// If the user wants XP style then set it, else reset it
    
if (xpstyle) then
      
lpss.Flags2 := 2 // fStartPanelOn = 1
    
else
      
lpss.Flags2 := 0; // fStartPanelOn = 0
    // Set new style
    
SHGetSetSettings(lpss, SSF_STARTPANELON, True);
    // Notify desktop of the change
    
PostMessage(FindWindow('Progman', nil), WM_USER + $60, 0, 0);
  end;
  // Notify taskbar
  
PostMessage(FindWindow('Shell_TrayWnd', nil), WM_USER + $0D, 0, 0);
end;


 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners