Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6266 → Rev 6267

/programs/other/outdated/clip/trunk/clip.txt
0,0 → 1,168
Ž¡é¥á¨á⥬­ë© ¡ãä¥à ®¡¬¥­  ¤«ï Ž‘ Š®«¨¡à¨.
ˆ­ä®à¬ æ¨ï ¤«ï ࠧࠡ®â稪®¢.
 
Šà âª®: ãä¥à ॠ«¨§®¢ ­ ç¥à¥§ ¯à®æ¥áá-¤¥¬®­ ¨ IPC-á®®¡é¥­¨ï.
„«ï ¯à®¢¥àª¨ ­ã¦­® § ¯ãáâ¨âì @clip(¤¥¬®­) ¨
(cliptest ¨ ¤®áªã ®â« ¤ª¨) ¨«¨ test2(¬®¦­® ­¥áª®«ìª®).
 
1. „¥¬®­ @clip ¨ ¥£® ª®¬ ­¤ë.
 
„¥¬®­ @clip ॠ«¨§®¢ ­ ª ª ¯à®æ¥áá, ­¥ ᮧ¤ î騩 ®ª®­ (§ ç¥¬ ®­¨ ¥¬ã),
  ⮫쪮 á«ãè î騩 IPC-á®®¡é¥­¨ï. „¥¬®­ ¯®¤¤¥à¦¨¢ ¥â ¤® 16 (MAX_FORMAT) ¡ãä¥à®¢ ¤«ï
à §«¨ç­ëå ä®à¬ â®¢ ¤ ­­ëå, ¨ ¤® 16,7 Œ¡ (MAX_SIZE) ¤ ­­ëå ¢ ª ¦¤®¬ ¡ãä¥à¥
(¯ ¬ïâì ®â¢®¤¨âáï ¤¨­ ¬¨ç¥áª¨).
Id ä®à¬ â  ¤ ­­ëå - ç¨á«® ®â 0 ¤® 65534 (§­ ç¥­¨¥ 65535 § à¥§¥à¢¨à®¢ ­®).
 
à¨ § ¯ã᪥ ¤¥¬®­ § ¢¥à蠥⠢ᥠ¤à㣨¥ ¯à®æ¥ááë @clip.
 
Š®¬ ­¤ë, ¯¥à¥¤ ¢ ¥¬ë¥ ¤¥¬®­ã, ¨¬¥îâ ä®à¬ â:
 
[ Cmd: word | Format: word | Reserved: Dword | Data: ...]
 
£¤¥ Cmd - ª®¤ ª®¬ ­¤ë,
Format - id ä®à¬ â  ¤ ­­ëå,
Reserved - ç⮠㣮¤­® (­¥ ¨á¯®«ì§ã¥âáï),
¨ Data - ¤ ­­ë¥, á¬ëá« ª®â®àëå § ¢¨á¨â ®â ª®¬ ­¤ë.
 
„¥¬®­ ¢®á¯à¨­¨¬ ¥â á«¥¤ãî騥 ª®¬ ­¤ë:
 
Š®¤ 1. Set Size. “ª § âì ­¥®¡å®¤¨¬ë© à §¬¥à ¡ãä¥à  ¤«ï ¯à¨¥¬  ¤ ­­ëå. ® í⮩
ª®¬ ­¤¥ ¤¥¬®­ ¯à¨ ­¥®¡å®¤¨¬®á⨠à áè¨àï¥â ᢮© ¡ãä¥à ¤«ï IPC-á®®¡é¥­¨©
(ᯮᮡ  㬥­ìè¨âì ¡ãä¥à ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ­¥â).
 à ¬¥âà Data: 1 Dword, ᮤ¥à¦ é¨© à §¬¥à ¤ ­­ëå ¤«ï ¯¥à¥¤ ç¨.
„«¨­  ª®¬ ­¤ë: 12 ¡ ©â.
 
