Screenshot Win32

Screenshot Win32 - C++ - Programmation

Marsh Posté le 15-05-2002 à 13:53:01    

Salut,
 
je suis en étudiant en informatique. j'amimerais savoir comment faire pour sauver dans un bitmap le screen shot courant avec les API de Windows. (donc simuler le touche Prt Sc).
 
j'ai essaye avec GetDesktopWindow .... mais avec aucun succes..
 
J'utilise visual c++ 6.0
 
merci beaucoup
 
Marcel Beyeler
 
ps. excuse moi pour le mauvais français ... mais ce n'est pas ma langue maternelle!!!!!

Reply

Marsh Posté le 15-05-2002 à 13:53:01   

Reply

Marsh Posté le 15-05-2002 à 14:18:00    

ça m'étonnerai que l'API windows ait une fonction qui permette de faire ça directement.
Par contre, pourquoi ne pas simuler une pression sur cette touche
"Prt Sc" !?
Avec le message WM_KEYDOWN...

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 15-05-2002 à 14:22:32--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-05-2002 à 14:28:52    

J'ai trouvé ça en VB, mais comme tout est en API, ça peut se traduire
 
http://www.andreavb.com/tip090001.html
 
Il me semblait que ça pouvait s'écrire en trois lignes, mais j'ai dû rêver (mémoire peu fidèle).

Reply

Marsh Posté le 15-05-2002 à 14:38:35    

Ca donnerait qq chose comme ça (aux étourderies près) :
 
void CaptureScreen(HWND hWndMain, long Left, long Top, long Width, long Height)
{
    HDC srcDC;
    HDC trgDC;
    HBITMAP BMPHandle;
    DEVMODE *dm;
 
    srcDC = CreateDC("DISPLAY", "", "", &dm);
    trgDC = CreateCompatibleDC(srcDC);
    BMPHandle = CreateCompatibleBitmap(srcDC, Width, Height);
    SelectObject(trgDC, BMPHandle);
    BitBlt(trgDC, 0, 0, Width, Height, srcDC, Left, Top, SRCCOPY);
    OpenClipboard(hWndMain);
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, BMPHandle);
    CloseClipboard();
    DeleteDC(trgDC);
    ReleaseDC(BMPHandle, srcDC);
}
 
Les dimensions de la fenêtre principale, on peut les avoir avec GetWindowRect()
 
Le hWnd "main" se retrouve par hWndMain = GetDesktopWindow();

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed