Вызов функции из инжектированного потока

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

  1. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Бьюсь весь день. Задача послать комбинацию окну Ctrl+C - в ответ приложение заполнит буфер обмена.

    1) для начала сделал так

    PostMessage(h,WM_SYSCOMMAND,SC_RESTORE,0);
    SetForegroundWindow(h);
    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
    keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), 0, 0);
    keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL,0), KEYEVENTF_KEYUP, 0);

    все работает. но хотелось бы без SetForegroundWindow
    Сет трейд инпут - не заработал, не предлагать.

    2) Сейчас подргужаю в приложение свою DLL

    proc DllEntry hInstDLL, reason, reserved
    .if [reason]=DLL_PROCESS_ATTACH
    invoke CreateThread,0,0,main,0,0,0
    .endif
    mov eax,TRUE
    ret
    endp

    main:
    call [adres]


    jmp main

    adres dd XXXXXXXXh

    где adres - адрес функции которая вызывается при обработке Ctrl+C
    но к сожалению нормально отрабатывает вызов только один раз. второй вызов функции происходит намного дольше, а на деле это выглядит как зависание ГУИ.
    Есть мысли почему такое может быть?
     
  2. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Такое уточнение

    В отладчике нахожу вызов функции и зацикливаю - функция выполняется без проблем много раз.

    в своем же коде
    call [adres]
    call [adres]
    Второй раз функця выполняеся намного дольше, вешает гуи