2009-10-13 25 views
3

Je suis intéressé par l'écriture d'une application qui recouvre un petit affichage tête haute (HUD) sur une autre application, dans VB.NET. Quel est un exemple de ceci?Texte superposé dans la fenêtre de quelqu'un d'autre - HUD

Je devrai énumérer toutes les fenêtres ouvertes pour trouver la fenêtre que je veux, et puis superposer du texte dans une position spécifique sur la fenêtre. Si l'utilisateur déplace cette fenêtre, mon texte devra suivre. (Je peindrai probablement le texte dans une boucle encore et encore). Edit: personne n'a répondu à ma requête initiale - J'ai ajouté C# aux mots-clés pour voir si l'un des gourous dans cette langue pourrait avoir une réponse.

Répondre

4

Vous pouvez utiliser WinApi pour énumérer des fenêtres. Vous pouvez commencer googler avec

[DllImport("user32.dll")] 
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam); 

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool GetWindowRect(IntPtr hWnd, ref WapiRect lpRect); 

Lorsque vous avez trouvé votre fenêtre et a sa poignée, il n'y a pas de problème à tracer sur elle avec quelque chose comme

Graphics g = Graphics.FromHwnd(win.Handle); 
g.FillRectangle(new SolidBrush(Color.White), 0, 0, 1000, 1000); 

Mais superposer ... Un possible solution est de créer sa propre forme de la frontière (il peut même être transparent) et placez votre texte dessus. Ensuite, placez simplement ce formulaire spécial au-dessus d'une autre application.