J'ai capturé le bureau total en utilisant CPP, COM et DirectShow. Mais comment puis-je capturer une fenêtre particulière seulement?Comment capturer une fenêtre particulière au lieu du bureau total?
1
A
Répondre
0
-je utiliser quelques aides - mais ceux-ci devraient être faciles à traduire dans ce que vous avez besoin:
// Copy the contents of the client area or the window into an HBITMAP
HBITMAP CaptureWindow(HWND hwnd, bool bIncludeFrame, const RECT * pClip)
{
// get the DC of the source
HDC hdcSource = bIncludeFrame ? ::GetWindowDC(hwnd) : ::GetDC(hwnd);
// get a memory DC
HDC hdcMemory = ::CreateCompatibleDC(hdcSource);
// get the clipping rect
RECT rcClip;
if (pClip)
rcClip = *pClip;
else if (bIncludeFrame)
::GetWindowRect(hwnd, &rcClip);
else
::GetClientRect(hwnd, &rcClip);
// determine the size of bitmap we're going to be making
SIZE sz = { rcClip.right - rcClip.left, rcClip.bottom - rcClip.top };
// create a bitmap on which to copy the image
HBITMAP hbmCapture = ::CreateCompatibleBitmap(hdcSource, sz.cx, sz.cy);
// temporarily select our bitmap into the memory DC, grab the image, then deselect it again
if (AutoSelectGDIObject & select_capture = AutoSelectGDIObject(hdcMemory, hbmCapture))
::BitBlt(hdcMemory, 0, 0, sz.cx, sz.cy, hdcSource, rcClip.left, rcClip.top, SRCCOPY);
// release our resources
::DeleteDC(hdcMemory);
::ReleaseDC(hwnd, hdcSource);
// return the captured bitmap
return hbmCapture;
}
0
- La façon dont vous capturer bureau,
BitBlt
seule la région de la fenêtre d'intérêt dans votre offscreen bitmap (pensez à capture d'image bureau complet et le recadrage à la position de la fenêtre) - Ou, utilisez
WM_PAINT
,WM_PRINTCLIENT
messages pour demander la fenêtre pour se peindre dans votreDC
Questions connexes
- 1. Comment obtenir le point du curseur dans une fenêtre au lieu du bureau entier?
- 2. Capturer le bureau sans ma fenêtre
- 3. OpenCV - enregistrer la fenêtre du navigateur au lieu de capturer la sortie de la caméra?
- 4. comment capturer le bureau en utilisant vC++
- 5. Créer une fenêtre sur le calque du bureau
- 6. Comment capturer une vidéo de mon bureau avec .NET?
- 7. Dessiner sur/directement au-dessus du bureau?
- 8. Comment capturer une sortie de vue Zend au lieu de la sortir
- 9. Barre d'onglets dans une vue au lieu d'une fenêtre
- 10. fenêtre .NET Capturer
- 11. WPF Glisser une fenêtre sur le bureau
- 12. Copier un fichier du bureau au serveur
- 13. Ajouter total au groupe
- 14. Java: Obtenir les résolutions d'un/tous les moniteurs disponibles (au lieu du bureau entier)?
- 15. C# au total Résiliation()
- 16. Comment connecter 2 fileurs différents au total
- 17. Réserver une partie du bureau
- 18. comment sélectionner une ligne particulière?
- 19. utiliser $ (this) au lieu du sélecteur
- 20. Conserver la fenêtre contextuelle dans le contrôle WebBrowser au lieu d'une nouvelle fenêtre
- 21. Fenêtre de position C# sur le bureau
- 22. pad prefresh à n'importe quelle fenêtre au lieu de stdscr?
- 23. PHP Excel Format au lieu du formulaire
- 24. Sauvegarder une seule entité au lieu du contexte entier - revisité
- 25. Comment charger une page au milieu de la page (au lieu du haut)?
- 26. Opengl Triangle au lieu du carré
- 27. C# créer une fenêtre collante sur le bureau avec transperancy
- 28. Popup UIPicker au lieu du clavier
- 29. Comment paramétrer AffineTransform pour qu'il tourne au lieu du cisaillement?
- 30. Google Map info fenêtre afficher le résultat précédent geo au lieu du résultat actuel
Voulez-vous dire la capture comme dans la capture d'écran? –
Pas une capture d'écran, mais je dois capturer une fenêtre particulière qui peut être redimensionner, minimiser et publier sur l'extrémité distante. Aussi ce qui devrait être mis à l'extrémité distante lorsque cette fenêtre est minimisée? – Rupali