* new system function for "send message"
* @panel: Alt+F4 sends close message rather than immediate kill git-svn-id: svn://kolibrios.org@665 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -213,6 +213,7 @@ iglobal
|
|||||||
dd sys_debug_services ; 69-Debug
|
dd sys_debug_services ; 69-Debug
|
||||||
dd file_system_lfn ; 70-Common file system interface, version 2
|
dd file_system_lfn ; 70-Common file system interface, version 2
|
||||||
dd syscall_windowsettings ; 71-Window settings
|
dd syscall_windowsettings ; 71-Window settings
|
||||||
|
dd sys_sendwindowmsg ; 72-Send window message
|
||||||
|
|
||||||
times 255 - ( ($-servetable) /4 ) dd undefined_syscall
|
times 255 - ( ($-servetable) /4 ) dd undefined_syscall
|
||||||
|
|
||||||
|
@@ -2198,14 +2198,15 @@ dd 638
|
|||||||
* eax = 47 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
* eax = 47 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
* ebx = <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20>८<EFBFBD>ࠧ<EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> ⥪<><E2A5AA>:
|
* ebx = <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20>८<EFBFBD>ࠧ<EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> ⥪<><E2A5AA>:
|
||||||
* bl = 0 - ecx ᮤ<>ন<EFBFBD> <20><>
|
* bl = 0 - ecx ᮤ<>ন<EFBFBD> <20><>
|
||||||
* bl = 1 - ecx ᮤ<>ন<EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD> <20><> dword-<2D><>, <20><><EFBFBD><EFBFBD> qword-<2D><>
|
* bl = 1 - ecx ᮤ<>ন<EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD> <20><> dword/qword-<2D><>
|
||||||
* bh = 0 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5><EFBFBD>
|
* bh = 0 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5><EFBFBD>
|
||||||
* bh = 1 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD>⭠<EFBFBD><E2ADA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD>
|
* bh = 1 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD>⭠<EFBFBD><E2ADA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD>
|
||||||
* bh = 2 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD>
|
* bh = 2 - <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD> <20> <20><><EFBFBD><EFBFBD>筮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD>
|
||||||
* <20><><EFBFBD><EFBFBD> 16-21 = <>쪮 <20><><EFBFBD><EFBFBD> <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD>
|
* <20><><EFBFBD><EFBFBD> 16-21 = <>쪮 <20><><EFBFBD><EFBFBD> <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD>
|
||||||
* <20><><EFBFBD><EFBFBD> 22-29 <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0
|
* <20><><EFBFBD><EFBFBD> 22-29 <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0
|
||||||
* <20><><EFBFBD> 30 - <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 1, <20> <20>ॡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뢮<EFBFBD> qword (64-<2D><>⭮<EFBFBD><EFBFBD>) <20><>
|
* <20><><EFBFBD> 30 <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> = <20>뢮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> qword (64-<2D><>⭮<EFBFBD> <20><>);
|
||||||
* <20><><EFBFBD> 31 - <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> <20> 1, <20> <20>ॡ<EFBFBD><E0A5A1><EFBFBD><EFBFBD><EFBFBD> <20>뢮<EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㫥<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<>鸞<EFBFBD>
|
<20><><EFBFBD> <20>⮬ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> bl = 1
|
||||||
|
* <20><><EFBFBD> 31 <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> = <20><> <20>뢮<EFBFBD><EBA2AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>騥 <20>㫨 <20><>
|
||||||
* ecx = <20><> (<28><><EFBFBD> bl=0) <20><><EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD> (<28><><EFBFBD> bl=1)
|
* ecx = <20><> (<28><><EFBFBD> bl=0) <20><><EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD> (<28><><EFBFBD> bl=1)
|
||||||
* edx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
|
* edx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
|
||||||
* esi = 0xX0RRGGBB:
|
* esi = 0xX0RRGGBB:
|
||||||
@@ -4592,6 +4593,20 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
<20><>ப<EFBFBD>.
|
<20><>ப<EFBFBD>.
|
||||||
* <20>⮡<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD> NULL <20> ecx.
|
* <20>⮡<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD> NULL <20> ecx.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
================ <20>㭪<EFBFBD><E3ADAA><EFBFBD> 72 - <20><><EFBFBD><E1ABA0> ᮮ<>饭<EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD>. ================
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
--- <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1 - <20><><EFBFBD><E1ABA0> ᮮ<>饭<EFBFBD><E9A5AD> <20> <20><>ࠬ<EFBFBD><E0A0AC> <20><>⨢<EFBFBD><E2A8A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. ----
|
||||||
|
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
* eax = 72 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
|
* ebx = 1 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||||
|
* ecx = <20><><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>: 2 <20><><EFBFBD> 3
|
||||||
|
* edx = <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ecx=2, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ecx=3
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||||
|
* eax = 0 - <20>ᯥ譮
|
||||||
|
* eax = 1 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
========== <20>㭪<EFBFBD><E3ADAA><EFBFBD> -1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⮪<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =========
|
========== <20>㭪<EFBFBD><E3ADAA><EFBFBD> -1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⮪<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =========
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@@ -2169,14 +2169,14 @@ Parameters:
|
|||||||
* eax = 47 - function number
|
* eax = 47 - function number
|
||||||
* ebx = parameters of conversion number to text:
|
* ebx = parameters of conversion number to text:
|
||||||
* bl = 0 - ecx contains number
|
* bl = 0 - ecx contains number
|
||||||
* bl = 1 - ecx contains pointer to dword-number, or qword-number
|
* bl = 1 - ecx contains pointer to dword/qword-number
|
||||||
* bh = 0 - display in decimal number system
|
* bh = 0 - display in decimal number system
|
||||||
* bh = 1 - display in hexadecimal system
|
* bh = 1 - display in hexadecimal system
|
||||||
* bh = 2 - display in binary system
|
* bh = 2 - display in binary system
|
||||||
* bits 16-21 = how many digits to display
|
* bits 16-21 = how many digits to display
|
||||||
* bits 22-29 reserved and must be set to 0
|
* bits 22-29 reserved and must be set to 0
|
||||||
* bit 30 - set in 1, if the output of qword (64-bites) number
|
* bit 30 set = display qword (64-bit) number (must be bl=1)
|
||||||
* bit 31 - set in 1, if the output of number without empty zero in high bits is required
|
* bit 31 set = do not display leading zeroes of the number
|
||||||
* ecx = number (if bl=0) or pointer (if bl=1)
|
* ecx = number (if bl=0) or pointer (if bl=1)
|
||||||
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
|
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
|
||||||
* esi = 0xX0RRGGBB:
|
* esi = 0xX0RRGGBB:
|
||||||
@@ -4547,6 +4547,20 @@ Remarks:
|
|||||||
length, no more than 255 characters are drawn.
|
length, no more than 255 characters are drawn.
|
||||||
* Pass NULL in ecx to remove caption.
|
* Pass NULL in ecx to remove caption.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
=============== Function 72 - send message to a window. ==============
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
- Subfunction 1 - send message with parameter to the active window. --
|
||||||
|
Parameters:
|
||||||
|
* eax = 72 - function number
|
||||||
|
* ebx = 1 - subfunction number
|
||||||
|
* ecx = event code: 2 or 3
|
||||||
|
* edx = parameter: key code for ecx=2, button identifier for ecx=3
|
||||||
|
Returned value:
|
||||||
|
* eax = 0 - success
|
||||||
|
* eax = 1 - buffer is full
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
=============== Function -1 - terminate thread/process ===============
|
=============== Function -1 - terminate thread/process ===============
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@@ -493,6 +493,40 @@ eventoccur:
|
|||||||
mov [esp+36], eax
|
mov [esp+36], eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
sys_sendwindowmsg:
|
||||||
|
dec eax
|
||||||
|
jnz .ret
|
||||||
|
cmp ebx, 3
|
||||||
|
jz .sendbtn
|
||||||
|
cmp ebx, 2
|
||||||
|
jnz .ret
|
||||||
|
.sendkey:
|
||||||
|
pushf
|
||||||
|
cli
|
||||||
|
movzx eax, byte [KEY_COUNT]
|
||||||
|
cmp al, 120
|
||||||
|
jae .overflow
|
||||||
|
inc eax
|
||||||
|
mov [KEY_COUNT], al
|
||||||
|
mov [KEY_COUNT+eax], cl
|
||||||
|
jmp .ok
|
||||||
|
.overflow:
|
||||||
|
popf
|
||||||
|
mov dword [esp+36], 1
|
||||||
|
ret
|
||||||
|
.sendbtn:
|
||||||
|
pushf
|
||||||
|
cli
|
||||||
|
cmp byte [BTN_COUNT], 0
|
||||||
|
jnz .overflow
|
||||||
|
mov byte [BTN_COUNT], 1
|
||||||
|
mov [BTN_BUFF], ecx
|
||||||
|
.ok:
|
||||||
|
popf
|
||||||
|
and dword [esp+36], 0
|
||||||
|
.ret:
|
||||||
|
ret
|
||||||
|
|
||||||
get_event_for_app:
|
get_event_for_app:
|
||||||
|
|
||||||
pushad
|
pushad
|
||||||
|
@@ -1454,7 +1454,8 @@ normalize_number:
|
|||||||
jne .continue
|
jne .continue
|
||||||
dec eax
|
dec eax
|
||||||
cmp eax,1
|
cmp eax,1
|
||||||
jne @r
|
ja @r
|
||||||
|
mov al,1
|
||||||
.continue:
|
.continue:
|
||||||
and eax,0x3f
|
and eax,0x3f
|
||||||
ret
|
ret
|
||||||
|
@@ -91,34 +91,35 @@ begin_1:
|
|||||||
jmp begin_1.ret
|
jmp begin_1.ret
|
||||||
|
|
||||||
kill_active_application:
|
kill_active_application:
|
||||||
mcall 18, 7
|
; mcall 18, 7
|
||||||
mov ecx,eax
|
; mov ecx,eax
|
||||||
|
;
|
||||||
;//{SPraid.simba do not kill panel and icon
|
; ;//{SPraid.simba do not kill panel and icon
|
||||||
push eax
|
; push eax
|
||||||
mov eax,9
|
; mov eax,9
|
||||||
mov ebx, process_info_buffer
|
; mov ebx, process_info_buffer
|
||||||
int 0x40
|
; int 0x40
|
||||||
mov eax,process_info_buffer
|
; mov eax,process_info_buffer
|
||||||
add eax,10
|
; add eax,10
|
||||||
mov ebx,[eax]
|
; mov ebx,[eax]
|
||||||
cmp ebx,'ICON'
|
; cmp ebx,'ICON'
|
||||||
je no_kill
|
; je no_kill
|
||||||
cmp ebx,'@PAN'
|
; cmp ebx,'@PAN'
|
||||||
jne kill_app
|
; jne kill_app
|
||||||
add eax,4
|
; add eax,4
|
||||||
mov ebx,[eax]
|
; mov ebx,[eax]
|
||||||
and ebx,0x0000FFFF
|
; and ebx,0x0000FFFF
|
||||||
cmp ebx,'EL'
|
; cmp ebx,'EL'
|
||||||
je no_kill
|
; je no_kill
|
||||||
kill_app:
|
; kill_app:
|
||||||
pop ecx
|
; pop ecx
|
||||||
mcall 18, 2
|
; mcall 18, 2
|
||||||
jmp if_kill
|
; jmp if_kill
|
||||||
no_kill:
|
; no_kill:
|
||||||
pop eax
|
; pop eax
|
||||||
if_kill:
|
; if_kill:
|
||||||
;// }SPraid.simba
|
; ;// }SPraid.simba
|
||||||
|
mcall 72,1,3,1
|
||||||
|
|
||||||
jmp begin_1.ret
|
jmp begin_1.ret
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user