WindowFromDC(hdc) gleich NULL .. wie bekomme ich dennoch das HWND ?
-
hi, ich habe folgendes problem:
ich habe eine dll geschrieben, die einen cbthook in einen fremdem prozess installiert. weiterhin eine detour für DrawText und ExtTextOut installiert um den text der fenster dieses prozesses auszulesen.
hier ist meine detouring-funktion für ExtTextOut:
int WINAPI Mine_ExtTextOut(HDC hdc,int X,int Y,UINT fuOptions,CONST RECT* lprc,LPCTSTR lpString,UINT cbCount,CONST INT* lpDx) { int rv = Real_ExtTextOut(hdc,X,Y,fuOptions,lprc,lpString,cbCount,lpDx); HWND hwnd = WindowFromDC(hdc); . . .das problem ist nun, dass WindowFromDC(hdc) den wert NULL zurückgibt, was
wohl daran liegt, dass es sich um einen in-memory-DC handelt, wie ich mithilfe von google herausgefunden habe (GetObjectType() liefert für hwnd OBJ_MEMDC zurück).hat jemand eine idee wie ich denoch an das handle für das fenster herankomme ?
oder an die globalen koordinaten wo der text gezeichnet wird ?vielen dank
gruß
paule
-
wenn man einen hook installiert, bekommt die hook-proc nicht immer den hwnd als parameter mit?
-
Seit wann muss ein DC mit einem Fenbster zusammenhängen. Man beliebige DCs erzeugen, die mit keinem Fenster zusammenhängen.
-
@vlad_tepesch: ja , aber ich brauch diese information in der detouring funktion
@martin: richtig ... aber mann muss doch irgendwo an die information herankommen können, wo der text gezeichnet wird ...
-
@martin: richtig ... aber mann muss doch irgendwo an die information herankommen können, wo der text gezeichnet wird ...
und wenn er nicht gezeichnet wird, weils ein memory dc ist und das ergebnis in ein bitmap gespeichert wird?
-
er wird gezeichnet , ich seh es auf meinen bildschirm
-
Nein! Er wird evtl. erst in einen MemoryDC gezeichnet und anschließend mit einer BitBlt Operation auf den Bildschirm kopiert!
-
ahso, ok, also gibt es keinen weg festzustellen wo es auf den bildschirm hinkopiert wird ?
-
nö
-
doch in dem du BitBlt hookst
-
nö das prog benutzt BitBlt ned.
-
er hat gar nicht gesagt um welche programm es sich handelt

-
doch, ich habs getestet und es wird massig benutzt ... danke erstmal für die hilfe/tips
