Вверх ↑
Этот топик читают: z80, Гость
Ответов: 1343
Рейтинг: 31
#646: 2023-09-25 15:19:57 ЛС | профиль | цитата

Add(MainForm,2953706,77,322)
{
link(onCreate,11968823:doRead,[])
}
Add(InlineCode,11968823,140,336)
{
@Color=11141120
WorkPoints=#6:doRead|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|0:|10: private|0:|9: public|23: Adress: THI_Event;|51: procedure doRead(var _Data:TData; Index:word);|5: end;|0:|0:|0:|14:implementation|0:|0:|0:|0:|29:procedure THiAsmClass.doRead;|0:|3:var|20: Context: TContext;|32: ProcInfo: TProcessInformation;|26: StartInfo: TStartupInfo;|0:|5:begin|46: ZeroMemory(@StartInfo, SizeOf(StartupInfo));|41: ZeroMemory(@Context, SizeOf(TContext));|123: CreateProcess(nil, PChar(trim('Projectx64.exe')), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcInfo);|0:|39: Context.ContextFlags := CONTEXT_FULL;|46: GetThreadContext(ProcInfo.hThread, Context);|22: _debug(Context.Rbx);|4:end;|0:|0:|4:end.|
}



x32 работает с приложениями x32 и получает EBX
x64 не работает с приложениями x64 и на запрос RBX 0

это что то с пакетом не так или я чего то не доганяю?
карма: 2

0
Ответов: 4644
Рейтинг: 757
#647: 2023-09-25 20:38:17 ЛС | профиль | цитата
1) Возможно, для CreateProcess() нужно заполнить StartupInfo (как минимум, cb)
2)
GetThreadContext писал(а):
You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext.
Можно попробовать передать флаг CREATE_SUSPENDED в CreateProcess().

3) В исходниках FPC есть приписка "{$note todo, fix alignment }" при объявлении структуры CONTEXT - возможно, что и некорректно объявлена для x64. Нужно дампить возвращаемый результат и смотреть что где находится, по каких смещениях.
карма: 26

0
Ответов: 1343
Рейтинг: 31
#648: 2023-10-20 15:30:38 ЛС | профиль | цитата
оказалось всё работает и просто у x64 приложений некоторые данные хранятся в других регистрах, но никак не RBX (EBX) как у x32
карма: 2

0
Ответов: 4644
Рейтинг: 757
#649: 2025-03-15 18:28:17 ЛС | профиль | цитата
Обновлен пакет до ревизии 2425 официального SVN
Также были изменения в компиляторе.

У кого уже было установлено:
1) Установить компилятор поверх существующего с помощью инсталлятора, указав тот же каталог HiAsm
2) Заменить папку "Elements\Delphi" на ту, что в архиве "Delphi pack FPC 3.2.2 (SVN rev 2425) Unicode.rar"

http://depositfiles.com/files/fluocx0jd
карма: 26

0
Ответов: 155
Рейтинг: 4
#650: 2025-03-17 09:01:09 ЛС | профиль | цитата
Пытаюсь прикрутить GZIP с темы https://forum.hiasm.com/topic/65680. Спрашивает 'paszlib' - библиотеку просит?
отредактированный мной KolZLib.pas я прикладываю.
https://disk.yandex.ru/d/tnYuBXRZvEMnzQ

Редактировалось 2 раз(а), последний 2025-03-17 09:02:56
карма: 1

0
Ответов: 4644
Рейтинг: 757
#651: 2025-03-17 21:46:49 ЛС | профиль | цитата
Я на выходных доработаю компонент для нового пакета.
карма: 26

0
Ответов: 415
Рейтинг: 57
#652: 2025-03-22 21:16:30 ЛС | профиль | цитата
Netspirit, После обновления Delphi pack FPC 3.2.2 (SVN rev 2425) Unicode кнопки BitBtn стали выдавать команды без нажатия, достаточно просто навести мышку. Причём зацикливаются.
TrackBar на форме стал отображаться как дырка в программе. В отдельной схеме повторить ошибку TrackBar не удалось. Схема кнопки на форме и Message ниже. Компилировал и FPC-32 и FPC-32U
Add(MainForm,2953706,21,105)
{
Width=307
Height=158
}
Add(BitBtn,15862760,91,91)
{
@Hint=#8:Свернуть|
Left=35
Top=45
Width=90
Height=23
Color=16777215
Ctl3D=0
WinStyle=1
Hint="Скрыть "Виды работ""
Frame=1
FrameColor=15793151
Caption="Скрыть"
Data=Integer(1)
Point(doVisible)
link(onClick,7181011:doMessage,[])
}
Add(Message,7181011,140,91)
{
}
Откатил до прошлой версии (и компилятор переустановил FPC 3.2.2 и папку Delphi вернул), всё стало нормально.
Возможно только у меня. Операционная Windows 8 64

Редактировалось 3 раз(а), последний 2025-03-22 21:27:08
карма: 0

0
Ответов: 4644
Рейтинг: 757
#653: 2025-03-22 21:27:25 ЛС | профиль | цитата
Ясно. Посмотрю.
карма: 26

0
Ответов: 4644
Рейтинг: 757
#654: 2025-03-23 00:10:20 ЛС | профиль | цитата
Проблема с BitBtn - из-за подсказки в Hint и каких-то отличий оконной процедуры BitBtn в новой KOL.
Для исправления в файле Win.pas после строки 931 (SetTimer...) добавить две строчки:

Result := True;
Exit;


TrackBar - не смог воспроизвести.
карма: 26

1
Голосовали:Poputchik
654
Сообщение
...
Прикрепленные файлы
(файлы не залиты)