windows - Sådan bruger du GetMessage til at læse en anden tråds meddelelseskø

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at køre en tråd i baggrunden, der læser meddelelseskøen fra hovedtråden, så jeg kan fokusere på at installere og afinstallere kroge og reagere på brugerhandlinger, men jeg kan ikke lave den anden trådafstemning fra hovedtråden s meddelelseskø.
Jeg søgte efter en løsning, men fandt ikke noget svar, der løser mit problem.
Er der nogen her ved, hvad de skal gøre?
tak på forhånd!


dette er koden jeg skrev: (Macro\_Record krog øges tæller hver gang det hedder)


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:python27python.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);

Bedste reference