Comment puis-je enregistrer une capture d'écran directement dans un fichier Windows? [fermé]

dans Windows XP, on peut appuyer sur Alt-PrintScreen pour copier une image de la fenêtre active, ou Ctrl-PrintScreen pour copier une image du bureau complet.

cela peut ensuite être collé dans des applications qui acceptent des images: Photoshop, Microsoft Word, etc.

je me demande: y a-t-il un moyen de sauvegarder la capture d'écran directement dans un fichier? Dois-je vraiment pour ouvrir une image programme, comme Paint.net ou Photoshop, simplement pour coller une image, puis la sauvegarder?

109
demandé sur David Koelle 2008-10-01 19:16:53

20 réponses

vous pouvez coder quelque chose de très simple qui va accrocher L'écran D'impression et sauver la capture dans un fichier.

voici quelque chose pour commencer à capturer et enregistrer dans un fichier. Vous aurez juste besoin d'accrocher la touche "Print screen".

using System;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
public class CaptureScreen
{

    static public void Main(string[] args)
    {

        try
        {
            Bitmap capture = CaptureScreen.GetDesktopImage();
            string file = Path.Combine(Environment.CurrentDirectory, "screen.gif");
            ImageFormat format = ImageFormat.Gif;
            capture.Save(file, format);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

    }

    public static Bitmap GetDesktopImage()
    {
        WIN32_API.SIZE size;

        IntPtr  hDC = WIN32_API.GetDC(WIN32_API.GetDesktopWindow()); 
        IntPtr hMemDC = WIN32_API.CreateCompatibleDC(hDC);

        size.cx = WIN32_API.GetSystemMetrics(WIN32_API.SM_CXSCREEN);
        size.cy = WIN32_API.GetSystemMetrics(WIN32_API.SM_CYSCREEN);

        m_HBitmap = WIN32_API.CreateCompatibleBitmap(hDC, size.cx, size.cy);

        if (m_HBitmap!=IntPtr.Zero)
        {
            IntPtr hOld = (IntPtr) WIN32_API.SelectObject(hMemDC, m_HBitmap);
            WIN32_API.BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0, WIN32_API.SRCCOPY);
            WIN32_API.SelectObject(hMemDC, hOld);
            WIN32_API.DeleteDC(hMemDC);
            WIN32_API.ReleaseDC(WIN32_API.GetDesktopWindow(), hDC);
            return System.Drawing.Image.FromHbitmap(m_HBitmap); 
        }
        return null;
    }

    protected static IntPtr m_HBitmap;
}

public class WIN32_API
{
    public struct SIZE
    {
        public int cx;
        public int cy;
    }
    public  const int SRCCOPY = 13369376;
    public  const int SM_CXSCREEN=0;
    public  const int SM_CYSCREEN=1;

    [DllImport("gdi32.dll",EntryPoint="DeleteDC")]
    public static extern IntPtr DeleteDC(IntPtr hDc);

    [DllImport("gdi32.dll",EntryPoint="DeleteObject")]
    public static extern IntPtr DeleteObject(IntPtr hDc);

    [DllImport("gdi32.dll",EntryPoint="BitBlt")]
    public static extern bool BitBlt(IntPtr hdcDest,int xDest,int yDest,int wDest,int hDest,IntPtr hdcSource,int xSrc,int ySrc,int RasterOp);

    [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")]
    public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc,  int nWidth, int nHeight);

    [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")]
    public static extern IntPtr CreateCompatibleDC(IntPtr hdc);

    [DllImport ("gdi32.dll",EntryPoint="SelectObject")]
    public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp);

    [DllImport("user32.dll", EntryPoint="GetDesktopWindow")]
    public static extern IntPtr GetDesktopWindow();

    [DllImport("user32.dll",EntryPoint="GetDC")]
    public static extern IntPtr GetDC(IntPtr ptr);

    [DllImport("user32.dll",EntryPoint="GetSystemMetrics")]
    public static extern int GetSystemMetrics(int abc);

    [DllImport("user32.dll",EntryPoint="GetWindowDC")]
    public static extern IntPtr GetWindowDC(Int32 ptr);

    [DllImport("user32.dll",EntryPoint="ReleaseDC")]
    public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc);
}

mise à Jour Voici le code pour accrocher L'écran D'impression (et autre clé) de C#:

code de Hook

49
répondu Patrick Desjardins 2017-10-12 06:20:05

il n'y a aucun moyen de sauvegarder directement dans un fichier sans un outil tiers avant Windows 8. Voici mon préféré Non-third party solutions d'outils.

Pour Windows 8 et plus tard

Windows Key + PrintScreen enregistre la capture d'écran dans un dossier <user>/Pictures/Screenshots

Pour Windows 7

dans win 7 Il suffit d'utiliser l'outil de découpage: la plupart facilement accessible en appuyant sur Démarrer, puis en tapant " sni " (enter). ou Windows Key puis s n je entrée

versions antérieures de Windows

