2012-11-01 3 views
1

내가 컨트롤 패널을 얻을 셸을 사용x64 시스템에서 Windows 제어판을 얻는 방법은 무엇입니까?

코드 :

var 
    psfDeskTop: IShellFolder; 
    psfControl: IShellFolder; 

    pidControl: PITEMIDLIST; 
    pidChild: PITEMIDLIST; 
    pidAbsolute: PItemIdList; 

    pEnumList: IEnumIDList; 
    celtFetched: ULONG; 

    FileInfo: SHFILEINFOW; 

begin 

    OleCheck(SHGetDesktopFolder(psfDeskTop)); 
    OleCheck(SHGetSpecialFolderLocation(0, CSIDL_CONTROLS, pidControl)); 
    OleCheck(psfDeskTop.BindToObject(pidControl, nil, IID_IShellFolder, psfControl)); 
    OleCheck(psfControl.EnumObjects(0, SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN or SHCONTF_FOLDERS, pEnumList)); 

    while pEnumList.Next(1, pidChild, celtFetched) = 0 do 
    begin 

    pidAbsolute := ILCombine(pidControl, pidChild); 
    SHGetFileInfo(LPCTSTR(pidAbsolute), 0, FileInfo, SizeOf(FileInfo), SHGFI_PIDL 
     or SHGFI_DISPLAYNAME); 
    Memo1.Add(FileInfo.szDisplayName); 

    end; 

end; 

그것에서만 컨트롤 패널을 얻을 수있는 32 비트와 같은 : BDE 관리자 (32 비트), 플래시 플레이어 (32 비트), 및 내 운영 체제가 x64인데, 어떻게 모든 (32bit & 64bit) 제어판을 얻는 지 궁금합니까?

+0

32 비트 프로세스가 WOW64의 에뮬레이터에서 실행됩니다. 64 비트 프로세스를 사용하십시오. –

+3

즉, Delphi XE2 또는 XE3을 사용하는 경우 Delphi 대상을 Win32에서 Win64로 변경하십시오. 아직 가지고 있지 않다면 현대적인 32 + 64 비트 델파이 버전을 구하십시오. –

+0

@DavidHeffernan 나는 당신이 대답으로 말한 것을 올리 겠지만, 나는 당신의 의견에 달렸습니다. 왜 대답으로 게시하지 않으시겠습니까? – jachguate

답변

2

64 비트 컨트롤 패널 항목을 보려면 코드를 64 비트 프로세스로 컴파일해야합니다. XE2 이상이 필요합니다.

 
NVIDIA nView Desktop Manager 
Power Options 
Notification Area Icons 
Taskbar and Start Menu 
Credential Manager 
Default Programs 
RemoteApp and Desktop Connections 
Windows Live Language Setting 
Windows Update 
Desktop Gadgets 
Windows Firewall 
Phone and Modem 
Speech Recognition 
User Accounts 
Region and Language 
HomeGroup 
Mouse 
Folder Options 
Keyboard 
Device Manager 
Windows CardSpace 
Performance Information and Tools 
Programs and Features 
Indexing Options 
Network and Sharing Center 
AutoPlay 
Sync Center 
Recovery 
Internet Options 
Devices and Printers 
Color Management 
Backup and Restore 
System 
Action Center 
Fonts 
Windows Anytime Upgrade 
Display 
Troubleshooting 
Getting Started 
Administrative Tools 
Ease of Access Center 
Windows Defender 
Date and Time 
Location and Other Sensors 
Personalization 
Sound 
Java (32-bit) 
DirectX 
Realtek HD Audio Manager 
BDE Administrator (32-bit) 
Advansys Formativ (32-bit) 
Mail (32-bit) 
Microsoft Mail Postoffice (32-bit) 
Flash Player (32-bit) 
NVIDIA Control Panel 

32 비트 프로세스에서 출력은 다음과 같습니다 : 나는 64 비트 프로세스에 코드를하려고하면 다음과 같이 출력은

 
Java 
BDE Administrator 
Advansys Formativ 
Mail 
Microsoft Mail Postoffice 
Flash Player 

주 64 비트 프로세스는 32 개 비트 항목을 열거하는 것이 64 비트 항목은 물론