Ассемблер 16.05.2010 / 16:59 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| Нашёл на хабрахабре интересную статейку о написании плагина для Winamp'a на ассемблере. Компилятор: masm32. CсылкаУ меня получилось откомпилировать только первую часть. Работало только сообщение при инициализации плагина и о его выгрузке. Изменено miha (16.05 / 17:00) (всего 1 раз)
Прикрепленные файлы: gen_test_winamp.zip (4.69 кб.) Скачано 124 раза |
16.05.2010 / 22:10 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| Вот исходничек простенькой программы-прикола. Бинарник выложу в теме Ваши программы и игры.data
first db 'Shell_TrayWnd', 0
.code
start:
mov ebx, 1
.while (ebx < 20)
invoke FindWindow, addr first, 0
invoke ShowWindow,eax,SW_SHOW
invoke Sleep, 200
invoke FindWindow, addr first, 0
invoke ShowWindow,eax,SW_HIDE
invoke Sleep, 200
inc ebx
.endw
invoke FindWindow, addr first, 0
invoke ShowWindow,eax,SW_SHOW
invoke ExitProcess, 0
end start
Изменено vladgba (25.11 / 14:38) (всего 1 раз) |
16.05.2010 / 22:23 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| miha, Панель задач прячет и показывает? Или окна сворчивает и разворачивает?
__________________
let live |
16.05.2010 / 22:25 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| aNNiMON, панель задач. Моргнёт 19 раз и перестанет.
Изменено miha (16.05 / 22:28) (всего 1 раз) |
16.05.2010 / 22:27 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| Хотел в цикле использовать eax, но там хранится дескриптор окна
|
23.05.2010 / 23:07 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| format PE GUI 4.0
entry WinMain
include '%fasminc%\win32a.inc'
include '%fasminc%\equates\kernel32.inc'
include '%fasminc%\equates\gdi32.inc'
include '%fasminc%\equates\user32.inc'
include '%fasminc%\equates\comctl32.inc'
section '.code' code readable executable
proc WinMain
local swid: DWORD, shgt: DWORD, dwid: DWORD, hDC: DWORD, cDC: DWORD, hScr: DWORD, hBmp: DWORD,\
hOld: DWORD
mov [hScr], 0
invoke GetDC, [hScr]
mov [hDC], eax
invoke GetSystemMetrics, SM_CXSCREEN ; получаем ширину
mov [swid], eax
add eax, eax
mov [dwid], eax
invoke GetSystemMetrics, SM_CYSCREEN ;; получаем высоту
mov [shgt], eax
invoke CreateCompatibleBitmap, [hDC], [dwid], [shgt]
mov [hBmp], eax
invoke CreateCompatibleDC, [hDC]
mov [cDC], eax
invoke SelectObject, [cDC], [hBmp]
mov [hOld], eax
invoke BitBlt, [cDC], 0, 0, [swid], [shgt], [hDC], 0, 0, SRCCOPY
invoke BitBlt, [cDC], [swid], 0, [swid], [shgt], [hDC], 0, 0, SRCCOPY
push esi
mov esi, [swid]
.repeat
invoke BitBlt, [hDC], 0, 0, [swid], [shgt], [cDC], esi, 0, SRCCOPY
sub esi, 1
.until signed esi < 0
pop esi
invoke SendMessage, 0, WM_PAINT, [hDC], 0
invoke DeleteObject, [hBmp]
invoke SelectObject, [cDC], [hOld]
invoke DeleteDC, [cDC]
invoke ReleaseDC, [hScr], [hDC]
invoke ExitProcess, 0
return
endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
comctl32,'COMCTL32.DLL'
include '%fasminc%\apia\kernel32.inc'
include '%fasminc%\apia\gdi32.inc'
include '%fasminc%\apia\user32.inc'
include '%fasminc%\apia\comctl32.inc'
__________________
let live Изменено aNNiMON (9.10 / 21:43) (всего 2 раза) |
23.05.2010 / 23:13 | | aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| format PE GUI 4.0
entry WinMain
include '%fasminc%\win32a.inc'
include '%fasminc%\equates\kernel32.inc'
include '%fasminc%\equates\gdi32.inc'
include '%fasminc%\equates\user32.inc'
NUM = 300
section '.data' data readable writeable
szAppName db "GrafMenu",0
align 4
hwnd dd 0
section '.bss' data readable writeable
iKeep dd NUM*sizeof.RECT dup(?)
section '.code' code readable executable
proc WinMain hInstance, hPrevInstance, szCmdLine, iCmdShow
local msg:MSG, wndclass:WNDCLASSA, hdcScr:DWORD, hdcMem:DWORD, cxx:DWORD, cy:DWORD,\
hBitmap:DWORD, i:DWORD, j:DWORD, x1:DWORD, y1:DWORD, x2:DWORD, y2:DWORD, paddr:DWORD
cinvoke memset, iKeep, 0, NUM*sizeof.RECT
cinvoke memset, addr wndclass, 0, sizeof.WNDCLASSA
invoke GetDesktopWindow
mov [hwnd], eax
invoke LockWindowUpdate, eax
.if eax <> NULL
invoke GetDCEx, [hwnd], NULL, DCX_CACHE or DCX_LOCKWINDOWUPDATE
mov [hdcScr], eax
invoke CreateCompatibleDC, [hdcScr]
mov [hdcMem], eax
invoke GetSystemMetrics, SM_CXSCREEN
mov ecx, 10
mov edx, 0
div ecx
mov [cxx], eax
invoke GetSystemMetrics, SM_CYSCREEN
mov ecx, 10
mov edx, 0
div ecx
mov [cy], eax
invoke CreateCompatibleBitmap, [hdcScr], [cxx], [cy]
mov [hBitmap], eax
invoke SelectObject, [hdcMem], [hBitmap]
invoke GetTickCount
cinvoke srand, eax
mov [i], 0 ; i < 2 ; i++
.repeat
mov [j], 0 ; j < NUM ; j++
.repeat
.if [i] = 0
mov eax, sizeof.RECT
mul [j]
add eax, iKeep
mov [paddr], eax
cinvoke rand
mov ecx, 10
mov edx, 0
div ecx
mov eax, edx
mul [cxx]
mov ecx, [paddr]
mov [ecx], eax
mov [x1], eax
cinvoke rand
mov ecx, 10
mov edx, 0
div ecx
mov eax, edx
mul [cy]
mov ecx, [paddr]
mov [ecx + 4], eax
mov [y1], eax
cinvoke rand
mov ecx, 10
mov edx, 0
div ecx
mov eax, edx
mul [cxx]
mov ecx, [paddr]
mov [ecx + 8], eax
mov [x2], eax
cinvoke rand
mov ecx, 10
mov edx, 0
div ecx
mov eax, edx
mul [cy]
mov ecx, [paddr]
mov [ecx + 12], eax
mov [y2], eax
.else
;iKeep [NUM - 1 - j] [0]
mov ecx, sizeof.RECT
mov eax, NUM - 1
sub eax, [j]
mul ecx
add eax, iKeep
mov ecx, eax
mov eax, [ecx]
mov [x1], eax
mov eax, [ecx + 4]
mov [y1], eax
mov eax, [ecx + 8]
mov [x2], eax
mov eax, [ecx + 12]
mov [y2], eax
.endif
invoke BitBlt, [hdcMem], 0, 0, [cxx], [cy], [hdcScr], [x1],\
[y1], SRCCOPY
invoke BitBlt, [hdcScr], [x1], [y1], [cxx], [cy], [hdcScr], [x2],\
[y2], SRCCOPY
invoke BitBlt, [hdcScr], [x2], [y2], [cxx], [cy], [hdcMem], 0, 0,\
SRCCOPY
invoke Sleep, 10
add [j], 1
.until [j] >= NUM
add [i], 1
.until [i] >= 2
invoke DeleteDC, [hdcMem]
invoke ReleaseDC, [hwnd], [hdcScr]
invoke DeleteObject, [hBitmap]
invoke LockWindowUpdate, NULL
.endif
return FALSE
endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
crtdll, 'crtdll.dll'
include '%fasminc%/apia/kernel32.inc'
include '%fasminc%/apia/user32.inc'
include '%fasminc%/apia/gdi32.inc'
include '%fasminc%/apia/crtdll.inc'
__________________
let live
Прикрепленные файлы: scrcopyrect.exe (3.5 кб.) Скачано 538 раз |
23.05.2010 / 23:24 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| Первый бинарник не качал, но по коду боян)
|
24.05.2010 / 14:06 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| А вторая прожка веселее)
|
30.05.2010 / 13:33 | | miha Пользователь Сейчас: Offline
Регистрация: 14.01.2010
| - блокировать ввод с клавиатуры и действия мыши; - разблокировать |
Всего сообщений: 208 Фильтровать сообщения Поиск по теме Файлы топика (15)
|