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

Applications development, KoOS API questions
  • Действительно работает. Спасибо! Залил на сайт.
    Из хаоса в космос
  • У меня в Firefox 5.0 не работает...
  • Albom wrote:Eolite требует ini из /rd1/File Managers...
    А как узнать откуда запущена программа?

    Атауальпа wrote:У меня в Firefox 5.0 не работает...
    А у меня в Firefox 6.0 работает. Ещё у кого-то не работает?
    Атаульпа, перепроверь. Может быть ява-скрипт отключен.
    Из хаоса в космос
  • Leency wrote:А как узнать откуда запущена программа?

    Code: Select all

    	use32
    	org 0x0
    	db 'MENUET01'	; 8 byte id
    	dd 0x01		; header version
    	dd START	; start of code
    	dd IM_END	; size of image
    	dd I_END	; memory for app
    	dd stacktop	; esp
    	dd temp_area	; I_Param
    	dd path		; APPLICATION PACH
    .....
    path:
    	rb  4096
    
    Я не знаю синтаксиса С--, но думаю тебе то что я привел должно быть понятно.
  • Как окну проверить активно оно или нет?
    Из хаоса в космос
  • Примерно как-то так:

    Code: Select all

    	mcall	68, 12, 1024	;allocate 1KB
    	mov     ebx, eax
    	mcall	9,,-1		;get info about this thread
    	cmp	eax, 0xFFFF
    	ja	.err
    	cmp	ax, [ebx+4]
    	pushf
    	mov	ecx, ebx
    	mcall	68, 13		;free allocated block
    	popf
    	je	this_window_is_active
    	jne	this_window_ain't_active
    
  • Спасибо за напоминание, в моих программах не было проверки на активность окна. Потому могли возникать глюки, если другие окна накрывали их и в них клацали мышей.
    Joaquin wrote:mcall 68, 12, 1024 ;allocate 1KB
    Joaquin wrote: pushf
    mov ecx, ebx
    mcall 68, 13 ;free allocated block
    popf
    мне кажется что лучше определить структуру procinfo сразу в файле
  • Leency wrote:Как окну проверить активно оно или нет?
    Я делаю не примерно, а вот так:
    1) В самом начале программы

    Code: Select all

    	mcall	9,procinfo,-1
    	mov	ecx,[ebx+30]	; PID
    	mcall	18,21
    	mov	[active_process],eax	; WINDOW SLOT
    
    2) При обработке событий мышки.

    Code: Select all

    mouse:
    	mcall	18,7
    	cmp	[active_process],eax
    	jne	still
    
  • Mario,
    Хы, прозевал 18.7 функцию, когда искал в API нечто подобное, а так и действительно проще.
  • Mario
    Работает!!!!11 Спасибо! Начинаю усиленно фиксить прокрутку в своих прогах :)
    Из хаоса в космос
  • ох уж этот порядок байт =(
    подскажите пожалуйста (проверять сейчас не на чем), вот, например, если сделать как описано ниже, как будут выглядеть eax, ax, al?
    ...
    code:
    mov eax, dword[data]
    ...
    data:
    db 1,2
    dw 3
    ...
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • EAX = 00030201h

    Всё очень просто, на самом-то деле. Директивы определения данных (DB и тому подобные) всегда размещают указанные в них данные в порядке их следования, т.е.

    DB 1, 2

    сначала разместит в памяти байт 1, потом -- байт 2.

    DW 3 размещает в памяти слово со значением 0003, однако, поскольку на IA-32 принят порядок "младший-старший", сначала в памяти будет лежать байт 03, а за ним -- 00.

    MOV загружает двойное слово с адреса Data, а там байты лежат в таком порядке:

    01 02 03 00

    Соответственно, в EAX они грузятся задом наперёд: 00030201.

    Ну и на всякий случай и для общего развития :) Во-первых, порядок "младший-старший" не является общепринятым, на других архитектурах может использоваться порядок "старший-младший". Понятное дело, что, пока работаете на ПК, всегда будет "младший-старший", но держать это замечание где-то на задворках сознания полезно, если вдруг в будущем придётся иметь дело с чем-то другим. Ну а во-вторых, терминология "слово, двойное слово" и т.д. тоже не является общепринятой. На ARMах, например, слово -- 32 бита, а 16 бит -- это полуслово. Соответственно, двойное слово там -- 64 бита.
  • SII, спасибо! да путаюсь постоянно с разными endian...
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Уточняю на всякий случай.
    Системная функция 70, подфункция 9 - создание папки.
    Если папка уже существует, функция завершится успешно (eax=0).
    Это означает, что содержимое папки затерто не будет?
  • Who is online

    Users browsing this forum: No registered users and 0 guests