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).
Это означает, что содержимое папки затерто не будет?