Только вот засада, попытка изменить ресурс в dll из нее самой, ни к чему не приводит.
Первая же строчка —
hExe = LoadLibrary("hand.dll");
возвращает 0x1000000, GetLastError возвращает "0".
В чем тут дело?
Здравствуйте, Dreama, Вы писали:
D>Здесь пример, как можно менять ресурс в программе: D>http://msdn.microsoft.com/en-us/library/ms648008(VS.85).aspx
D>Только вот засада, попытка изменить ресурс в dll из нее самой, ни к чему не приводит. D>Первая же строчка — D>hExe = LoadLibrary("hand.dll"); D>возвращает 0x1000000, GetLastError возвращает "0".
дык это хорошо!
Return Value
If the function succeeds, the return value is a handle to the module.
Здравствуйте, Dreama, Вы писали:
D>Здравствуйте, Сергей Мухин, Вы писали:
СМ>>дык это хорошо! СМ>>
СМ>>Return Value
D>стормозил, ошибку дает следующая строка - D>hRes = FindResource( hExe, L"IDS_STRING101", RT_STRING);
D>error = 1814 (ERROR_RESOURCE_NAME_NOT_FOUND) D>Но такое имя точно есть. Или тут юникод как-то влияет?
Здравствуйте, Dreama, Вы писали:
D>Здравствуйте, Сергей Мухин, Вы писали:
СМ>>дык это хорошо! СМ>>
СМ>>Return Value
D>стормозил, ошибку дает следующая строка - D>hRes = FindResource( hExe, MAKEINTRESOURCE(IDS_STRING101), RT_STRING);
D>error = 1814 (ERROR_RESOURCE_NAME_NOT_FOUND) D>Но такое имя точно есть. Или тут юникод как-то влияет?
надеюсь это значение у вас определено IDS_STRING101 ?
или как минимум вы знаете чему оно равно
Здравствуйте, Dreama, Вы писали:
D>Здравствуйте, Alexey Frolov, Вы писали:
D>Еще смешнее, вот это работает - D>int asd = LoadString( GetModuleHandle(L"hand.dll"), IDS_STRING101, sz, sizeof(sz)/sizeof(TCHAR));
А тогда, hRes = FindResource( GetModuleHandle(L"hand.dll"), MAKEINTRESOURCE(IDS_STRING101), RT_STRING); работает?
Здравствуйте, Dreama, Вы писали:
D>Здравствуйте, Rocky, Вы писали:
R>>А тогда, hRes = FindResource( GetModuleHandle(L"hand.dll"), MAKEINTRESOURCE(IDS_STRING101), RT_STRING); работает?
D>нет
Ну тогда у меня идей больше нет. Единественное, что могу сказать, что ресурс имеет имя "#101" (т.к. LoadString его грузит), значит проблемы с dll. Из того, что успел посмотреть в инете, был где-то вопрос в форуме по поводу resource dll. В нем говорили, что надо собирать с ключом /NOENTRY (так, кажется). Все, иссяк.
Здравствуйте, Rocky, Вы писали:
R>Ну тогда у меня идей больше нет. Единественное, что могу сказать, что ресурс имеет имя "#101" (т.к. LoadString его грузит), значит проблемы с dll. Из того, что успел посмотреть в инете, был где-то вопрос в форуме по поводу resource dll. В нем говорили, что надо собирать с ключом /NOENTRY (так, кажется). Все, иссяк.
Только что попробовал простейший пример с exe консольным приложением, с вышеуказанным кодом msdn`а. Не работает.
LoadString так же, работает, FindResource нет.
Здравствуйте, Dreama, Вы писали:
D>Только что попробовал простейший пример с exe консольным приложением, с вышеуказанным кодом msdn`а. Не работает. D>LoadString так же, работает, FindResource нет.
Вот с этим, работает —
MAKEINTRESOURCE((101>>4)+1)
но все оказалось зря, для BeginUpdateResource надо чтобы — "it cannot be currently executing",
т.е сам себе файл изменить строку не может. Решения через WinAPi нет?