Page 7 of 12
Re: Начинающий
Posted: Wed Nov 21, 2012 4:40 pm
by IgorA
GerdtR wrote:Пока интересует функции OpenDialog в proc_lib. Я так понял это для появления окна открытия файла.
можно тут посмотреть
http://wiki.kolibrios.org/wiki/OpenDialog/ru
Re: Начинающий
Posted: Wed Nov 21, 2012 5:03 pm
by GerdtR
Спасибо. Я ещё нашел пояснялки в исходниках:) Сразу не додумался посмотреть. Осталось только исходники обновить. А то у меня ещё с 0.7.7.0.
Re: Начинающий
Posted: Wed Nov 21, 2012 10:52 pm
by CleverMouse
dev64, судя по приведённому посту, вторая ссылка неверная, поскольку ведёт на код возможного загрузочного сектора. Правильная ссылка - на kernel/trunk/kernel.asm, примерно с начала до первой команды jmp osloop, но там далеко не только начальная загрузка. Менее конкретных ссылок нет. Конкретные вопросы по устройству ядра - более конкретные, чем "как грузится система?" - можно задавать отдельно. Например,
вот тут были достаточно конкретные вопросы, и на них были конкретные ответы.
Re: Начинающий
Posted: Thu Nov 22, 2012 7:13 pm
by dev64
CleverMouse, спасибо за ссылочки, особенно внутри форума. Ядро уже слегка смотрел. Код оно конечно что ж, код оно неплохо тож

Но без RиTFM-а далеко не уплывешь

Re: Начинающий
Posted: Sun Nov 25, 2012 10:47 pm
by GerdtR
И опять вопрос:) Моя программка должна читать внешний файл, но дело в том, что это файл лежит там же где и прога, а где лежит прога не известно. Надо как-то узнать, где лежит прога. Как?
Re: Начинающий
Posted: Sun Nov 25, 2012 10:50 pm
by SoUrcerer
Можно просто открывать файл по имени, без указания пути - должно сработать.
Re: Начинающий
Posted: Sun Nov 25, 2012 11:07 pm
by GerdtR
Не-а. По умолчанию каталог /rd/1. Он там его и ищет. А моя прога пока не настолько разработана, что бы её в дистрибутив добавлять:)
Re: Начинающий
Posted: Sun Nov 25, 2012 11:28 pm
by SoUrcerer
Программа на ассемблере?
Re: Начинающий
Posted: Sun Nov 25, 2012 11:30 pm
by dunkaist
Когда-то в змейке делал так. В заголовке программы есть поле для указателя на абсолютный путь запущенного бинарника. Если в общих словах, то нужно делать так:
Code: Select all
mov edi, cur_dir_path
xor eax, eax
mov ecx, 4096
repne scasb
mov al, '/'
neg ecx
add ecx, 4096
std
repne scasb
cld
mov dword[edi+2], 'file'
mov dword[edi+6], 'name'
Это, скорее, псевдокод. На веру принимать не стоит. Для понимания следует спокойно разобраться с цепочечными командами и флагом направления (direction flag) по какой-нибудь книжке. Например, по Юрову.
Re: Начинающий
Posted: Sun Nov 25, 2012 11:33 pm
by SoUrcerer
Для 70й функции:
Также функция поддерживает относительные имена. Если путь начинается не с '/', то он считается относительно текущей папки. Получить или установить текущую папку можно с помощью сисфункции 30.
Далее. Посмотри внимательно на заголовок программы - MENUET01 и так далее. Последний параметр - это указатель на путь, откуда запущена программа.
Re: Начинающий
Posted: Sun Nov 25, 2012 11:45 pm
by 0CodErr
Code: Select all
db 'MENUET01' ; 8-байтный идентификатор MenuetOS
dd 0x01 ; версия заголовка (всегда 1)
dd START ; адрес первой команды
dd I_END ; размер программы
dd 0x1000 ; количество памяти
dd 0x1000 ; адрес вершины стэка
dd 0x0 ; адрес буфера для параметров
dd path; <---------------адрес буфера для пути
;...................................
path: rb 1024 ; после запуска программы в этом буфере будет путь
Re: Начинающий
Posted: Sun Nov 25, 2012 11:47 pm
by dunkaist
Век живи -- век учись. Я помнил, что такое как-то возможно, но сходу не нашёл. А готовый костылик подкинуть всегда проще.
Re: Начинающий
Posted: Sun Nov 25, 2012 11:50 pm
by GerdtR
Спасибо. У меня просто не было современных описаний заголовка:( Ах да. Чуть не забыл. SoUrcerer, программа на асме. Прямо в Колибри пишу:)
Re: Начинающий
Posted: Fri Nov 30, 2012 1:02 am
by GerdtR
Вопрос: можно ли считывать текст с чужого окна. Хотя бы с Tinypad'а?
Re: Начинающий
Posted: Fri Nov 30, 2012 1:13 am
by SoUrcerer
Можно получить копию экрана. Текст после вывода на экран становится растровым изображением, превратить растровое изображение обратно в текст затруднительно (хотя я делал это даже в Колибри, не помню, выкладывал или нет OCR).