1

シェルを使用してコントロール パネルを取得します

コード :

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;

BDE Administrator (32 ビット)、Flash Player (32 ビット)、および私のオペレーティング システムが x64 のような 32 ビットのコントロール パネルのみを取得できます。

4

1 に答える 1

2

64 ビットのコントロール パネル項目を表示するには、コードを 64 ビット プロセスとしてコンパイルする必要があります。それには XE2 以降が必要です。コードを 64 ビット プロセスで試すと、出力は次のようになります。

NVIDIA nView デスクトップ マネージャー
電源オプション
通知領域のアイコン
タスクバーとスタート メニュー
資格情報マネージャ
既定のプログラム
RemoteApp とデスクトップ接続
Windows Live 言語設定
Windows Update
デスクトップガジェット
Windowsファイアウォール
電話とモデム
音声認識
ユーザーアカウント
地域と言語
ホームグループ
ねずみ
フォルダ オプション
キーボード
デバイスマネージャ
Windows カードスペース
パフォーマンス情報とツール
プログラムと機能
索引付けオプション
ネットワークと共有センター
自動再生
同期センター
回復
インターネット設定
デバイスとプリンター
カラーマネジメント
バックアップと復元
システム
アクションセンター
フォント
Windows Anytime アップグレード
画面
トラブルシューティング
入門
管理ツール
簡単操作センター
Windows ディフェンダー
日時
位置およびその他のセンサー
パーソナライゼーション
音
Java (32 ビット)
DirectX
Realtek HD オーディオ マネージャー
BDE 管理者 (32 ビット)
Advansys Formativ (32 ビット)
メール (32 ビット)
Microsoft メール ポストオフィス (32 ビット)
Flash Player (32 ビット)
NVIDIA コントロール パネル

32 ビット プロセスでは、出力は次のようになります。

ジャワ
BDE 管理者
アドバンシス フォーマティブ
郵便
Microsoft メール ポストオフィス
フラッシュプレーヤー

64 ビット プロセスでは、64 ビット項目だけでなく 32 ビット項目も列挙されることに注意してください。

于 2012-11-05T09:19:35.853 に答える