Page 20 of 77

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

Posted: Tue Aug 09, 2011 2:36 am
by yogev_ezra
Вот, даже вроде работает. Тестировал в IE 7 + FF 3.6.18

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

Posted: Tue Aug 09, 2011 2:59 am
by Leency
Действительно работает. Спасибо! Залил на сайт.

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

Posted: Wed Aug 10, 2011 7:22 am
by DmitrySokolowsky
У меня в Firefox 5.0 не работает...

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

Posted: Thu Aug 18, 2011 1:00 pm
by Leency
Albom wrote:Eolite требует ini из /rd1/File Managers...
А как узнать откуда запущена программа?

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

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

Posted: Thu Aug 18, 2011 1:49 pm
by Mario
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
Я не знаю синтаксиса С--, но думаю тебе то что я привел должно быть понятно.

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

Posted: Wed Aug 24, 2011 11:23 pm
by Leency
Как окну проверить активно оно или нет?

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

Posted: Fri Aug 26, 2011 2:01 pm
by Joaquin
Примерно как-то так:

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

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

Posted: Fri Aug 26, 2011 5:29 pm
by IgorA
Спасибо за напоминание, в моих программах не было проверки на активность окна. Потому могли возникать глюки, если другие окна накрывали их и в них клацали мышей.
Joaquin wrote:mcall 68, 12, 1024 ;allocate 1KB
Joaquin wrote: pushf
mov ecx, ebx
mcall 68, 13 ;free allocated block
popf
мне кажется что лучше определить структуру procinfo сразу в файле

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

Posted: Fri Aug 26, 2011 8:10 pm
by Mario
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

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

Posted: Sat Aug 27, 2011 12:00 pm
by Joaquin
Mario,
Хы, прозевал 18.7 функцию, когда искал в API нечто подобное, а так и действительно проще.

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

Posted: Sat Aug 27, 2011 4:39 pm
by Leency
Mario
Работает!!!!11 Спасибо! Начинаю усиленно фиксить прокрутку в своих прогах :)

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

Posted: Sun Sep 04, 2011 4:14 pm
by Gluk
ох уж этот порядок байт =(
подскажите пожалуйста (проверять сейчас не на чем), вот, например, если сделать как описано ниже, как будут выглядеть eax, ax, al?
...
code:
mov eax, dword[data]
...
data:
db 1,2
dw 3
...

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

Posted: Sun Sep 04, 2011 4:20 pm
by SII
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 бита.

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

Posted: Sun Sep 04, 2011 4:30 pm
by Gluk
SII, спасибо! да путаюсь постоянно с разными endian...

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

Posted: Tue Sep 13, 2011 9:20 am
by SoUrcerer
Уточняю на всякий случай.
Системная функция 70, подфункция 9 - создание папки.
Если папка уже существует, функция завершится успешно (eax=0).
Это означает, что содержимое папки затерто не будет?