Domanda

Ho un wich Qt Dll faccio l'iniezione in un'applicazione di terze parti utilizzando finestre deviazioni libreria:

if(!DetourCreateProcessWithDll( Path, NULL, NULL, NULL, TRUE, 
                                CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED, NULL, NULL,
                                &si, &pi, "C:\\Program Files\\Microsoft Research\\Detours Express 2.1\\bin\\detoured.dll",
                                "C:\\Users\\Dave\\Documents\\Visual Studio 2008\\Projects\\XOR\\Debug\\XOR.dll", NULL))

e poi a impostare un hook al livello di sistema per intercettare creazione finestra:

HHOOK h_hook = ::SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTProc, Status::getInstance()->getXORInstance(), 0);

Dove XOR è il mio nome programmi e Stato :: getInstance () è un Singleton dove tengo globali.

Nel mio CBTProc callback, voglio intercettare tutte le finestre che sono QWidgets:

HWND hwnd= FindWindow(L"QWidget", NULL);

che funziona bene, dal momento che ho un corrispondente HWND (ho controllato con Spy ++) Poi, voglio ottenere un puntatore alla QWidget, in modo da poter utilizzare le sue funzioni:

QWidget* q = QWidget::find(hwnd);

Ma ecco il problema, il puntatore restituito è sempre 0. Non sono io iniettare il mio codice nel processo in modo corretto? O non sono io usando QWidget :: find () come dovrei?

Grazie,

Dave

EDIT: Se cambio la QWidget :: trovare la funzione () per una funzione esportata della mia DLL, dopo aver impostato i ganci (in modo da poter impostare e prendere un punto di interruzione), QWidgetPrivate :: mapper è NULL

.
È stato utile?

Soluzione

Risposta:

errore stupido, ero compilazione in Debug, quindi è stato QtGui4d.dll e QtCore4d.dll che, qualora il carico, non QtCore4.dll e QtGui.dll

Altri suggerimenti

Confronto gli indirizzi dei `QWidgetPrivate :: mapper nella DLL e nel codice. Esp. se uno è collegato in modo statico, ci potrebbero essere due istanza di esso, ciascuna con il proprio, disgiunti, set di widget.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top