j'utilise la combinaison de clavier suivante pour capturer, puis enregistrer en utilisant mspaint. Après que vous le faites un couple de fois, il ne prend que 2-3 secondes:

  1. Alt + PrintScreen
  2. Gagner + R ("run")
  3. type "mspaint" entrée
  4. Ctrl - V (pâte)
  5. Ctrl - s (save)
  6. utiliser la boîte de dialogue de fichier
  7. Alt - F4 (fermer mspaint)

en outre, Cropper est grand (et open source). Il ne capture rectangle de fichier ou Presse-papiers, et est bien sûr gratuit.

146
répondu TheSoftwareJedi 2017-06-29 12:12:09

fait peu connu: dans la plupart des dialogues Windows (XP) standard, vous pouvez cliquer sur Ctrl+C pour avoir une copie textuelle du contenu de la boîte de dialogue.

Exemple: ouvrir un fichier dans le bloc-notes, appuyer sur espace, fermer la fenêtre, appuyer sur Ctrl+C dans la boîte de dialogue Confirmer la sortie, annuler, coller dans le bloc-notes le texte de la boîte de dialogue.

Sans rapport avec votre question directe, mais j'ai pensé qu'il serait agréable de le mentionner dans ce fil.

en plus, en effet, vous avez besoin d'une troisième logiciel tiers pour faire la capture d'écran, mais vous n'avez pas besoin de feu le grand Photoshop. Quelque chose de libre et léger comme IrfanWiew ou XnView peut faire le travail. J'utilise MWSnap pour copier des parties arbitraires de l'écran. J'ai écrit un petit script AutoHotkey appelant des fonctions GDI+ pour faire des screenshots. Etc.

17
répondu PhiLho 2008-10-01 15:59:26

Merci pour tout le code source et commentaires - grâce à cela, j'ai enfin une application que je voulais :)

j'ai compilé quelques exemples, et les sources et les exécutables peuvent être trouvés ici:

http://sdaaubckp.svn.sourceforge.net/viewvc/sdaaubckp/xp-take-screenshot /

