powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / 10.2 Как пофиксить Vcl.Dialogs
8 сообщений из 8, страница 1 из 1
10.2 Как пофиксить Vcl.Dialogs
    #39743770
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Купленная 10.2
Хотел изменить штатный модуль Vcl.Dialogs - фигвам
Старый метод не работает: Бросить в каталог с программой/включить явно в проект по своему пути.
Как сейчас можно модифицировать системные делфийские файлы?
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743778
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AWSVladimir,
Копируешь файл в свой каталог, каталог прописываешь в library и debug library в самым первым в настройках делфи.
Меняешь файл, компилируешь, профит :)
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743799
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AWSVladimirКупленная 10.2
Хотел изменить штатный модуль Vcl.Dialogs - фигвам
Старый метод не работает: Бросить в каталог с программой/включить явно в проект по своему пути.
Как сейчас можно модифицировать системные делфийские файлы?

Как вариант не подойдет?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
procedure PatchRoutine(ASystemRoutine, AOverrideRoutine: TFarProc);
const
  JUMP_FAR = $E9;
var
  Protect: DWORD;
  OldProtect: DWORD;
  Address: Integer;
begin
  VirtualProtect(ASystemRoutine, 256, PAGE_EXECUTE_READWRITE, @OldProtect);
  if PByte(ASystemRoutine)^ <> JUMP_FAR then
  begin
    PByte(ASystemRoutine)^ := JUMP_FAR;
    Address := Integer(AOverrideRoutine) - Integer(ASystemRoutine) - 5;
    PInteger(DWORD(ASystemRoutine) + 1)^ := Address;
  end;
  VirtualProtect(ASystemRoutine, 256, OldProtect, @Protect);
  FlushInstructionCache(GetCurrentProcess, ASystemRoutine, 256)
end;

procedure MyShowMessage(const Msg: string);
begin
  MessageBox(Application.Handle, PChar('Calling MyShowMessage'), MyShowMessage, MB_ICONWARNING)
end;

//////////////////////////

PatchRoutine(@Vcl.Dialogs.ShowMessage, @MyShowMessage);
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743844
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014
спасибо помогло, только я еще путь в опциях проекта сделал.

Квейд
Спасибо тоже, ну ты монстр )))
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743917
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что просто подключить под другим именем и в списке USES указать его последним уже не работает ?
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743920
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему 256? Из-за гранулярности памяти?
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39743922
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде же достаточно 5 байт...
...
Рейтинг: 0 / 0
10.2 Как пофиксить Vcl.Dialogs
    #39744053
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая цель?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / 10.2 Как пофиксить Vcl.Dialogs
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]