функция timeSetEvent

Тема в разделе "WASM.BEGINNERS", создана пользователем Llirik, 22 ноя 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. TIME_CALLBACK_FUNCTION  EQU 0000H  ; callback is function
    17. .data
    18. xx    dd 0
    19. yy dd 0
    20. .CODE
    21. main:
    22. call rAndStartDriver
    23. jmp uuret
    24. RegisterAndStartDriver proc
    25. LOCAL point: POINT
    26. INVOKE GetCursorPos, ADDR point
    27.  mov eax,point.x
    28. .if eax == xx
    29.  mov eax,point.y
    30. .if eax == yy
    31.  invoke  mouse_event, MOUSEEVENTF_LEFTDOWN, 0, 0, NULL, NULL
    32.  invoke  mouse_event, MOUSEEVENTF_LEFTUP, 0, 0, NULL, NULL
    33. .endif
    34. .endif
    35.  mov eax,point.x
    36.  mov xx,eax
    37.  mov eax,point.y
    38.  mov yy,eax
    39. ret
    40. RegisterAndStartDriver endp
    41. rAndStartDriver proc arg1 :DWORD,  arg2:DWORD, arg3 :DWORD, arg4 :DWORD, arg5 :DWORd
    42. invoke timeSetEvent, 50, 2, RegisterAndStartDriver, 0, TIME_CALLBACK_FUNCTION or TIME_PERIODIC
    43. ret
    44. rAndStartDriver endp   
    45. uuret:
    46.  end main
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Скорее всего, потому что после выполнение rAndStartDriver ничего не происходит
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Во-первых, с параметрами функций напутал: 5 параметров должна иметь ф-я таймера RegisterAndStartDriver, а ф-я запуска rAndStartDriver, судя по вызову, наоборот не должна иметь параметров.
    Во-вторых, после jmp uuret прога идет "в никуда", пытаясь выполнять мусор (или нули), следующие за меткой uuret. Нужно перед end main добавить некую ф-ю ожидания (например Sleep) и затем выход из проги по ret или ExitProcess
     
  4. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    leo, спасибо.