Š®¤ 2. Set. ¥à¥¤ ç  ¤ ­­ëå. ® í⮩ ª®¬ ­¤¥ ¤ ­­ë¥ ª®¯¨àãîâáï ¢ ¯ ¬ïâì ¤¥¬®­ .
 à ¬¥âà Data: ¤ ­­ë¥, ª®â®àë¥ ­ã¦­® ᪮¯¨à®¢ âì.
„«¨­  ª®¬ ­¤ë: 8 + (¤«¨­  ¤ ­­ëå) ¡ ©â.
 
Š®¤ 3. Get Size. ®«ãç¨âì à §¬¥à ¤ ­­ëå, åà ­ïé¨åáï ¢ ¡ãä¥à¥ á 㪠§ ­­ë¬ id
ä®à¬ â . ® í⮩ ª®¬ ­¤¥ ¤¥¬®­ ®â¯à ¢«ï¥â ®â¢¥â­®¥ IPC-á®®¡é¥­¨¥ ¤«¨­®© 4
¡ ©â , ᮤ¥à¦ é¥¥ à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥. …᫨ ¤ ­­ë¥ ¢ ¡ãä¥à¥ ®âáãâáâ¢ãîâ,
¢ á®®¡é¥­¨¨ 㪠§ë¢ ¥âáï à §¬¥à 0.
„«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
 
Š®¤ 4. Get. ®«ãç¨âì ¤ ­­ë¥ ¨§ ¡ãä¥à  á 㪠§ ­­ë¬ id ä®à¬ â . ® í⮩ ª®¬ ­¤¥
¤¥¬®­ ®â¯à ¢«ï¥â ®â¢¥â­®¥ IPC-á®®¡é¥­¨¥ ­ã¦­®© ¤«¨­ë á ¤ ­­ë¬¨ ¨§ ¡ãä¥à .
…᫨ ¤ ­­ë¥ ¢ ¡ãä¥à¥ ®âáãâáâ¢ãîâ, ®â¢¥â­®¥ á®®¡é¥­¨¥ ­¥ ®â¯à ¢«ï¥âáï.
„«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
 
Š®¤ 5. Delete. Žç¨áâ¨âì ¡ãä¥à á 㪠§ ­­ë¬ id ä®à¬ â . …᫨ 㪠§ âì
id ä®à¬ â  = 0xFFFF, ¡ã¤ãâ ®ç¨é¥­ë ¢á¥ ¡ãä¥àë.
„«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
 
ˆá室­ë© ä ©« - @clip.asm. …᫨ à áª®¬¬¥­â¨à®¢ âì áâà®çªã
;define DEBUG TRUE
¨ § ª®¬¬¥­â¨à®¢ âì á«¥¤ãîéãî, â® ¤¥¬®­ ­ ç­¥â ¯¨á âì ¬­®£® ¡ãª®¢®ª ­  ¤®áªã
®â« ¤ª¨, ¨ ¯® ­¨¬ ¬®¦­® ¡ã¤¥â çâ®-â® ¯®­ïâì ® ¢®§­¨ª îé¨å ®è¨¡ª å.
DEFAULT_SIZE - ­ ç «ì­ë© à §¬¥à IPC-¡ãä¥à 
MAX_SIZE - ®£à ­¨ç¥­¨¥ ­  ¡ãä¥à
MAX_FORMAT - ç¨á«® à §«¨ç­ëå ä®à¬ â®¢, ª®â®àë¥ ¬®¦­® § áã­ãâì ¢ ¤¥¬®­ 
®¤­®¢à¥¬¥­­® (  ¥á«¨ ¡®«ìè¥, ᣫîç¨â. ’®¦¥ ­ ¤® ¯®ä¨ªá¨âì).
DELAY - § ¤¥à¦ª  ¬¥¦¤ã ¯®¯ë⪠¬¨ ®â¯à ¢ª¨ á®®¡é¥­¨ï, /100 ᥪ.
ATTEMPT - ª®«¨ç¥á⢮ ¯®¯ë⮪ ®â¯à ¢ª¨ á®®¡é¥­¨ï § ­ï⮬㠨«¨ ­¥ £®â®¢®¬ã
¯à®æ¥ááã.
 
