私はcmake + nmakeを使ってexeをビルドしていますが、実行ファイル自体からアイコンハンドルを取得したいと思います。SHGetFileInfoでexeアイコンを取得するのに失敗しました
CMakeLists.txt:
add_executable(test test.cpp test.rc)
test.rc:
IDI_ICON ICON DISCARDABLE "test.ico"
IDI_ICON0 ICON DISCARDABLE "test.ico"
IDI_ICON1 ICON DISCARDABLE "test.ico"
IDI_ICON2 ICON DISCARDABLE "test.ico"
TEST.CPP:
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
DWORD_PTR ret = ::SHGetFileInfo("g:/workspace/test2/debug/test.exe",
0, &sfi, sizeof(sfi), SHGFI_LARGEICON|SHGFI_SMALLICON|SHGFI_ICON);
cout << hex;
cout << ret << endl; // prints 0
cout << sfi.hIcon << endl; // prints 0
}
実行G:/ワークスペース/ TEST2 /デバッグ/試験.exeにはアイコンがありますが、SHGetFileInfoがアイコンを取得できませんでした.cの問題オデ?
あなたが特定のアイコンタイプ 'SHGFI_ICONで' uFlags'パラメータを組み合わせてみました| SHGFI_LARGEICON'または 'SHGFI_ICON | SHGFI_SMALLICON'?また、 'SHGetFileInfo()'の戻り値をチェックして、何が起きているのか把握する必要があります。 – Cyclonecode
これらのパラメータと戻り値で更新されたオリジンポスト。 – aj3423
と戻り値は何ですか? – Cyclonecode