Je ne connais pas suffisamment Jing pour savoir exactement ce qu'il utilise. Mais il existe deux techniques de base. La première consiste, comme vous le mentionnez, à capturer l'écran et à l'afficher dans une forme sans bordures. L'outil Snipping de Vista/Win7 fonctionne de cette manière. Vous trouverez le code dont vous avez besoin pour démarrer dans ma réponse dans este hilo .
L'autre, peut-être plus susceptible d'être utilisée par Jing, est similaire à ce que fait Spy++, permettant à l'utilisateur de déplacer la souris et de dessiner un rectangle de sélection autour de la fenêtre. Son avantage est qu'elle permet de gérer le redimensionnement ou la disparition de Windows pendant que l'outil fonctionne. Vous l'implémentez en utilisant une forme supérieure de la taille de l'écran dont la propriété TransparencyKey est définie sur la valeur de BackColor. Le fuchsia est un choix populaire. Vous pouvez dessiner sur ce formulaire avec la méthode OnPaint(), le dessin apparaît au-dessus de toutes les fenêtres. Vous aurez besoin d'un P/Invoke (GetWindow) pour itérer les fenêtres sous-jacentes dans leur ordre Z afin de savoir quelle fenêtre est pointée par l'utilisateur. GetWindowRect() pour obtenir le rectangle de la fenêtre. Plus un peu de travail pour gérer les mensonges d'Aero sur la taille des bordures.
Vous trouverez un exemple de code pour vous aider à mettre en œuvre cette technique dans ma réponse à la question suivante este hilo .