функция SendInput

Тема в разделе "WASM.BEGINNERS", создана пользователем Llirik, 27 ноя 2010.

  1. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Я тут неможко запутался в структурах) Пожалуйста помогите разобратся
    Код (Text):
    1. .386p
    2. option casemap:none
    3. .model flat, stdcall
    4. includelib C:\masm32\lib\kernel32.lib
    5. includelib  C:\masm32\lib\user32.lib
    6. includelib  C:\masm32\lib\gdi32.lib
    7. includelib  C:\masm32\lib\advapi32.lib
    8. includelib  C:\masm32\lib\winmm.lib
    9. include C:\masm32\include\Windows.inc
    10. include C:\masm32\include\Kernel32.inc
    11. include C:\masm32\include\gdi32.inc
    12. include C:\masm32\include\advapi32.inc
    13. include C:\masm32\include\user32.inc
    14. include C:\masm32\include\winmm.inc
    15. include \masm32\Macros\Strings.mac
    16.  
    17. MOUSEINPUT  struct
    18. dx_ SDWORD  ?
    19. dy  SDWORD  ?
    20. mouseData   DWORD   ?
    21. dwFlags DWORD   ?
    22. time    DWORD   ?
    23. dwExtraInfo DWORD   ?
    24. MOUSEINPUT  ends
    25.  
    26. PMOUSEINPUT typedef ptr MOUSEINPUT
    27. LPMOUSEINPUT typedef ptr MOUSEINPUT
    28.  
    29. KEYBDINPUT  struct
    30. wVk WORD    ?
    31. wScan   WORD    ?
    32. dwFlags DWORD   ?
    33. time    DWORD   ?
    34. dwExtraInfo DWORD   ?
    35. KEYBDINPUT  ends
    36.  
    37. PKEYBDINPUT typedef ptr KEYBDINPUT
    38. LPKEYBDINPUT typedef ptr KEYBDINPUT
    39.  
    40. HARDWAREINPUT   struct
    41. uMsg    DWORD   ?
    42. wParamL WORD    ?
    43. wParamH WORD    ?
    44. HARDWAREINPUT   ends
    45.  
    46. PHARDWAREINPUT typedef ptr HARDWAREINPUT
    47. LPHARDWAREINPUT typedef ptr HARDWAREINPUT
    48.  
    49. INPUT_MOUSE EQU 0
    50. INPUT_KEYBOARD  EQU 1
    51. INPUT_HARDWARE  EQU 2
    52. INPUT   struct
    53. type_   DWORD   ?
    54. union
    55. mi  MOUSEINPUT  <>
    56. ki  KEYBDINPUT  <>
    57. hi  HARDWAREINPUT   <>
    58. ends
    59. INPUT   ends
    60.  
    61. PINPUT typedef ptr INPUT
    62. LPINPUT typedef ptr INPUT
    63. INPUT_KEYBOARD  EQU 1
    64. TIME_CALLBACK_FUNCTION  EQU 0000H  ; callback is function
    65. .data
    66. kk db 0
    67. xx    dd 0
    68. yy dd 0
    69.  AppName  db "AutoClicker",0
    70. timid dd ?
    71.  
    72. .CODE
    73. main:
    74. ;call rAndStartDriver
    75. ;jmp uuret
    76. RegisterAndStartDriver proc ;arg1 :DWORD,  arg2:DWORD, arg3 :DWORD, arg4 :DWORD, arg5 :DWORd
    77. LOCAL point: POINT
    78. local kip: INPUT
    79. local kbd: KEYBDINPUT
    80. mov kip.type_, INPUT_KEYBOARD
    81. mov kip.ki, offset kbd
    82. mov kbd.wVk, VK_CONTROL
    83. pp:
    84. INVOKE GetCursorPos, ADDR point
    85.  mov eax,point.y
    86. .if eax < yy
    87. .if kk == 0
    88.  
    89. mov kbd.wScan, 19h
    90. mov kbd.dwFlags, 0
    91. invoke  SendInput, 1, addr kip, sizeof kip
    92. mov kk,1
    93. .endif
    94. .else
    95. add eax,3
    96. .if eax < yy
    97.  
    98. mov kbd.wScan, 19h
    99. mov kbd.dwFlags, KEYEVENTF_KEYUP
    100. invoke  SendInput, 1, addr kip, sizeof kip
    101. mov kk,0
    102. .endif
    103. .endif
    104.  mov eax,point.y
    105.  mov yy,eax
    106. jmp  pp
    107. ret
    108. RegisterAndStartDriver endp
    109. end main
     
  2. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Я просто не могу понять, как обратиться к структуре ki в структуре INPUT
     
  3. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Со структурами я, кажется, разобрался, но клавиша почему-то не нажимается(
    Код (Text):
    1. .386p
    2. option casemap:none
    3. .model flat, stdcall
    4. includelib C:\masm32\lib\kernel32.lib
    5. includelib  C:\masm32\lib\user32.lib
    6. includelib  C:\masm32\lib\gdi32.lib
    7. includelib  C:\masm32\lib\advapi32.lib
    8. includelib  C:\masm32\lib\winmm.lib
    9. include C:\masm32\include\Windows.inc
    10. include C:\masm32\include\Kernel32.inc
    11. include C:\masm32\include\gdi32.inc
    12. include C:\masm32\include\advapi32.inc
    13. include C:\masm32\include\user32.inc
    14. include C:\masm32\include\winmm.inc
    15. include \masm32\Macros\Strings.mac
    16.  
    17. MOUSEINPUT  struct
    18. dx_ SDWORD  ?
    19. dy  SDWORD  ?
    20. mouseData   DWORD   ?
    21. dwFlags DWORD   ?
    22. time    DWORD   ?
    23. dwExtraInfo DWORD   ?
    24. MOUSEINPUT  ends
    25.  
    26. PMOUSEINPUT typedef ptr MOUSEINPUT
    27. LPMOUSEINPUT typedef ptr MOUSEINPUT
    28.  
    29.  
    30. KEYBDINPUT  struct
    31. wVk WORD    ?
    32. wScan   WORD    ?
    33. dwFlags DWORD   ?
    34. time    DWORD   ?
    35. dwExtraInfo DWORD   ?
    36. KEYBDINPUT  ends
    37. PKEYBDINPUT typedef ptr KEYBDINPUT
    38. LPKEYBDINPUT typedef ptr KEYBDINPUT
    39.  
    40. HARDWAREINPUT   struct
    41. uMsg    DWORD   ?
    42. wParamL WORD    ?
    43. wParamH WORD    ?
    44. HARDWAREINPUT   ends
    45.  
    46. PHARDWAREINPUT typedef ptr HARDWAREINPUT
    47. LPHARDWAREINPUT typedef ptr HARDWAREINPUT
    48.  
    49. INPUT_MOUSE EQU 0
    50. INPUT_KEYBOARD  EQU 1
    51. INPUT_HARDWARE  EQU 2
    52. PINPUT typedef ptr INPUT
    53. LPINPUT typedef ptr INPUT
    54. INPUT_KEYBOARD  EQU 1
    55. TIME_CALLBACK_FUNCTION  EQU 0000H  ; callback is function
    56. INPUT   struct
    57. type_   DWORD   ?
    58. union
    59. mi  MOUSEINPUT  <>
    60. ki  KEYBDINPUT  <>
    61. hi  HARDWAREINPUT   <>
    62. ends
    63. INPUT   ends
    64.  
    65. .data
    66. kk db 0
    67. xx    dd 0
    68. yy dd 0
    69.  AppName  db "AutoClicker",0
    70. timid dd ?
    71.  
    72. .CODE
    73. main:
    74. ;call rAndStartDriver
    75. ;jmp uuret
    76. RegisterAndStartDriver proc ;arg1 :DWORD,  arg2:DWORD, arg3 :DWORD, arg4 :DWORD, arg5 :DWORd
    77. LOCAL point: POINT
    78. local input:INPUT
    79. mov input.type_, INPUT_KEYBOARD
    80.  
    81. mov input.ki.wVk, VK_CONTROL
    82. pp:
    83. INVOKE GetCursorPos, ADDR point
    84.  mov eax,point.y
    85. .if eax < yy
    86. .if kk == 0
    87.  
    88. mov input.ki.wScan, 31h
    89. mov input.ki.dwFlags, 0
    90. invoke  SendInput, 1, addr input, sizeof input
    91. mov kk,1
    92. .endif
    93. .else
    94. add eax,3
    95. .if eax < yy
    96. mov input.ki.wScan, 31h
    97. mov input.ki.dwFlags, KEYEVENTF_KEYUP
    98. invoke  SendInput, 1, addr input, sizeof input
    99. mov kk,0
    100. .endif
    101. .endif
    102.  mov eax,point.y
    103.  mov yy,eax
    104. jmp  pp
    105. ret
    106. RegisterAndStartDriver endp
    107. end main
     
  4. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    да уж!