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

[C#] Een bestaand venster naar je applicatie verplaatsen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zoek een manier om een bestaand venster "op te pakken en in mijn applicatie te slepen".

Dus het eigenlijke voorbeeld.
In winamp kun je zo visualizations aanzetten. Dat is een apart venster.
Ik wil dat venster "capturen" naar mijn applicatie. Ik heb zowat heel google al af lopen zoeken maar niet echt iets nuttigs gevonden. Het leek mij dat dit niet zo heel moeilijk zou moeten zijn. Als je de naam van het venster hebt, kun je toch wel ergens in code dat venster verplaatsen en ergens op je eigen form plaatsen?

iemand die me op weg kan helpen?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou het niet zo weten, mischien dat je iets met MDI kunt doen, maar het lijkt me niet echt eenvoudig.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-11 15:14

ZaZ

Tweakers abonnee

Met de handle van het window de window flags opvragen en dan 'm dan de child flag geven en dan met SetParent child maken van jouw window?
Wordt trouwens niet gesupport door MS, maar werkt wel tot in ieder geval XP.
Maar als het niet in Vista werkt, dan heb je geen recht tot zeuren.

Lekker op de bank


Verwijderd

Topicstarter
Hmm,
ik wil gewoon de visualization van winamp op mijn scherm hebben staan :)
Ik had vroeger ergens een programma wat dat deed, en dat werkte best goed.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
kijk eens op www.pinvoke.net (is geen antwoord of het kan maar in ieder geval een schopje in de richting)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Je zult er zelf achter moeten komen dat er een venster over die van jouw heengesleept wordt, als dat lukt is het verder ook niet zo moeilijk meer. Met de API calls uit User32.dll kan je met GetForeGroundWindow z'n handle achterhalen en met SetParent jouw venster tot parent bombarderen. Heb het even getest met een HotKey (wat simpeler dan het detectereren van slepen).

API calls doe je dus zo:
C#:
1
2
3
4
5
[DllImport("user32")]
public static extern IntPtr GetForegroundWindow();

[DllImport("user32")]
private static extern IntPtr SetParent(IntPtr hwndChild, IntPtr hwndNewParent);


Waarna je ze aan kunt roepen vanuit je eigen code.

[ Voor 27% gewijzigd door riezebosch op 16-10-2007 15:02 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Lijkt me dat ie eerder een WM_PRINT of WM_PRINTCLIENT message wil zenden naar de juiste control en daaraan jouw HDC meegeven:
http://msdn2.microsoft.com/en-us/library/ms534856.aspx

ASSUME makes an ASS out of U and ME


  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 21:20

AlphaRomeo

FP PowerMod
Hoe dan ook wordt dit geheid een 'smerige' workaround. Is er echt geen andere manier? Bijvoorbeeld via de API's van Winamp zelf (een plugin maken oid)?
Pagina: 1