Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[c#] WM_PAINT hook op extern process/thread?

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 30-11 09:44
Hallo,

Ik ben bezig met een (test) applicatie welke extra informatie op een formulier moet zetten van een applicatie (niet door mij gemaakt). Het ophalen van de open windows en de daarbij behorende handles en het gdi object om op het panel te "tekenen" is inmiddels gelukt.

Wanneer het formulier opnieuw getekend wordt is de extra content verdwenen (logisch). Ik heb geprobeerd om een hook te zetten op de thread die eigenaar is van het Window om zo de WM_PAINT events op te vangen.

Dit lukt echter niet. Wat mij half duidelijk is geworden in artikelen op internet is dat het niet mogelijk is om vanuit C# te hooken in threads die niet van je eigen applicatie zijn.

De enige mogelijkheid die ik nu nog zie is door met een soort van timer te werken en zo elke X ms opnieuw te tekenen.

Dit lijkt mij niet de ideale oplossing. Mijn vraag is of het inderdaad klopt dat het niet mogelijk is om te hooken op een extern thread. Wanneer dit niet mogelijk is, wat is dan de beste oplossing om te bekijken wanneer ik opnieuw moet tekenen?

Wanneer ik op dit moment probeer te hooken (via de SetWindowsHookEx API) krijg ik de WIN32 fout code 1426 (Invalid hook procedure type. ERROR_INVALID_HOOK_FILTER).

...


  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 21:19

CodeIT

Code IT

Wat je nodig hebt zijn global hooks. .Net ondersteunt dit niet, maar met wat trucjes zou het moeten werken. Er is een artikelenserie op devsource waarmee je een heel eind verder moet komen: http://www.devsource.com/article2/0,1895,1972272,00.asp

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 30-11 09:44
Heb het op kunnen lossen met een dll die speciaal voor deze doeleinden is geschreven in c++.
Meer informatie hier.

...