Pregunta

Tengo un wich Qt DLL me inyecto en una aplicación de terceros usando ventanas desvíos de biblioteca:

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))

y luego establecer un enlace de todo el sistema para interceptar creación de la ventana:

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

Donde XOR es mi nombre de programas y Estado :: getInstance () es un Singleton donde guardo globales.

En mi devolución de llamada CBTProc, quiero interceptar todas las ventanas que están QWidgets:

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

que funciona bien, ya que me sale un correspondiente HWND (he comprobado con Spy ++) Entonces, quiero obtener un puntero a la QWidget, para que pueda utilizar sus funciones:

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

Pero aquí está el problema, el puntero devuelto es siempre 0. No soy yo la inyección de mi código en el proceso correctamente? O no soy yo usando QWidget :: find () como debería?

Gracias,

David

EDIT: Si cambio la QWidget :: find () para una función exportada de mi DLL, después de ajustar los ganchos (para poder establecer y coger un punto de interrupción), QWidgetPrivate :: asignador es NULL

.
¿Fue útil?

Solución

Respondido:

error estúpido, estaba recopilando en la depuración, por lo que fue QtGui4d.dll y QtCore4d.dll que donde la carga, no QtCore4.dll y QtGui.dll

Otros consejos

Comparación de las direcciones de `QWidgetPrivate :: asignador en el DLL y en el código. Percepción extrasensorial. si uno está vinculado estáticamente, puede haber dos instancias de la misma, cada uno con su propia, disjuntos, un conjunto de widgets.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top