48,19 → 48,6 |
; test eax,eax ; ªãàá®à ¢ â®çª¥ (0;0), â.¥. eax = 0 |
; je exit |
;-------------------------------------- |
; ¯®«ã稬 ç¨á«® ¯à®æ¥áᮢ ¢ á¨á⥬¥ |
xor ecx,ecx |
mcall 9,procinfo |
|
inc eax ; ⥯¥àì ¢ eax ᮤ¥à¦¨âáï ç¨á«® ¯à®æ¥áᮢ + 1 |
mov [processes],eax |
mov ecx,1 |
;-------------------------------------- |
align 4 |
new_process: |
pushad |
; ¯®«ã稬 ¨ä®à¬ æ¨î ® ¯à®æ¥áá¥; ®¬¥à - ¢ ecx |
mcall 9,procinfo |
; ª®®à¤¨ âë ªãàá®à |
xor ebx,ebx |
mcall 37 |
70,44 → 57,12 |
and ebx,0xffff |
mov [curx1],eax ; curx1 = cursor_x |
mov [cury1],ebx ; cury1 = cursor_y |
; \begin{diamond}[18.09.2006] |
; ignore minimized windows |
test [procinfo.wnd_state], 2 |
jnz ne_goden |
; \end{diamond}[18.09.2006] |
mov eax,[procinfo.box.left] ; eax = wnd_x_start |
mov ebx,[procinfo.box.top] ; ebx = wnd_y_start |
|
mov ecx,[procinfo.box.width] |
add ecx,eax ; ecx = wnd_x_end |
mov edx,[procinfo.box.height] |
add edx,ebx ; ecx = wnd_y_end |
|
cmp eax,[curx1] ; wnd_x_start > cursor_x => ªãàá®à «¥¢¥¥ ®ª |
jg ne_goden |
|
cmp ecx,[curx1] ; wnd_x_end < cursor_x => ªãàá®à ¯à ¢¥¥ ®ª |
jl ne_goden |
|
cmp ebx,[cury1] ; wnd_y_start > cursor_y => ªãàá®à ¢ëè¥ ®ª |
jg ne_goden |
|
cmp edx,[cury1] ; wnd_y_end < cursor_y => ªãàá®à ¨¦¥ ®ª |
jl ne_goden |
; ª®¬ã ¯à¨ ¤«¥¦¨â â®çª ? |
mcall 34,[curx1],[cury1] |
cmp al,1 ; 1 - ï¤à® |
jne still |
;-------------------------------------- |
align 4 |
goden: ; ª«¨ª ¡ë« ¢ãâਠª ª®£®-â® ®ª , ¯®í⮬㠨祣® ¥ ¤¥« ¥¬ |
popad |
jmp still |
;-------------------------------------- |
align 4 |
ne_goden: ; ª«¨ª ¡ë« á à㦨 à áᬠâਢ ¥¬®£® ®ª , ¯®í⮬ã |
popad |
inc ecx |
cmp ecx,[processes] |
jl new_process ; «¨¡® ᬮਬ á«¥¤ãî饥 ®ª®, «¨¡® § ¯ã᪠¥¬ ¬¥î |
;-------------------------------------- |
align 4 |
@@: ; ¯®¤®¦¤ñ¬, ¯®ª ¯®«ì§®¢ â¥«ì ¥ ®â¯ãá⨫ ¯à ¢ãî ª®¯ªã ¬ëè¨ |
mcall 37,2 ; ¦ âë «¨ ª®¯ª¨ ¬ëè¨? |
test eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2) |
400,7 → 355,6 |
IM_END: |
align 4 |
;
|
processes dd ? ; ª®«¨ç¥á⢮ ¯à®æ¥áᮢ ¢ á¨á⥬¥ |
curx1 dd ? ; ª®®à¤¨ âë ªãàá®à |
cury1 dd ? |
curx dd ? ; ª®®à¤¨ âë ®ª ¬¥î |