掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CLSIDでの呼び出しで「ShellExecute」と「ファイル名を指定して実行」で結果が異なる (ID:151158)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Takeさん ありがとうございます。 SHGetFolderPathは本目的のCLSIDキーと定数が結び付きませんでした。 目的のフォルダーとは違いますが、ShlObjに宣言されている幾つかの定数で試しましたが、 CSIDL_DESKTOPはフォルダーを取得でき表示する事はできましたが、CSIDL_PRINTERSは フォルダーさえ取得できない結果となってしまいました。 CSIDL_PRINTERSは'Shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}' ='\control.exe printers'と勝手に解釈しましたが違うのかな? よくわかりません。 manさん ありがとうございます。 正解でございました。 私、32ビットでコンパイルしておりました。 64ビットでコンパイルして正常に「システムアイコン」を表示する事を確認しました。 因みに、DEKOさんのWOW64のリダイレクトを試しましたが、32ビットコンパイラでライブラリ内 の関数(Wow64DisableWow64FsRedirection及びWow64RevertWow64FsRedirection)が呼び出され ているのは確認できましたが、何故か目的の特殊フォルダーを表示する事はできませんでした。 uses uWOW64; procedure TForm1.Button1Click(Sender: TObject); begin var OldValue: LongBool; DisableWow64FsRedirection(OldValue); try // リダイレクトが予想される処理 (ShellExecute など) var StrTxt := 'shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} \SystemIcons'; ShellExecute(Self.Handle, '', PChar(StrTxt), nil, nil, SW_SHOW); //32ビットコンパイルではERROR :2・・・ ERROR_FILE_NOT_FOUND finally RevertWow64FsRedirection(OldValue); end; end; 皆様、お騒がせしました。 また、大変ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.