2. clip.inc - ­ ¡®à ä㭪権 ¤«ï ¡®«¥¥ ¢ë᮪®ã஢­¥£® ®¡é¥­¨ï á ¤¥¬®­®¬ @clip.
¥ «¨§®¢ ­® ç⥭¨¥ ¡ãä¥à  ¨ § ¯¨áì ¢ ¡ãä¥à.
 
à¨¬¥à ¨á¯®«ì§®¢ ­¨ï - cliptest.asm (¢ë¢®¤ ­  ¤®áªã ®â« ¤ª¨) ¨
test2.asm.
 
à¨ ¨á¯®«ì§®¢ ­¨¨ clip.inc ­¥®¡å®¤¨¬® 㪠§ âì á«¥¤ãî騥 §­ ç¥­¨ï (ç¨á« ,
¥áâ¥á⢥­­®, ¬®£ãâ ¡ëâì ¤à㣨¥):
DEFAULT_MASK = 7 ; Œ áª  ᮡë⨩ (á¬. äã­ªæ¨î 40) ¯® 㬮«ç ­¨î ¤«ï
; ⥪ã饣® ¯®â®ª . ã¦­ , çâ®¡ë ¯®á«¥ ¯à¨¥¬ 
; IPC-á®®¡é¥­¨ï (ª®£¤  ¬ áª  ¬¥­ï¥âáï ­  01000000b)
; ¢®ááâ ­®¢¨âì áâ àãî ¬ áªã (  ¯®«ãç¨âì ¬ áªã •‡ ª ª).
 
SEND_DELAY = 10 ; ¯ ã§  ¬¥¦¤ã ¯®¯ë⪠¬¨ ¯à¨ ®â¯à ¢ª¥ á®®¡é¥­¨ï ¤¥¬®­ã
 
RECV_DELAY = 100 ; ¢à¥¬ï ®¦¨¤ ­¨ï ®â¢¥â  ®â ¤¥¬®­  (¥á«¨ §  íâ® ¢à¥¬ï
; ­¥ ¯à¨è¥« ®â¢¥â, â® ®è¨¡ª )
; ¢à¥¬ï - ¢ á®âëå ᥪ㭤ë (ª ª ¤«ï ä㭪樨 5).
 
ATTEMPT = 5 ; ª®«¨ç¥á⢮ ¯®¯ë⮪ ®â¯à ¢ª¨ á®®¡é¥­¨ï, ¥á«¨ ¤¥¬®­
; § ­ïâ
 
®á«¥ ¢ª«î祭¨ï clip.inc áâ ­®¢ïâáï ¤®áâ㯭묨 ä㭪樨:
 
clipboard_init() - ¯®¨áª ¯à®æ¥áá  @clip. âã äã­ªæ¨î
¬®¦­® ¢ë§ë¢ âì ¬­®£®ªà â­® (­ ¯à¨¬¥à, ¥á«¨ ¤¥¬®­ ­¥ ­ è¥«áï ¨«¨ ¡ë«
¯¥à¥§ ¯ã饭), ­® 1 à § ¢ë§¢ âì ®¡ï§ â¥«ì­® ­ã¦­®.
‚®§¢à é ¥â 1 ¯à¨ ãá¯¥å¥ ¨ 0 ¯à¨ ­¥ã¤ ç¥ (­¥ ­ ©¤¥­ ¤¥¬®­).
 
clipboard_write(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
ax (á«®¢®) - id ä®à¬ â  ) - § ¯¨áì ¤ ­­ëå ¢ ¡ãä¥à ®¡¬¥­ .
‚믮«­ï¥â ª®¬ ­¤ë 1 ¨ 2. ‚®§¢à é ¥â 1 ¯à¨ ãá¯¥å¥ ¨ 0 ¯à¨ ­¥ã¤ ç¥
(¯à¨ç¨­ë ¡ë¢ îâ à §­ë¥: ¤¥¬®­ ­¥ ¡ë« ­ ©¤¥­ ¨«¨ § ­ïâ ¨ â.¤.).
 
