![]() |
Изменение иконки exe файла.
Нужно програмно изменить иконку exe файла,на иконку которая находиться в ресурсах приложения которое будет изменять.
Написал такой код,но почемуто стандартная икона не меняеться на нужную мне. В чем может быть проблема? Код:
int main(int argc, char* argv[]) |
Чтобы изменить ресурсы, нужно открыть файл на запись а он у тебя запущен.
|
Но он то в ресурсы пишеться,просто пишеться не так как нада.В ресурсах файла есть "Иконка",так вот заместь того чтобы переписать ее ,создаеться еще одна "Иконка"
|
а ты тут не пробовал читать?
http://msdn.microsoft.com/en-us/library/ms648008(v=VS.85).aspx#_win32_Updating_Resources |
Те же самые функции я использую в совем коде.
|
*WALL* молодец... только не в том порядке... ты даже на загружаешь файл куда хочешь внести изменения...
хотя вроде правильно... единственное чтобы изменить ресурс ты должен знать точный его индификтор (номер) в файле ip.exe |
Цитата:
|
редактором ресурсов руками
|
учись читать MSDN
http://msdn.microsoft.com/en-us/library/ms648005(v=VS.85).aspx - перечисление ресурсов я думаю тебе пойдет вот эта функция EnumResourceNames c типом RC_ICON 1 делаешь HMODULE hExe = LoadLibrary(TEXT("ip.exe")); if (hExe == NULL) return -1; 2 EnumResourceNames почитай тут кароче http://msdn.microsoft.com/en-us/library/ms648008(v=VS.85).aspx#_win32_Creating_a_Resource_ List там все примеры в общем получив имя ресурса или его id в случае если IS_INTRESOURCE ты уже можешь вызвать UpdateResource // Open the file to which you want to add the dialog box resource. hUpdateRes = BeginUpdateResource(TEXT("foot.exe"), FALSE); if (hUpdateRes == NULL) { ErrorHandler(TEXT("Could not open file for writing.")); return; } // Add the dialog box resource to the update list. result = UpdateResource(hUpdateRes, // update resource handle RT_DIALOG, // change dialog box resource MAKEINTRESOURCE(IDD_FOOT_ABOUTBOX), // dialog box id MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), // neutral language lpResLock, // ptr to resource info SizeofResource(hExe, hRes)); // size of resource info где MAKEINTRESOURCE(IDD_FOOT_ABOUTBOX) это как раз имя найденого ресурса lpName которое в функции EnumNamesFunc ------------ кароче мне лень запускать VS ))) |
Вообще ты не имеешь право менять ресурсы у себяже потому что это вызовет сбой. Зато ты можеш сделать копию своейже проги и у неё менять ресурс.
А вообще чтобы забрать ресурс из чужой проги/dll нельзя юзать LoadLibrary (т.е. можно но это неправильно и хавает больше ресурсов) Для таких целей юзается LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE. Потому как гласит MS Цитата:
|
Вы вобще читали мой первый пост?
Я не пытаюсь менять ресурсы у себя,я хочю изменить ресурс(иконку)у другого приложения! |
| Время: 07:03 |