j'utilise un écran D'interception.exe - il suffit de l'exécuter dans un terminal prompt de commande, puis appuyez sur Insert lorsque vous vous voulez capturer une capture d'Écran (nom de fichier timestamp, png, dans le même répertoire où se trouve l'exécutable); les clés seront capturées même si le terminal n'est pas en focus.

(J'utilise Insert key, car il devrait avoir un temps plus facile se propager à travers, disons, VNC que PrintScreen - qui sur mon ordinateur portable exige que la touche Fn est également pressée, et qui ne se propage pas à travers VNC. Bien sûr, il est facile de changer ce qui est la clé réelle utilisée dans le code source).

Espérons que cette aide, Acclamations!

15
répondu sdaau 2010-04-29 08:02:16

très vieux post je me rends compte, mais windows a finalement réalisé comment inane le processus était.

sous Windows 8.1 (vérifié, ne fonctionne pas sous windows 7 (tnx @bobobobo))

windows key + prnt screen sauve la capture d'écran dans un dossier dans <user>/Pictures/Screenshots

Source - http://windows.microsoft.com/en-in/windows/take-screen-capture-print-screen#take-screen-capture-print-screen=windows-8

11
répondu Karthik T 2014-01-20 01:33:11

puis-je suggérer WinSnap http://www.ntwind.com/software/winsnap/download-free-version.html . Il fournit une option d'autosave et capturer l'écran d'impression alt+et d'autres combinaisons de clés pour capturer l'écran, les fenêtres, le dialogue, etc.

6
répondu Jason 2008-10-10 04:46:26

Dropbox fournit maintenant le crochet pour le faire automatiquement. Si vous obtenez un compte dropbox gratuit et installez l'application portable, lorsque vous appuyez sur PrtScr Dropbox vous donnera l'option de stocker automatiquement toutes les captures d'écran dans votre dossier dropbox.

5
répondu mwengler 2014-02-17 15:58:19

vous avez besoin d'un tiers écran grab utilitaire pour cette fonctionnalité dans XP. Je digère l'étendue de Scott Hanselman blogging about cool tools et habituellement regarder là pour un tel utilitaire -- bien sûr, il a blogué au sujet d'un couple ici .

2
répondu Peter Meyer 2008-10-01 15:24:08

ça ira à Delphi. Notez l'utilisation de la fonction BitBlt, qui est un appel D'API Windows, pas quelque chose de spécifique à Delphi.

Edit: Ajout d'un exemple d'utilisation de

function TForm1.GetScreenShot(OnlyActiveWindow: boolean) : TBitmap;
var
  w,h : integer;
  DC : HDC;
  hWin : Cardinal;
  r : TRect;
begin
  //take a screenshot and return it as a TBitmap.
  //if they specify "OnlyActiveWindow", then restrict the screenshot to the
  //currently focused window (same as alt-prtscrn)
  //Otherwise, get a normal screenshot (same as prtscrn)
  Result := TBitmap.Create;
  if OnlyActiveWindow then begin
    hWin := GetForegroundWindow;
    dc := GetWindowDC(hWin);
    GetWindowRect(hWin,r);
    w := r.Right - r.Left;
    h := r.Bottom - r.Top;
  end  //if active window only
  else begin
    hWin := GetDesktopWindow;
    dc := GetDC(hWin);
    w := GetDeviceCaps(DC,HORZRES);
    h := GetDeviceCaps(DC,VERTRES);
  end;  //else entire desktop

  try
    Result.Width := w;
    Result.Height := h;
    BitBlt(Result.Canvas.Handle,0,0,Result.Width,Result.Height,DC,0,0,SRCCOPY);
  finally
    ReleaseDC(hWin, DC) ;
  end;  //try-finally
end;

procedure TForm1.btnSaveScreenshotClick(Sender: TObject);
var
  bmp : TBitmap;
  savdlg : TSaveDialog;
begin
  //take a screenshot, prompt for where to save it
  savdlg := TSaveDialog.Create(Self);
  bmp := GetScreenshot(False);
  try
    if savdlg.Execute then begin
      bmp.SaveToFile(savdlg.FileName);
    end;
  finally
    FreeAndNil(bmp);
    FreeAndNil(savdlg);
  end;  //try-finally
end;
2
répondu JosephStyons 2008-10-01 16:19:48

sans installer un utilitaire d'autosave screenshot, oui vous le faites. Il existe plusieurs utilitaires que vous pouvez trouver cependant folr faire.

par exemple: http://www.screenshot-utility.com /

1
répondu mattlant 2008-10-01 15:20:16

bien sûr, vous pourriez écrire un programme qui surveille le presse-papiers et affiche un SaveAs-dialogue ennuyeux pour chaque image dans le presse-papiers; -). Je suppose que vous pouvez même découvrir si la dernière touche pressée était PrintScreen pour limiter le nombre de faux positifs.

pendant que j'y pense.. vous pouvez également google pour quelqu'un qui a déjà fait exactement cela.


modifier :.. ou tout simplement attendre que quelqu'un pour publier le code source ici - comme vient de se passer :-)

1
répondu VVS 2008-10-01 15:22:15

Snagit...beaucoup de techniciens utilisent ça.

1
répondu pearcewg 2008-10-01 15:37:06

essayez ceci: http://www.screenshot-utility.com/

de leur page d'accueil:

lorsque vous appuyez sur un hotkey, il capture et enregistre un instantané de votre écran dans un fichier JPG, GIF ou BMP.

1
répondu JosephStyons 2008-10-01 17:27:41

avant D'installer un programme de capture d'écran, que je recommande, la meilleure façon de le faire est d'utiliser la méthode de L'écran D'impression standard, puis ouvrir Microsoft Office Picture Manager et simplement coller la capture d'écran dans la zone blanche du répertoire que vous désirez. Il va créer un bitmap que vous pouvez éditer ou enregistrer-comme un format différent.

1
répondu Mike Kowalczyk 2011-06-03 13:48:57

merci à Thesoftware Jedi pour fournir des informations utiles sur l'outil de snapping dans Windows 7. Raccourci pour ouvrir l'outil Capture : Pour commencer, tapez sni Et vous trouverez le nom dans la liste "Outil Capture"

enter image description here

1
répondu Zahid Rouf 2014-04-22 03:40:57

garder Picasa en cours d'exécution dans l'arrière-plan, et il suffit de cliquer sur" Imprimer L'écran "touche

Source

1
répondu Abilash A 2015-05-30 06:25:43

autant que je sache dans XP, oui vous devez utiliser une autre application pour réellement le sauvegarder.

Vista est livré avec l'outil de découpage, qui simplifie un peu le processus!

0
répondu Mitchel Sellers 2008-10-01 15:17:49

Il s'avère que Google Picasa (gratuit) le fera pour vous maintenant. Si vous l'avez ouvert, quand vous le frappez enregistrera l'écran tourné dans un fichier et le chargera dans Picasa. Dans mon expérience, il fonctionne très bien!

0
répondu Zach 2012-12-05 22:17:16

vous pouvez vouloir quelque chose comme ceci: http://addons.mozilla.org/en-US/firefox/addon/5648

je pense qu'il y a une version pour IE et aussi avec L'intégration D'Explorateur. Assez bon logiciel.

0
répondu apandit 2013-07-25 17:11:26

est-ce possible:

  1. Appuyez Sur Alt Impr Écran
  2. ouvrir un dossier
  3. clic droit - > coller screenshot

exemple:

la fenêtre de résultat est ouverte, prenez une capture d'écran. Ouvrir C:\Benchmarks Faites un clic droit -> Coller la capture d'écran Un fichier nommé screenshot00x.jpg s'affiche, avec le texte screenshot00x sélectionné. Type Overclock5

C'est ça. Pas besoin d'ouvrir quoi que ce soit. Si vous n'écrivez rien, le nom par défaut reste.

-6
répondu Olotila 2011-10-09 18:29:06