clipboard_read(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
ax (á«®¢®) - id ä®à¬ â  ) - ç⥭¨¥ ¤ ­­ëå ¨§ ¡ãä¥à  ®¡¬¥­ . ‚믮«­ï¥â
ª®¬ ­¤ë 3 ¨ 4. ‚®§¢à é ¥â ¢ eax 1 ¯à¨ ãᯥå¥, -1 ¯à¨ ­¥å¢ âª¥ ¬¥áâ  ¢
¡ãä¥à¥-¯à¨¥¬­¨ª¥(ª®â®àë© ¢ í⮬ á«ãç ¥ ­¥ ¬¥­ï¥âáï) ¨ 0 ¯à¨ ¯à®ç¨å ®è¨¡ª å.
‚ edx(¯à¨ eax=1 ¨«¨ -1) ¢®§¢à é ¥âáï ¤¥©á⢨⥫ì­ë© à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥.
 
‡ ¬¥ç ­¨¥. …᫨ ¯à¨«®¦¥­¨¥ ¨á¯®«ì§ã¥â ¢å®¤ï騥 IPC ­¥ ⮫쪮 ¤«ï à ¡®âë á
¡ãä¥à®¬ ®¡¬¥­ , á«¥¤ã¥â ®¡à ¡ â뢠âì á®®¡é¥­¨ï ¤¥¬®­  @clip ¢àãç­ãî, â.ª.
¨­ ç¥ ¬®¦¥â ¢®§­¨ª­ãâì â ª ï á¨âã æ¨ï: á®®¡é¥­¨¥ ®â ¤à㣮£® ¯à¨«®¦¥­¨ï
¯®¯ ¤¥â ¢ ¡ãä¥à í⮣® ¯à¨«®¦¥­¨ï ¤«ï á®®¡é¥­¨© ®â ¤¥¬®­  ¡ãä¥à ,
¨ ¡ã¤¥â ¯à®¨£­®à¨à®¢ ­®.
 
’ ª¦¥ ¬®¦­® ¨á¯®«ì§®¢ âì(¯®á«¥ ¢ë§®¢  clipboard_init) á«¥¤ãî騥 ä㭪樨 ¡®«¥¥
­¨§ª®£® ã஢­ï:
_ipc_send (esi 㪠§ë¢ ¥â ­  ®¡ëç­ë© ¡ãä¥à, edx - ª®«¨ç¥á⢮ ¡ ©â).
Žâ¯à ¢«ï¥â IPC-á®®¡é¥­¨¥ ¤¥¬®­ã. Žâ«¨ç¨¥ ®â ä㭪樨 60/2 ¢ ⮬, çâ® _ipc_send
¯®¢â®àï¥â ­¥áª®«ìª® (â®ç­¥¥, ATTEMPTS) à § ¯®¯ëâªã ®â¯à ¢ª¨, ¥á«¨ ¡ãä¥à ¤¥¬®­ 
§ ­ïâ (ª®¤ 2) ¨«¨ ¯¥à¥¯®«­¥­ (ª®¤ 3), á ¯ ã§®© ¢ SEND_DELAY/100 ᥪ㭤.
‚®§¢à é ¥â 1 ¯à¨ ãᯥå¥, 0 ¯à¨ ®è¨¡ª¥.
 
_ipc_recv(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
edx = ¬ áª  ᮡë⨩ ¯®â®ª  ¯® 㬮«ç ­¨î).
†¤¥â á®®¡é¥­¨ï ®â ¤¥¬®­  ¢ â¥ç¥­¨¥ RECV_DELAY/100 ᥪ㭤. à¨ ãᯥå¥
१ã«ìâ â á®åà ­ï¥âáï ¢ esi.
‚®§¢à é ¥â 1 ¯à¨ ãᯥå¥, 0 ¯à¨ ®è¨¡ª¥.
 
