Помогите новичку

Applications development, KoOS API questions
  • 32 мало так и на приложения хрен останется, лучше при 64, а лучше вообще вручную - пользователю видней.
  • 1. В Колибри 0.7.7.0 есть две похожие программы
    Spoiler:
    openfile.png
    openfile.png (14.42 KiB)
    Viewed 4285 times
    Исходники к Open File я найти не смог. Не подскажите где искать? На SVN есть исходники Opendialog, это эта программа?

    2.Файлы с окончанием .mac для чего, где используются?
    Last edited by z525 on Sun Dec 25, 2011 5:20 pm, edited 1 time in total.
  • Open File - это диалоговое окно на основе X-tree. X-tree является устаревшей программой, как и диалог Opne file на базе X-tree. Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.
  • SoUrcerer wrote:Open File - это диалоговое окно на основе X-tree. X-tree является устаревшей программой, как и диалог Opne file на базе X-tree. Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.
    Всеравно хотелось бы на исходники посмотреть. Считаю что до тех пор пока программа работает, она может пригодиться кому-нибудь чем-нибудь. Просьба подсказать где ее последний исходник.
    SoUrcerer wrote: Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.
    В tinypad? В том что в Колибри 0.7.7.0 эта функция есть? Для того чтобы открыть файл например появляеться только строчка для ввода внизу. Это и есть тот самый Opendialog?

    Наверное нет но вопрос оставлю

    Хотел скомпилировать tinypad с SVN но выходит ошибка
    Spoiler:
    error.png
    error.png (5.88 KiB)
    Viewed 4272 times
  • z525 wrote:2.Файлы с окончанием .mac для чего, где используются?
    Это файлы в которых находятся макросы. Хотя в них может находится и обычный код.
    z525 wrote:Хотел скомпилировать tinypad с SVN но выходит ошибка
    Скорее всего не подключен какой либо файл с макросом. illegal instruction - не легальная инструкция. Проблема с макросом header, потому что это не слово fasm.
    z525 wrote:В tinypad? В том что в Колибри 0.7.7.0 эта функция есть? Для того чтобы открыть файл например появляеться только строчка для ввода внизу. Это и есть тот самый Opendialog?
    Колибри 0.7.7.0 сильно устарела, потому в ней у tinypad еще нет Opendialog - а. Посмотри на вики :
    http://wiki.kolibrios.org/wiki/OpenDialog/ru
    Последний образ системы можно загрузить здесь :
    http://builds.kolibrios.org/rus/
    Исходники xtree можно посмотреть здесь :
    http://websvn.kolibrios.org/filedetails ... sxtree.asm
    Если у тебя есть svn, то посмотри их в папке (root)/programs/fs/sysxtree/trunk/
  • Вопрос про функцию 70, подфункцию 5.
    В Wiki написано:
    «Функция не поддерживает виртуальные папки типа /, /rd и корневые папки типа /rd/1.»

    Это имеется в виду, что нельзя получить информацию только конкретно о таких папках?
    Я пытался получить информацию о файле на рамдиске, и эта функция прекрасно работает.
    То есть, если файл находится в виртуальной или корневой папке, то о нём информацию получить можно?
  • Информацию следует читать как есть, а не домысливать то чего нету. Раз сказано что нельзя читать информацию о самих виртуальных директориях, то причем тут информация о физических файлах, которые в них перечислены? Конкретные пути же указаны - написав их в качестве параметра:
    * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
    общем описании
    или
    * +20 = +0x14: db 0
    * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
    К примеру:
    db '/',0
    db '/rd',0
    db '/rd/X',0
    db '/hdX',0
    db /hdX/Y',0
    db '/fd',0
    db '/fd/X',0
    db '/cdX',0
    db '/cdX/Y',0
    db '/bdX',0
    db '/bdX/Y',0

    где: Y номер раздела, X номер устройства

    НЕЛЬЗЯ получить информацию. В остальных случаях, представляющих собой работу с физическими файлами и директориями, можно получать информацию.
  • Code: Select all

    /* было, я переписал наново
    union sProcessInfo
    {
    	Byte rawData[1024];
    	struct
    	{
    		Dword cpu_usage;
    		Word window_stack_position;
    		Word window_stack_value;
    		Word reserved1;
    		char process_name[12];
    		Dword memory_start;
    		Dword used_memory;
    		Dword PID;
    		Dword x_start;
    		Dword y_start;
    		Dword x_size;
    		Dword y_size;
    		Word slot_state;
    	} processInfo;
    };*/
    
    union sProcessInfo
    {
    	Byte rawData[1024];
    	struct
    	{
    		Dword cpu_usage;
    		Word window_stack_position;
    		Word window_stack_value;
    		Word reserved1;
    		char process_name[12];
    		char rezerv2;
    		Dword memory_start;
    		Dword used_memory;
    		Dword PID;
    		Dword x_start;
    		Dword y_start;
    		Dword x_size;
    		Dword y_size;
    		Word slot_state;
    		Word rezerv3;
    		Dword work_left;
    		Dword work_top;
    		Dword work_width;
    		Dword work_height;
    		char	status_window;
    		Byte    reserved[1024-71];
    	} processInfo;
    };
    
    // функция 9 - информация о процессе
    Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
    {
    //	Dword result;
    
    	//
    	__asm{
    		mov eax, 9
    		mov ebx, targetPtr
    		mov ecx, processID
    		int 0x40
    	}
    }
    
    kos_ProcessInfo( &sPI);
    sPI.processInfo.cpu_usage = 0 и вообще любой показатель =0. Почему? Где ошибка?
    Из хаоса в космос
  • Leency wrote:

    Code: Select all

    /* было, я переписал наново
    union sProcessInfo
    {
    	Byte rawData[1024];
    	struct
    	{
    		Dword cpu_usage;
    		Word window_stack_position;
    		Word window_stack_value;
    		Word reserved1;
    		char process_name[12];
    		Dword memory_start;
    		Dword used_memory;
    		Dword PID;
    		Dword x_start;
    		Dword y_start;
    		Dword x_size;
    		Dword y_size;
    		Word slot_state;
    	} processInfo;
    };*/
    
    union sProcessInfo
    {
    	Byte rawData[1024];
    	struct
    	{
    		Dword cpu_usage;
    		Word window_stack_position;
    		Word window_stack_value;
    		Word reserved1;
    		char process_name[12];
    		char rezerv2;
    		Dword memory_start;
    		Dword used_memory;
    		Dword PID;
    		Dword x_start;
    		Dword y_start;
    		Dword x_size;
    		Dword y_size;
    		Word slot_state;
    		Word rezerv3;
    		Dword work_left;
    		Dword work_top;
    		Dword work_width;
    		Dword work_height;
    		char	status_window;
    		Byte    reserved[1024-71];
    	} processInfo;
    };
    
    // функция 9 - информация о процессе
    Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
    {
    //	Dword result;
    
    	//
    	__asm{
    		mov eax, 9
    		mov ebx, targetPtr
    		mov ecx, processID
    		int 0x40
    	}
    }
    
    kos_ProcessInfo( &sPI);
    sPI.processInfo.cpu_usage = 0 и вообще любой показатель =0. Почему? Где ошибка?
    Попробуй передавать не просто указатель на структуру, а указатель на структуру как именно на массив байт (т.е. явно укажи тип при передаче). Вообще не уверен, что все будет именно так со структурами в юнионах.
  • А почему функция объявлена с двумя параметрами, а ты передаёшь только один?..
    in code we trust
  • Там где-то вначале ещё есть.
    Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
    #define PROCESS_ID_SELF -1

    SoUrcerer
    Это как байт массив? Может там вообще юнионы не надо?
    Из хаоса в космос
  • #pragma pack(push, 1) или __attribute__((packed)) не забыли ?
  • Мне так кажется, что это C--. Или мне кажется?
  • Это MSVC, а именно Косилка, если уж никто не может поправить, то приходится мне.
    Где юзать #pragma pack(push, 1) или __attribute__((packed)) и что лучше?
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 1 guest