Использование UpdateResource в С#? ⇐ C#
-
Гость
Использование UpdateResource в С#?
Я пытаюсь изменить значок внешнего исполняемого файла программно. Я погуглил и нашел много информации об этой проблеме с использованием C++. По сути, мне нужно использовать BeginUpdateResource, UpdateResource и EndUpdateResource. Проблема в том, что я не знаю, что передать UpdateResource в C#.
Вот код, который у меня есть:
класс IconChanger { [DllImport("kernel32.dll", SetLastError = true)] статический extern IntPtr BeginUpdateResource(строка pFileName, [MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources); [DllImport("kernel32.dll", SetLastError = true)] static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage, IntPtr lpData, uint cbData); [DllImport("kernel32.dll", SetLastError = true)] статический extern bool EndUpdateResource (IntPtr hUpdate, bool fDiscard); публичное перечисление ICResult { Успех, ФаилБегин, Ошибка обновления, ФэйлЭнд } public ICResult ChangeIcon (строка exeFilePath, byte[] iconData) { // Загружаем исполняемый файл IntPtr handleExe = BeginUpdateResource (exeFilePath, false); если (handleExe == ноль) вернуть ICResult.FailBegin; // Получаем идентификатор языка CultureInfo currentCulture = CultureInfo.CurrentCulture; int pid = ((ushort)currentCulture.LCID) & 0x3ff; int sid = ((ushort)currentCulture.LCID) >> 10; ushort LanguageID = (ushort)((((ushort)pid)
Я пытаюсь изменить значок внешнего исполняемого файла программно. Я погуглил и нашел много информации об этой проблеме с использованием C++. По сути, мне нужно использовать BeginUpdateResource, UpdateResource и EndUpdateResource. Проблема в том, что я не знаю, что передать UpdateResource в C#.
Вот код, который у меня есть:
класс IconChanger { [DllImport("kernel32.dll", SetLastError = true)] статический extern IntPtr BeginUpdateResource(строка pFileName, [MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources); [DllImport("kernel32.dll", SetLastError = true)] static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage, IntPtr lpData, uint cbData); [DllImport("kernel32.dll", SetLastError = true)] статический extern bool EndUpdateResource (IntPtr hUpdate, bool fDiscard); публичное перечисление ICResult { Успех, ФаилБегин, Ошибка обновления, ФэйлЭнд } public ICResult ChangeIcon (строка exeFilePath, byte[] iconData) { // Загружаем исполняемый файл IntPtr handleExe = BeginUpdateResource (exeFilePath, false); если (handleExe == ноль) вернуть ICResult.FailBegin; // Получаем идентификатор языка CultureInfo currentCulture = CultureInfo.CurrentCulture; int pid = ((ushort)currentCulture.LCID) & 0x3ff; int sid = ((ushort)currentCulture.LCID) >> 10; ushort LanguageID = (ushort)((((ushort)pid)
Мобильная версия