”®à¬ â ¡ãä¥à  ¤«ï à ¡®âë á ¡ãä¥à®¬ ®¡¬¥­ :
CLIP_BUFFER
(+0) .size dd ? ; §¤¥áì ¤®«¦¥­ ¡ëâì § ¯¨á ­ à §¬¥à
; ᮡá⢥­­® ¡ãä¥à  (N)
; ¯à¨ § ¯¨á¨ ¤ ­­ëå ¢ ¡ãä¥à, ¥á«¨ ­ã¦­®
; ®â¯à ¢¨âì ¬¥­ì襥 ª®«¨ç¥á⢮ ¡ ©â,
; ¢à¥¬¥­­® § ¯¨è¨â¥ íâ® ª®«¨ç¥á⢮ á
; (á¬. ¯à¨¬¥à test2)
 
(+4) .sys1 dd ? ; \ í⨠¯®«ï ¨á¯®«ì§ãîâáï ¬®¤ã«¥¬ clip.inc
; - ¤«ï ¢­ãâ७­¨å 楫¥© ¨ ­¥ ¤®«¦­ë
(+8) .sys2 dd ? ; / ¬®¤¨ä¨æ¨à®¢ âìáï ¯à¨«®¦¥­¨¥¬
 
(+12) .data db N dup(?); ᮡá⢥­­® ¤ ­­ë¥ ¡ãä¥à 
 
“¤ ç¨ ¢ ¯à®£à ¬¬¨à®¢ ­¨¨ ¨ ®â« ¤ª¥!
 
; barsuk, 21.08.2008
 
 
 
 
@CLIP - ¤®¯®«­¥­¨¥. ‚¥àá¨ï 0.2.
 
¥ «¨§®¢ ­  ¢®§¬®¦­®áâì ¢áâ ¢ª¨ ⥪áâ  ¢ ¯à¨«®¦¥­¨ï, ­¥ ¯®¤¤¥à¦¨¢ î騥 à ¡®âã
á @clip, ¯à¨ ¯®¬®é¨ ä㭪樨 72.1. Ž¤­ ª®, ¨§-§  ®á®¡¥­­®á⥩ ॠ«¨§ æ¨¨,
¯à¨«®¦¥­¨ï¬ ¯à¨å®¤¨â ª®¤ ¨§ edx, ­¥§ ¢¨á¨¬® ®â ०¨¬  ¢¢®¤ (ascii/scancode).
Ÿ à¥è¨«, çâ® ¡®«ì設á⢮ ¯à¨«®¦¥­¨©, ¢á¥ ¦¥, îâ ०¨¬ ascii, ¨ ¯®í⮬ã
¢ë¡à « ¥£® ¨ ¤«ï @clip (  ⥠¯à¨«®¦¥­¨ï, ª®â®àë¥ ¨á¯®«ì§ãîâ ०¨¬ ᪠­-ª®¤®¢,
¯®«ãç â ­¥¢¥à­ë© ¢¢®¤).
ë«® ¡ë ­¥¯«®å® ¢­¥á⨠¨§¬¥­¥­¨ï ¢ ï¤à® (å®âï ¡ë ¢®§¬®¦­®áâì 㧭 âì ç㦮©
०¨¬ ¢¢®¤ ).
 
‚áâ ¢ª  ®áãé¥á⢫ï¥âáï ­ ¦ â¨¥¬ £®àï祩 ª« ¢¨è¨ ctrl-alt-v. ‘­ ç «  ­ã¦­®
§ ¯ãáâ¨âì ¯à¨«®¦¥­¨¥, à ¡®â î饥 á @clip (­ ¯à¨¬¥à, test2), ¨ ᪮¯¨à®¢ âì ¢
¡ãä¥à á id = 1 (®¡ëç­ë© ⥪áâ) ª ª®©-«¨¡® ⥪áâ.
 
…é¥ ¬ëá«ì: ¤®¡ ¢¨âì ¢ eolite (  å®à®è® ¡ë ¨ kfar) ª®¯¨à®¢ ­¨¥ ¢ ¡ãä¥à
⥪ã饣® ¯ã⨠¨ ¨¬¥­¨ ä ©«  ¯®¤ ªãàá®à®¬. Š®¬¯¨«ïæ¨ï ¢ fasm ¨ ᦠ⨥ ¢
kpack áâ ­¥â 㤮¡­¥¥.
 
; 08.09.2008