Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменить ресурсные строки во время выполнения

Delphi , Файловая система , Ресурсы

Изменить ресурсные строки во время выполнения

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   Consts;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   InputBox('Test', 'Enter something', 'Test');
 end;

 procedure HookResourceString(rs: PResStringRec; newStr: PChar);
 var
   oldprotect: DWORD;
 begin
   VirtualProtect(rs, SizeOf(rs^), PAGE_EXECUTE_READWRITE, @oldProtect);
   rs^.Identifier := Integer(newStr);
   VirtualProtect(rs, SizeOf(rs^), oldProtect, @oldProtect);
 end;

 const
   NewOK: PChar = 'New Ok';
   NewCancel: PChar = 'New Cancel';

 initialization
   HookResourceString(@SMsgDlgOK, NewOK);
   HookResourceString(@SMsgDlgCancel, NewCancel);
 end.

Программный код на языке Delphi изменяет строковые ресурсы в реальном времени. Он использует функцию hook HookResourceString для модификации строковых ресурсов констант SMsgDlgOK и SMsgDlgCancel.

Вот шаг за шагом, что код делает:

  1. Процедура события Button1Click вызывается при клике кнопки с текстом "Enter something". Это открывает диалоговое окно ввода с помощью функции InputBox.
  2. В процедуре HookResourceString, она использует API-функцию VirtualProtect для временного изменения защиты ресурсной строки (rs) из только-чтения в чтение-запись.
  3. Затем она модифицирует поле Identifier ресурсной строки, чтобы указать на новый строковый ресурс (newStr). Это изменяет текст, отображаемый для кнопок "OK" и "Cancel" в диалоговых окнах сообщений.
  4. После модификации строки, она возвращает к оригинальному захисту с помощью VirtualProtect.

Константы NewOK и NewCancel устанавливаются на "New Ok" и "New Cancel", соответственно.

В секции инициализации процедура HookResourceString вызывается дважды для модификации текстов кнопок "OK" и "Cancel" в диалоговых окнах сообщений. Модифицированные строки будут использоваться для последующих диалоговых окон, открытий из этого приложения.

Обратите внимание, что изменение строковых ресурсов в реальном времени может иметь неожиданные последствия и привести к неожиданным поведениям или краху, если не сделано правильно. Кроме того, это код работает только на платформе Windows, где Delphi запущен под native API Windows.

В статье описывается способ изменения ресурсных строк программы Delphi во время выполнения с помощью процедуры HookResourceString и использования функции VirtualProtect для изменения защиты страниц памяти.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ресурсы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-27 01:45:39/0.0032451152801514/0