Вопрос про UpdateResource ???
От: Аноним  
Дата: 02.06.10 13:02
Оценка:
Что в функции UpdateResource
public static extern bool UpdateResource(IntPtr hUpdate, string pType, UInt32 pName,
                                                 UInt16 wLanguage, byte[] pData, UInt32 cbData);

обозначает параметр pName. В статье написано, что это "числовой идентификатор ресурса". Но каким именно число должен быть этот идентификатор? В смысле, это какие-то предопределенные числа или я могу использовать любое число, которым будет помечен ресурс в файле, главное чтобы ресурса с таким-же идентификатором не было
Re: Вопрос про UpdateResource ???
От: Guard_h4s Россия  
Дата: 02.06.10 15:54
Оценка:
Используем сперва поиск

lpName
[in] Pointer to a null-terminated string specifying the name of the resource to be updated. Alternatively, rather than a pointer, this parameter can be MAKEINTRESOURCE(ID), where ID is a resource ID. When creating a new resource do not use a string that begins with a '#' character for this parameter.

Re: Вопрос про UpdateResource ???
От: SaZ  
Дата: 02.06.10 16:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что в функции UpdateResource

А>
А>public static extern bool UpdateResource(IntPtr hUpdate, string pType, UInt32 pName,
А>                                                 UInt16 wLanguage, byte[] pData, UInt32 cbData);
А>

А>обозначает параметр pName. В статье написано, что это "числовой идентификатор ресурса". Но каким именно число должен быть этот идентификатор? В смысле, это какие-то предопределенные числа или я могу использовать любое число, которым будет помечен ресурс в файле, главное чтобы ресурса с таким-же идентификатором не было

Посмотрите, как в C++ (win) объявлен макрос IS_INTRESOURCE. Дело в том, что не смотря на то, что параметр имеет строковый тип он может быть и числом. Со времён Win16 память экономили.

Этот параметр — либо указатель на строку, либо число (какое — вы придумываете сами, но нельзя делать так, чтобы у вас было более одного ресурса одного типа с одинаковым ID). Так что я немного сомневаюсь в правильности объявленной вами сигнатуры.

В общем — попробуйте поэкспериментировать, в том числе со строками вида "#100" — как написал предыдущий автор. В MSDN это всё достаточно подробно расписано.
Re[2]: Вопрос про UpdateResource ???
От: Аноним  
Дата: 02.06.10 16:43
Оценка:
Здравствуйте, SaZ, Вы писали:

А>>
А>>public static extern bool UpdateResource(IntPtr hUpdate, string pType, UInt32 pName,
А>>                                                 UInt16 wLanguage, byte[] pData, UInt32 cbData);
А>>


SaZ>Какое — вы придумываете сами, но нельзя делать так, чтобы у вас было более одного ресурса одного типа с одинаковым ID. Так что я немного сомневаюсь в правильности объявленной вами сигнатуры.


Поиском пользоваться умею, вопрос был не про поиск(это предыдущему автору) Просто из MSDN непонятно, что это просто ЛЮБАЯ строка идентификатор или ОПРЕДЕЛЕННАЯ строка идентификатор, как для параметра pType(например "RT_BITMAP"), вот я и спросил. А то эта функция что-то работать не хочет, уже всё перепробовал. Возвращает true, типа всё в порядке, а ресурс в файл не добавляется. Правда я её использую в проекте на C#, может быть с этим связано Хотя WinAPI должно быть пофигу
Re[3]: Вопрос про UpdateResource ???
От: Guard_h4s Россия  
Дата: 03.06.10 07:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, SaZ, Вы писали:


А>>>
А>>>public static extern bool UpdateResource(IntPtr hUpdate, string pType, UInt32 pName,
А>>>                                                 UInt16 wLanguage, byte[] pData, UInt32 cbData);
А>>>


SaZ>>Какое — вы придумываете сами, но нельзя делать так, чтобы у вас было более одного ресурса одного типа с одинаковым ID. Так что я немного сомневаюсь в правильности объявленной вами сигнатуры.


А>Поиском пользоваться умею, вопрос был не про поиск(это предыдущему автору) Просто из MSDN непонятно, что это просто ЛЮБАЯ строка идентификатор или ОПРЕДЕЛЕННАЯ строка идентификатор, как для параметра pType(например "RT_BITMAP"), вот я и спросил. А то эта функция что-то работать не хочет, уже всё перепробовал. Возвращает true, типа всё в порядке, а ресурс в файл не добавляется. Правда я её использую в проекте на C#, может быть с этим связано Хотя WinAPI должно быть пофигу

Ну, собственно почему любая то? Это именно идентификатор ресурса который вы обновляете. То что я привел выше — цитата из MSDN. Почему не добавляется — надо смотреть на GetLastError(). Возможно в шарпе что-то переиначили и напрямую там нельзя трогать ресурсы вашей сборки. Просто так сказать сложно.
Re[3]: Вопрос про UpdateResource ???
От: SaZ  
Дата: 03.06.10 08:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Поиском пользоваться умею, вопрос был не про поиск(это предыдущему автору) Просто из MSDN непонятно, что это просто ЛЮБАЯ строка идентификатор или ОПРЕДЕЛЕННАЯ строка идентификатор, как для параметра pType(например "RT_BITMAP"), вот я и спросил. А то эта функция что-то работать не хочет, уже всё перепробовал. Возвращает true, типа всё в порядке, а ресурс в файл не добавляется. Правда я её использую в проекте на C#, может быть с этим связано Хотя WinAPI должно быть пофигу


Видимо плохо вы пользуетесь поиском : C# UpdateResource.

P.S. RT_BITMAP — без кавычек. Это не строка, это число. Если вы попробуете добавить ресурс типа "RT_BITMAP" — то это не будет добавлением картинки, это будет добавление пользовательского ресурса "RT_BITMAP".
И насчёт картинок... конкретно .bmp в ресурсах как-то по-особенному лежат. Это не просто дамп .bmp файла.
Re[3]: Вопрос про UpdateResource ???
От: ASMelancholy Россия  
Дата: 03.06.10 13:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, SaZ, Вы писали:


А>>>
А>>>public static extern bool UpdateResource(IntPtr hUpdate, string pType, UInt32 pName,
А>>>                                                 UInt16 wLanguage, byte[] pData, UInt32 cbData);
А>>>


SaZ>>Какое — вы придумываете сами, но нельзя делать так, чтобы у вас было более одного ресурса одного типа с одинаковым ID. Так что я немного сомневаюсь в правильности объявленной вами сигнатуры.


А>Поиском пользоваться умею, вопрос был не про поиск(это предыдущему автору) Просто из MSDN непонятно, что это просто ЛЮБАЯ строка идентификатор или ОПРЕДЕЛЕННАЯ строка идентификатор, как для параметра pType(например "RT_BITMAP"), вот я и спросил. А то эта функция что-то работать не хочет, уже всё перепробовал. Возвращает true, типа всё в порядке, а ресурс в файл не добавляется. Правда я её использую в проекте на C#, может быть с этим связано Хотя WinAPI должно быть пофигу


pType и pName могут быть как числами (практически любыми), так и строками (с некоторыми ограничениями).
Функция может не хотеть работать по многим причинам.
1. Перед использованием нужно сделать BeginUpdateResource.
2. После нужно сделать EndUpdateResource.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.