;In this file content a macros need for compilation the scrshoot evm_redraw equ 1 evm_key equ 10b evm_button equ 100b evm_mouse equ 100000b evm_ipc equ 1000000b ;--- сообщить системе о начале перерисовки окна --- macro draw_status text_ptr { mov [status.text],dword text_ptr call send_draw_status } macro start_draw_window { ;mov eax,12 push 12 pop eax xor ebx,ebx inc ebx mcall } ;--- сообщить системе о завершении перерисовки окна --- macro stop_draw_window { ;mov eax,12 push 12 pop eax ;mov ebx,2 push 2 pop ebx mcall } ;--- установить маску ожидаемых событий --- ;--- ожидать события --- macro wait_event redraw,key,button,mouse,ipc,other { mov eax,10 mcall dec ax if redraw eq else jz redraw end if dec ax if key eq else jz key end if dec ax if button eq else jz button end if dec ax dec ax dec ax if mouse eq else jz mouse end if if ipc eq else dec ax jz ipc end if if other eq jmp still else jmp other end if } ;--- установить маску ожидаемых событий --- macro set_events_mask mask { ;mov eax,40 push 40 pop eax ;mov ebx,mask push mask pop ebx mcall } ;macro check_boxes_set_sys_color start,end,color_table ;{ ;ch_left equ [edi] ;координата начала рисования по х ;ch_top equ [edi+4] ;координата начала рисования по у ;ch_text_margin equ [edi+8] ;=4 расстояние от прямоугольника чек бокса до надписи ;ch_size equ [edi+8] ;12 размер квадрата чек бокса ;ch_color equ [edi+12] ;цвет внутри checkbox ;ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно ;ch_text_color equ [edi+20];[edi+4] ;цвет текста ;ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки ;ch_text_length equ [edi+28] ;ch_flags equ [edi+32] ;флаги ;ch_left equ [edi] ;координата начала рисования по х ;ch_top equ [edi+2] ;координата начала рисования по у ;ch_color equ [edi+4] ;цвет внутри checkbox ;ch_border_color equ [edi+8] ;цвет рамки checkbox ;ch_text_color equ [edi+12] ;цвет текста ;ch_text_ptr equ [edi+16] ;указатель на начало текстовой строки ;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст) ;ch_flags equ [edi+24] ;флаги ; mov edi,start ; mov ecx,((end-start)/ch_struc_size) ; mov esi,color_table ;@@: ; push dword [esi+32] ; pop dword ch_text_color ; push dword [esi+36] ; pop dword ch_border_color ; add edi,ch_struc_size ; loop @b ;} macro get_key { ;mov eax,2 push 2 pop eax mcall } ;--- получить код нажатой кнопки --- macro get_pressed_button { ;mov eax,17 push 17 pop eax mcall } macro get_active_window { mov eax,18 mov ebx,7 mcall } ;--- Ї®«гзЁвм Ё­д®а¬ жЁо ® Їа®жҐбᥠ--- macro get_procinfo proc_inf_buf,slot_num { ;mov eax,9 push 9 pop eax ;mov ebx,proc_inf_buf push proc_inf_buf pop ebx if slot_num eq xor ecx,ecx dec ecx else ;mov ecx,slot_num push slot_num pop ecx end if mcall } macro get_screen_prop struc_ptr { mov eax,61 push eax eax xor ebx,ebx inc ebx mcall mov [struc_ptr],eax pop eax inc ebx mcall mov [struc_ptr+4],ax pop eax inc ebx mcall mov [struc_ptr+6],eax } macro min_window { mov eax,18 mov ebx,10 mcall } macro app_close { or eax,-1 mcall } macro get_skin_height { mov eax,48 mov ebx,4 mcall } macro delay time { mov eax,5 if time eq else mov ebx,time end if mcall } macro activ_window slot_n { mov eax,18 mov ebx,3 if slot_n eq else mov ecx,slot_n end if mcall } struc screen_prop { .height: dw ? ;+0 .width: dw ? ;+2 .bitspp: dw ? ;+4 .bytesps: dd ?;+6 } struc sys_color_table { .frames: dd ? ;+0 .grab: dd ? ;+4 .work_3d_dark: dd ? ;+8 .work_3d_light: dd ? ;+12 .grab_text: dd ? ;+16 .work: dd ? ;+20 .work_button: dd ?;+24 .work_button_text: dd ? ;+28 .work_text: dd ? ;+32 .work_graph: dd ? ;+36 } struc procinfo { .takts_per_second: dd ? .window_stack_pos: dw ? .slot_number: dw ? dw ? .name: rb 11 .align: db ? .addres: dd ? .use_mem: dd ? .pid: dd ? .left: dd ? .top: dd ? .width: dd ? .height: dd ? .slot_state: dw ? rb (1024-56) } struc ipc_buffer size { .block: dd ? .in_use: dd ? .messages: rb size } ;--- жўҐв  --- cl_white=0xffffff cl_black=0x000000 ch_struc_size=36