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).