EXE-Icon austauschen
-
Ich versuche das Haupticon einer Anwendung auszutauschen, leider
erhalte ich immer Fehlercode 87 zurück.Was habe ich dabei evtl. übersehen?
CString iconfile = "C:\\test\\icon2.ico"; CString exefile = "C:\\test\\calc.exe"; HANDLE hResLoad = (HICON)LoadImage (NULL, iconfile, IMAGE_ICON, 0, 0, LR_LOADFROMFILE); void* ico_data = GlobalLock(hResLoad); HANDLE hResUpdate = BeginUpdateResource(exefile, false); if(hResUpdate == (HANDLE)NULL) MessageBox(exefile); CString x; x.Format("%i",GetLastError()); MessageBox( x); if(!UpdateResource(hResUpdate, RT_ICON, MAKEINTRESOURCE(0), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), ico_data, GlobalSize(ico_data))) { x.Format("%i",GetLastError()); MessageBox(x); } EndUpdateResource(hResUpdate, false); GlobalUnlock(ico_data);
-
Ich dachet es liegt an RT_ICON was mit RT_GROUP_ICON ersetz werden müsste.
Das ist es aber auch nicht
-
Ein HICON ist nicht das Datenformat, dass in der Ressource verwendet wird.
Lies mal mehr dazu hier:
http://msdn2.microsoft.com/en-us/library/ms997538.aspxEDIT:
Und den habe ich vergessen:
http://www.codeguru.com/forum/showthread.php?threadid=200836
-
Hallo Martin,
danke für die Links!! Ich habe mir jetzt eine Menge durchgelesen,
fürchte aber ich bin nicht fit genug, bzw. es übersteigt noch meinen
Wissenstand.Kannst du mir ein Beispiel geben, wie ich das Icon dann lesen soll bzw.
schreiben soll? Ich fürchte ich muss dann auch noch iregndwie ermitteln
welches Icon das für den Explorer ist, das wird ja auch nicht immer Icon
Nr. 0 in den Ressourcen sein.
-
Ich habe es selbst noch nie benötigt.
Die Datei so wie sie ist lesen. Und mit UpdateResource ändern. Genauso wie es in dem Positin geschrieben steht. Ich denke so müsste es gehen.
-
Nur als Feedback: Habe es leider nicht wie beschrieben hinbekommen.
Es wird einfach das Icon in der Exe nicht überschrieben.Hartes Brot...

-
Warum tauscht du nicht einfach die Grafik aus dem RES-Dir aus?
-
Hi,
ich muss ein Update der Ressource (ICON) vornehmen können, ohne
die EXE neu ausliefern zu müssen.Das Icon im Windows-Explorer ist ein Indikator für den Dateistatus, wie man
es auch aus dem Tray kennt.Aber irgendwie bin ich in der Sache wohl verloren...
-
Das Icon im Windows Explorer wird gecached. Wenn Du dieses in der EXE änderst wird es sich nicht direkt im Explorer ändern!