Subversion Repositories Kolibri OS

Rev

Rev 895 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. Ž¡é¥á¨á⥬­ë© ¡ãä¥à ®¡¬¥­  ¤«ï Ž‘ Š®«¨¡à¨.
  2. ˆ­ä®à¬ æ¨ï ¤«ï ࠧࠡ®â稪®¢.
  3.  
  4. Šà âª®: ãä¥à ॠ«¨§®¢ ­ ç¥à¥§ ¯à®æ¥áá-¤¥¬®­ ¨ IPC-á®®¡é¥­¨ï.
  5. „«ï ¯à®¢¥àª¨ ­ã¦­® § ¯ãáâ¨âì @clip(¤¥¬®­) ¨
  6. (cliptest ¨ ¤®áªã ®â« ¤ª¨) ¨«¨ test2(¬®¦­® ­¥áª®«ìª®).
  7.  
  8. 1. „¥¬®­ @clip ¨ ¥£® ª®¬ ­¤ë.
  9.  
  10. „¥¬®­ @clip ॠ«¨§®¢ ­ ª ª ¯à®æ¥áá, ­¥ ᮧ¤ î騩 ®ª®­ (§ ç¥¬ ®­¨ ¥¬ã),
  11.   ⮫쪮 á«ãè î騩 IPC-á®®¡é¥­¨ï. „¥¬®­ ¯®¤¤¥à¦¨¢ ¥â ¤® 16 (MAX_FORMAT) ¡ãä¥à®¢ ¤«ï
  12. à §«¨ç­ëå ä®à¬ â®¢ ¤ ­­ëå, ¨ ¤® 16,7 Œ¡ (MAX_SIZE) ¤ ­­ëå ¢ ª ¦¤®¬ ¡ãä¥à¥
  13. (¯ ¬ïâì ®â¢®¤¨âáï ¤¨­ ¬¨ç¥áª¨).
  14. Id ä®à¬ â  ¤ ­­ëå - ç¨á«® ®â 0 ¤® 65534 (§­ ç¥­¨¥ 65535 § à¥§¥à¢¨à®¢ ­®).
  15.  
  16. à¨ § ¯ã᪥ ¤¥¬®­ § ¢¥à蠥⠢ᥠ¤à㣨¥ ¯à®æ¥ááë @clip.
  17.  
  18. Š®¬ ­¤ë, ¯¥à¥¤ ¢ ¥¬ë¥ ¤¥¬®­ã, ¨¬¥îâ ä®à¬ â:
  19.  
  20. [ Cmd: word | Format: word | Reserved: Dword | Data: ...]
  21.  
  22. £¤¥ Cmd - ª®¤ ª®¬ ­¤ë,
  23. Format - id ä®à¬ â  ¤ ­­ëå,
  24. Reserved - ç⮠㣮¤­® (­¥ ¨á¯®«ì§ã¥âáï),
  25. ¨ Data - ¤ ­­ë¥, á¬ëá« ª®â®àëå § ¢¨á¨â ®â ª®¬ ­¤ë.
  26.  
  27. „¥¬®­ ¢®á¯à¨­¨¬ ¥â á«¥¤ãî騥 ª®¬ ­¤ë:
  28.  
  29. Š®¤ 1. Set Size. “ª § âì ­¥®¡å®¤¨¬ë© à §¬¥à ¡ãä¥à  ¤«ï ¯à¨¥¬  ¤ ­­ëå. ® í⮩
  30. ª®¬ ­¤¥ ¤¥¬®­ ¯à¨ ­¥®¡å®¤¨¬®á⨠à áè¨àï¥â ᢮© ¡ãä¥à ¤«ï IPC-á®®¡é¥­¨©
  31. (ᯮᮡ  㬥­ìè¨âì ¡ãä¥à ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ­¥â).
  32.  à ¬¥âà Data: 1 Dword, ᮤ¥à¦ é¨© à §¬¥à ¤ ­­ëå ¤«ï ¯¥à¥¤ ç¨.
  33. „«¨­  ª®¬ ­¤ë: 12 ¡ ©â.
  34.  
  35. Š®¤ 2. Set. ¥à¥¤ ç  ¤ ­­ëå. ® í⮩ ª®¬ ­¤¥ ¤ ­­ë¥ ª®¯¨àãîâáï ¢ ¯ ¬ïâì ¤¥¬®­ .
  36.  à ¬¥âà Data: ¤ ­­ë¥, ª®â®àë¥ ­ã¦­® ᪮¯¨à®¢ âì.
  37. „«¨­  ª®¬ ­¤ë: 8 + (¤«¨­  ¤ ­­ëå) ¡ ©â.
  38.  
  39. Š®¤ 3. Get Size. ®«ãç¨âì à §¬¥à ¤ ­­ëå, åà ­ïé¨åáï ¢ ¡ãä¥à¥ á 㪠§ ­­ë¬ id
  40. ä®à¬ â . ® í⮩ ª®¬ ­¤¥ ¤¥¬®­ ®â¯à ¢«ï¥â ®â¢¥â­®¥ IPC-á®®¡é¥­¨¥ ¤«¨­®© 4
  41. ¡ ©â , ᮤ¥à¦ é¥¥ à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥. …᫨ ¤ ­­ë¥ ¢ ¡ãä¥à¥ ®âáãâáâ¢ãîâ,
  42. ¢ á®®¡é¥­¨¨ 㪠§ë¢ ¥âáï à §¬¥à 0.
  43. „«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
  44.  
  45. Š®¤ 4. Get. ®«ãç¨âì ¤ ­­ë¥ ¨§ ¡ãä¥à  á 㪠§ ­­ë¬ id ä®à¬ â . ® í⮩ ª®¬ ­¤¥
  46. ¤¥¬®­ ®â¯à ¢«ï¥â ®â¢¥â­®¥ IPC-á®®¡é¥­¨¥ ­ã¦­®© ¤«¨­ë á ¤ ­­ë¬¨ ¨§ ¡ãä¥à .
  47. …᫨ ¤ ­­ë¥ ¢ ¡ãä¥à¥ ®âáãâáâ¢ãîâ, ®â¢¥â­®¥ á®®¡é¥­¨¥ ­¥ ®â¯à ¢«ï¥âáï.
  48. „«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
  49.  
  50. Š®¤ 5. Delete. Žç¨áâ¨âì ¡ãä¥à á 㪠§ ­­ë¬ id ä®à¬ â . …᫨ 㪠§ âì
  51. id ä®à¬ â  = 0xFFFF, ¡ã¤ãâ ®ç¨é¥­ë ¢á¥ ¡ãä¥àë.
  52. „«¨­  ª®¬ ­¤ë: 8 ¡ ©â.
  53.  
  54. ˆá室­ë© ä ©« - @clip.asm. …᫨ à áª®¬¬¥­â¨à®¢ âì áâà®çªã
  55. ;define DEBUG TRUE
  56. ¨ § ª®¬¬¥­â¨à®¢ âì á«¥¤ãîéãî, â® ¤¥¬®­ ­ ç­¥â ¯¨á âì ¬­®£® ¡ãª®¢®ª ­  ¤®áªã
  57. ®â« ¤ª¨, ¨ ¯® ­¨¬ ¬®¦­® ¡ã¤¥â çâ®-â® ¯®­ïâì ® ¢®§­¨ª îé¨å ®è¨¡ª å.
  58. DEFAULT_SIZE - ­ ç «ì­ë© à §¬¥à IPC-¡ãä¥à 
  59. MAX_SIZE - ®£à ­¨ç¥­¨¥ ­  ¡ãä¥à
  60. MAX_FORMAT - ç¨á«® à §«¨ç­ëå ä®à¬ â®¢, ª®â®àë¥ ¬®¦­® § áã­ãâì ¢ ¤¥¬®­ 
  61. ®¤­®¢à¥¬¥­­® (  ¥á«¨ ¡®«ìè¥, ᣫîç¨â. ’®¦¥ ­ ¤® ¯®ä¨ªá¨âì).
  62. DELAY - § ¤¥à¦ª  ¬¥¦¤ã ¯®¯ë⪠¬¨ ®â¯à ¢ª¨ á®®¡é¥­¨ï, /100 ᥪ.
  63. ATTEMPT - ª®«¨ç¥á⢮ ¯®¯ë⮪ ®â¯à ¢ª¨ á®®¡é¥­¨ï § ­ï⮬㠨«¨ ­¥ £®â®¢®¬ã
  64. ¯à®æ¥ááã.
  65.  
  66.  
  67. 2. clip.inc - ­ ¡®à ä㭪権 ¤«ï ¡®«¥¥ ¢ë᮪®ã஢­¥£® ®¡é¥­¨ï á ¤¥¬®­®¬ @clip.
  68. ¥ «¨§®¢ ­® ç⥭¨¥ ¡ãä¥à  ¨ § ¯¨áì ¢ ¡ãä¥à.
  69.  
  70. à¨¬¥à ¨á¯®«ì§®¢ ­¨ï -  cliptest.asm (¢ë¢®¤ ­  ¤®áªã ®â« ¤ª¨) ¨
  71. test2.asm.
  72.  
  73. à¨ ¨á¯®«ì§®¢ ­¨¨ clip.inc ­¥®¡å®¤¨¬® 㪠§ âì á«¥¤ãî騥 §­ ç¥­¨ï (ç¨á« ,
  74. ¥áâ¥á⢥­­®, ¬®£ãâ ¡ëâì ¤à㣨¥):
  75. DEFAULT_MASK = 7        ; Œ áª  ᮡë⨩ (á¬. äã­ªæ¨î 40) ¯® 㬮«ç ­¨î ¤«ï
  76.                         ; ⥪ã饣® ¯®â®ª . ã¦­ , çâ®¡ë ¯®á«¥ ¯à¨¥¬ 
  77.                         ; IPC-á®®¡é¥­¨ï (ª®£¤  ¬ áª  ¬¥­ï¥âáï ­  01000000b)
  78.                         ; ¢®ááâ ­®¢¨âì áâ àãî ¬ áªã (  ¯®«ãç¨âì ¬ áªã •‡ ª ª).
  79.  
  80. SEND_DELAY = 10         ; ¯ ã§  ¬¥¦¤ã ¯®¯ë⪠¬¨ ¯à¨ ®â¯à ¢ª¥ á®®¡é¥­¨ï ¤¥¬®­ã
  81.  
  82. RECV_DELAY = 100        ; ¢à¥¬ï ®¦¨¤ ­¨ï ®â¢¥â  ®â ¤¥¬®­  (¥á«¨ §  íâ® ¢à¥¬ï
  83.                         ; ­¥ ¯à¨è¥« ®â¢¥â, â® ®è¨¡ª )
  84.                         ; ¢à¥¬ï - ¢ á®âëå ᥪ㭤ë (ª ª ¤«ï ä㭪樨 5).
  85.  
  86. ATTEMPT = 5             ; ª®«¨ç¥á⢮ ¯®¯ë⮪ ®â¯à ¢ª¨ á®®¡é¥­¨ï, ¥á«¨ ¤¥¬®­
  87.                         ; § ­ïâ
  88.  
  89. ®á«¥ ¢ª«î祭¨ï clip.inc áâ ­®¢ïâáï ¤®áâ㯭묨 ä㭪樨:
  90.  
  91. clipboard_init() - ¯®¨áª ¯à®æ¥áá  @clip. âã äã­ªæ¨î
  92. ¬®¦­® ¢ë§ë¢ âì ¬­®£®ªà â­® (­ ¯à¨¬¥à, ¥á«¨ ¤¥¬®­ ­¥ ­ è¥«áï ¨«¨ ¡ë«
  93. ¯¥à¥§ ¯ã饭), ­® 1 à § ¢ë§¢ âì ®¡ï§ â¥«ì­® ­ã¦­®.
  94. ‚®§¢à é ¥â 1 ¯à¨ ãá¯¥å¥ ¨ 0 ¯à¨ ­¥ã¤ ç¥ (­¥ ­ ©¤¥­ ¤¥¬®­).
  95.  
  96. clipboard_write(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
  97. ax (á«®¢®) - id ä®à¬ â  ) - § ¯¨áì ¤ ­­ëå ¢ ¡ãä¥à ®¡¬¥­ .
  98. ‚믮«­ï¥â ª®¬ ­¤ë 1 ¨ 2. ‚®§¢à é ¥â 1 ¯à¨ ãá¯¥å¥ ¨ 0 ¯à¨ ­¥ã¤ ç¥
  99. (¯à¨ç¨­ë ¡ë¢ îâ à §­ë¥: ¤¥¬®­ ­¥ ¡ë« ­ ©¤¥­ ¨«¨ § ­ïâ ¨ â.¤.).
  100.  
  101. clipboard_read(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
  102. ax (á«®¢®) - id ä®à¬ â  ) - ç⥭¨¥ ¤ ­­ëå ¨§ ¡ãä¥à  ®¡¬¥­ . ‚믮«­ï¥â
  103. ª®¬ ­¤ë 3 ¨ 4. ‚®§¢à é ¥â ¢ eax 1 ¯à¨ ãᯥå¥, -1 ¯à¨ ­¥å¢ âª¥ ¬¥áâ  ¢
  104. ¡ãä¥à¥-¯à¨¥¬­¨ª¥(ª®â®àë© ¢ í⮬ á«ãç ¥ ­¥ ¬¥­ï¥âáï) ¨ 0 ¯à¨ ¯à®ç¨å ®è¨¡ª å.
  105. ‚ edx(¯à¨ eax=1 ¨«¨ -1) ¢®§¢à é ¥âáï ¤¥©á⢨⥫ì­ë© à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥.
  106.  
  107. ‡ ¬¥ç ­¨¥. …᫨ ¯à¨«®¦¥­¨¥ ¨á¯®«ì§ã¥â ¢å®¤ï騥 IPC ­¥ ⮫쪮 ¤«ï à ¡®âë á
  108. ¡ãä¥à®¬ ®¡¬¥­ , á«¥¤ã¥â ®¡à ¡ â뢠âì á®®¡é¥­¨ï ¤¥¬®­  @clip ¢àãç­ãî, â.ª.
  109. ¨­ ç¥ ¬®¦¥â ¢®§­¨ª­ãâì â ª ï á¨âã æ¨ï: á®®¡é¥­¨¥ ®â ¤à㣮£® ¯à¨«®¦¥­¨ï
  110. ¯®¯ ¤¥â ¢ ¡ãä¥à í⮣® ¯à¨«®¦¥­¨ï ¤«ï á®®¡é¥­¨© ®â ¤¥¬®­  ¡ãä¥à ,
  111. ¨ ¡ã¤¥â ¯à®¨£­®à¨à®¢ ­®.
  112.  
  113. ’ ª¦¥ ¬®¦­® ¨á¯®«ì§®¢ âì(¯®á«¥ ¢ë§®¢  clipboard_init) á«¥¤ãî騥 ä㭪樨 ¡®«¥¥
  114. ­¨§ª®£® ã஢­ï:
  115. _ipc_send (esi 㪠§ë¢ ¥â ­  ®¡ëç­ë© ¡ãä¥à, edx - ª®«¨ç¥á⢮ ¡ ©â).
  116. Žâ¯à ¢«ï¥â IPC-á®®¡é¥­¨¥ ¤¥¬®­ã. Žâ«¨ç¨¥ ®â ä㭪樨 60/2 ¢ ⮬, çâ® _ipc_send
  117. ¯®¢â®àï¥â ­¥áª®«ìª® (â®ç­¥¥, ATTEMPTS) à § ¯®¯ëâªã ®â¯à ¢ª¨, ¥á«¨ ¡ãä¥à ¤¥¬®­ 
  118. § ­ïâ (ª®¤ 2) ¨«¨ ¯¥à¥¯®«­¥­ (ª®¤ 3), á ¯ ã§®© ¢ SEND_DELAY/100 ᥪ㭤.
  119. ‚®§¢à é ¥â 1 ¯à¨ ãᯥå¥, 0 ¯à¨ ®è¨¡ª¥.
  120.  
  121. _ipc_recv(esi 㪠§ë¢ ¥â ­  ¡ãä¥à ¢ ä®à¬ â¥ CLIP_BUFFER (á¬. ¤ «¥¥),
  122. edx = ¬ áª  ᮡë⨩ ¯®â®ª  ¯® 㬮«ç ­¨î).
  123. †¤¥â á®®¡é¥­¨ï ®â ¤¥¬®­  ¢ â¥ç¥­¨¥ RECV_DELAY/100 ᥪ㭤. à¨ ãᯥå¥
  124. १ã«ìâ â á®åà ­ï¥âáï ¢ esi.
  125. ‚®§¢à é ¥â 1 ¯à¨ ãᯥå¥, 0 ¯à¨ ®è¨¡ª¥.
  126.  
  127. ”®à¬ â ¡ãä¥à  ¤«ï à ¡®âë á ¡ãä¥à®¬ ®¡¬¥­ :
  128. CLIP_BUFFER
  129. (+0)    .size   dd      ?       ; §¤¥áì ¤®«¦¥­ ¡ëâì § ¯¨á ­ à §¬¥à
  130.                                 ; ᮡá⢥­­® ¡ãä¥à  (N)
  131.                                 ; ¯à¨ § ¯¨á¨ ¤ ­­ëå ¢ ¡ãä¥à, ¥á«¨ ­ã¦­®
  132.                                 ; ®â¯à ¢¨âì ¬¥­ì襥 ª®«¨ç¥á⢮ ¡ ©â,
  133.                                 ; ¢à¥¬¥­­® § ¯¨è¨â¥ íâ® ª®«¨ç¥á⢮ á
  134.                                 ; (á¬. ¯à¨¬¥à test2)
  135.  
  136. (+4)    .sys1   dd      ?       ; \  í⨠¯®«ï ¨á¯®«ì§ãîâáï ¬®¤ã«¥¬ clip.inc
  137.                                 ;  - ¤«ï ¢­ãâ७­¨å 楫¥© ¨ ­¥ ¤®«¦­ë
  138. (+8)    .sys2   dd      ?       ; /  ¬®¤¨ä¨æ¨à®¢ âìáï ¯à¨«®¦¥­¨¥¬
  139.  
  140. (+12)   .data   db      N dup(?); ᮡá⢥­­® ¤ ­­ë¥ ¡ãä¥à 
  141.  
  142. “¤ ç¨ ¢ ¯à®£à ¬¬¨à®¢ ­¨¨ ¨ ®â« ¤ª¥!
  143.  
  144. ; barsuk, 21.08.2008
  145.  
  146.  
  147.  
  148.  
  149. @CLIP - ¤®¯®«­¥­¨¥. ‚¥àá¨ï 0.2.
  150.  
  151. ¥ «¨§®¢ ­  ¢®§¬®¦­®áâì ¢áâ ¢ª¨ ⥪áâ  ¢ ¯à¨«®¦¥­¨ï, ­¥ ¯®¤¤¥à¦¨¢ î騥 à ¡®âã
  152. á @clip, ¯à¨ ¯®¬®é¨ ä㭪樨 72.1. Ž¤­ ª®, ¨§-§  ®á®¡¥­­®á⥩ ॠ«¨§ æ¨¨,
  153. ¯à¨«®¦¥­¨ï¬ ¯à¨å®¤¨â ª®¤ ¨§ edx, ­¥§ ¢¨á¨¬® ®â ०¨¬  ¢¢®¤ (ascii/scancode).
  154. Ÿ à¥è¨«, çâ® ¡®«ì設á⢮ ¯à¨«®¦¥­¨©, ¢á¥ ¦¥, îâ ०¨¬ ascii, ¨ ¯®í⮬ã
  155. ¢ë¡à « ¥£® ¨ ¤«ï @clip (  ⥠¯à¨«®¦¥­¨ï, ª®â®àë¥ ¨á¯®«ì§ãîâ ०¨¬ ᪠­-ª®¤®¢,
  156. ¯®«ãç â ­¥¢¥à­ë© ¢¢®¤).
  157. ë«® ¡ë ­¥¯«®å® ¢­¥á⨠¨§¬¥­¥­¨ï ¢ ï¤à® (å®âï ¡ë ¢®§¬®¦­®áâì 㧭 âì ç㦮©
  158. ०¨¬ ¢¢®¤ ).
  159.  
  160. ‚áâ ¢ª  ®áãé¥á⢫ï¥âáï ­ ¦ â¨¥¬ £®àï祩 ª« ¢¨è¨ ctrl-alt-v. ‘­ ç «  ­ã¦­®
  161. § ¯ãáâ¨âì ¯à¨«®¦¥­¨¥, à ¡®â î饥 á @clip (­ ¯à¨¬¥à, test2), ¨ ᪮¯¨à®¢ âì ¢
  162. ¡ãä¥à á id = 1 (®¡ëç­ë© ⥪áâ) ª ª®©-«¨¡® ⥪áâ.
  163.  
  164. …é¥ ¬ëá«ì: ¤®¡ ¢¨âì ¢ eolite (  å®à®è® ¡ë ¨ kfar) ª®¯¨à®¢ ­¨¥ ¢ ¡ãä¥à
  165. ⥪ã饣® ¯ã⨠¨ ¨¬¥­¨ ä ©«  ¯®¤ ªãàá®à®¬. Š®¬¯¨«ïæ¨ï ¢ fasm ¨ ᦠ⨥ ¢
  166. kpack áâ ­¥â 㤮¡­¥¥.
  167.  
  168. ; 08.09.2008