Как использовать GetMessage для чтения очереди сообщений другого потока - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь запустить поток в фоновом режиме, который читает очередь сообщений из основного потока, поэтому я могу сосредоточиться на установке и удалении хуков и реагировании на действия пользователя, но я не могу сделать опрос второго потока из очередь сообщений основного потока. Я искал решение, но не нашел ответа, который решает мою проблему. Кто-нибудь здесь знает, что делать? заранее спасибо!

это код, который я написал: (счетчик увеличения хука Macro_Record при каждом вызове)

int counter = 0;
MSG stam;

void Init(DWORD main_id)

{
     DWORD cur_id = GetCurrentThreadId();
     int result = AttachThreadInput(main_id, cur_id, true);
     if (!result)
     {
         cout << "Threads not attached " << result << endl;
     }
     else
     {
         cout << "Threads attached " << result << endl;
     }
     while (GetMessage(&stam, NULL, 0, 0));
}


int main()
{
    DWORD id = GetCurrentThreadId();
    HANDLE hthread;
    hthread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Init,(LPVOID)id, 0, NULL);
    if (hthread == NULL)
    {
        cout << "Thread failed" << endl;
    }
    else
    {
        cout << "Thread Success" << endl;
    }
    /*string ans;
    cout << "Enter path to file you want to open" << endl;
    getline(cin, ans);*/
    File_Run* calc= new File_Run("C:\python27\python.exe", "open");
    Macro calc_macro(calc, false, false);
    recording = &calc_macro;
    HHOOK record_handle =SetWindowsHookEx(WH_KEYBOARD_LL, Macro_Record, NULL, NULL);
    if (record_handle == NULL)
    {
        cout << "Install record failed" << endl;
        cout << GetLastError() << endl;
    }
    else
    {
        cout << "Record success, start typing" << endl;
        while (counter < 8);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...