PDA

Просмотр полной версии : [Asm] Программа регистрации движения мыши


Dober'man
02.07.2008, 17:31
Начитался я про трои, вирусы, черви, которые срабатывают на элементарное наведение указателя мыши на ярлык exe'шника и решил родить программу, которая выполняет отслеживание перемещения текстового указателя мыши.
Вдобавок добавил в код (ну это уже наверное лишнее, но убрать то можно =) ) визуальное отображение, в правом нижнем углу экрана, горизонтальных и вертикальных ( X и Y ) координат перемещения указателя, и еще немного API. При нажатии левой кнопки мыши её координаты фиксируются в левом нижнем углу экрана (эт всё WinAPI).

Исходник:

TITLE Программа регистрации движения мыши (mouse.asm)

INCLUDE Irvine16.inc

.data
ESCkey = 1Bh
GreetingMsg BYTE "Для выхода нажмите <Esc>",0dh,0ah,0
StatusLine BYTE "Левая кнопка:
"
BYTE "Положение мыши: ",0
blanks BYTE " ",0
Xcoordinate WORD 0
Ycoordinate WORD 0
Xclick WORD 0
Yclick WORD 0

.code
main PROC

mov ax,@data
mov ds,ax
call HideCursor
mov dx,OFFSET GreetingMsg
call WriteString
call ShowMousePointer
mov dh,24
mov dl,0
call GotoXY
mov dx,OFFSET StatusLine
call Writestring

L1:
call ShowMousePPosition
call LeftButtonClick
mov ah,11h
int 16h
jz L2
mov ah,10h
int 16h
cmp al,,ESCkey
je quit

L2:
jmp L1

quit:
call HideMousePointer
call ShowCursor
call ClrScr
call WaitMsg
exit
main ENDP

GetMousePosition PROC

push ax
mov ax,3
int 33h
pop ax
ret
GetMousePosition ENDP

HideCursor proc

mov ah,3
int 10h
or ch,30h
mov ah,1
int 10h
ret

HideCursor ENDP

ShowCursor PROC

mov ah,3
int 10h
mov ah,1
mov cx,0607h
int 10h
ret

ShowCursor ENDP


HideMousePointer PROC

push ax
mov ax,2
int 33h
pop ax
ret

HideMousePointer ENDP

ShowMousePointer PROC

push ax
mov ax,1
int 33h
pop ax
ret

ShowMousePointer ENDP

LeftButtonClick PROC

pusha
mov ax,5

mov bx,0
int 33h
cmp cx,Xclick
jne LBC1
cmp dx,Yclick
je LBC_exit
LBC1:
mov Xclick,cx
mov Yclick,dx


mov dh, 24
mov dl,15
call GotoXY

push dx
mov dx,OFFSET blanks
call WriteString
pop dx


call GotoXY
mov ax,Xcoordinate
call WriteDec
mov dl,20
call GotoXY
mov ax,Ycoordinate
call WriteDec
LBC_exit:
popa
ret

LeftButtonClick ENDP

SetMousePosition PROC

mov ax,4
int 33h
ret

SetMousePosition ENDP

ShowMousePosition PROC

pusha
call GetMousePosition
cmp cx,Xcoordinate
jne SMP1
cmp dx, Ycootdinate
je SMP_exit
SMP1:
mov Xcoordinate,cx
mov Ycoordinate,dx

mov dh,24
mov dl,60
call GotoXY

push dx
mov dx,OFFSET blanks
call WriteString
pop dx

call GotoXY
mov ax,Xcoordinate
call WriteDec

mov dl,65
call GotoXY
mov ax,Ycoordinate
call WriteDec

SMP_exit:
popa
ret

ShowMousePosition ENDP

END main

Делал асм. вставки в Delphi - все фурычит =)
p.s.: исходник карявить не стал, но и exe не выложил

De-visible
02.07.2008, 17:42
Цель? Какова цель...?

Dober'man
02.07.2008, 17:48
Блин малоли...
Может кому понравится, пригодится, для лабораторки, контрольной и т.д. и т.п.
Это же не калькулятор...

Exile1985
07.07.2008, 17:01
Блин малоли...
Может кому понравится, пригодится, для лабораторки, контрольной и т.д. и т.п.
Это же не калькулятор...


сурьезная болезнь.....

desTiny
07.07.2008, 17:09
в программы от скуки засунь