Ich benutze cmake + nmake, um exe zu erstellen, ich möchte das Icon-Handle von der ausführbaren Datei selbst erhalten.Fehler beim Abrufen des EXE-Symbols mit SHGetFileInfo
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
}
Die ausführbare g:/Arbeitsplatz/test2/debug/Test .exe hat Symbol, aber die SHGetFileInfo konnte das Symbol nicht abrufen, was mit der c falsch ist Ode?
Haben Sie den 'uFlags' Parameter mit einem bestimmten Symbol Typ' SHGFI_ICON zu kombinieren versucht | SHGFI_LARGEICON' oder 'SHGFI_ICON | SHGFI_SMALLICON'? Sie sollten auch den Rückgabewert von 'SHGetFileInfo()' überprüfen, um herauszufinden, was vor sich geht. – Cyclonecode
Herkunft Post aktualisiert mit diesen Parametern und Rückgabewert. – aj3423
und was ist der Rückgabewert? – Cyclonecode