Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / 10.2 Как пофиксить Vcl.Dialogs / 8 сообщений из 8, страница 1 из 1
06.12.2018, 18:18
    #39743770
AWSVladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10.2 Как пофиксить Vcl.Dialogs
Купленная 10.2
Хотел изменить штатный модуль Vcl.Dialogs - фигвам
Старый метод не работает: Бросить в каталог с программой/включить явно в проект по своему пути.
Как сейчас можно модифицировать системные делфийские файлы?
...
Рейтинг: 0 / 0
06.12.2018, 18:33
    #39743778
ziv-2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10.2 Как пофиксить Vcl.Dialogs
AWSVladimir,
Копируешь файл в свой каталог, каталог прописываешь в library и debug library в самым первым в настройках делфи.
Меняешь файл, компилируешь, профит :)
...
Рейтинг: 0 / 0
06.12.2018, 19:01
    #39743799
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10.2 Как пофиксить Vcl.Dialogs
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
06.12.2018, 20:20
    #39743844
AWSVladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10.2 Как пофиксить Vcl.Dialogs
ziv-2014
спасибо помогло, только я еще путь в опциях проекта сделал.

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


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