Windows에서 스크린 샷을 파일에 직접 저장하려면 어떻게해야합니까? [닫은]


115

Windows XP에서는 Alt-PrintScreen을 눌러 활성 창의 이미지를 복사하거나 Ctrl-PrintScreen을 눌러 전체 데스크톱의 이미지를 복사 할 수 있습니다.

그런 다음 Photoshop, Microsoft Word 등 이미지를 허용하는 응용 프로그램에 붙여 넣을 수 있습니다.

궁금한 점이 있습니다. 스크린 샷을 파일에 직접 저장하는 방법이 있습니까? 내가 정말 Paint.net 또는 포토샵과 같은 이미지 프로그램을 열 필요가, 단순히 이미지를 붙여, 다음 저장?


14
포토샵 ?? mspaint 또는 paint.net을 사용하지 않는 이유는 무엇입니까? 포토샵처럼 무거운 것을 사용하는 이유는 무엇입니까 ??
GEOCHET

1
여기에 가장 좋은 것은 HTML 메일에 직접 붙여 넣은 일부 오류 메시지의 스크린 샷이있는 단어의 스크린 샷이었습니다.
VVS

1
내 대답에서 봐 주시기 바랍니다, 맥으로이어야 쉽게 그것을 할 FINALLY 수 있습니다 (더 나은 여전히 흐름 리눅스하지만)
KARTHIK T

1
수퍼 유저로 이동하도록 플래그가 지정되었습니다. 받아 들여진 대답은 결국 프로그래밍 방식으로 작성되었지만이 질문은 일반적인 컴퓨터 사용 대답을 찾고 있었으므로 SuperUser에 속합니다.
ArtOfWarfare 2014-08-26

1
안녕하세요, 아마도 답변에 조금 늦었지만 비슷한 문제를 가진 다른 사람들에게 도움이 될 수 있습니다. Windows 스토어에는 클립 보드의 스크린 샷 이미지를 디스크의 임시 이미지로 저장하고 파일 경로를 반환 할 수있는 응용 프로그램이 있습니다. 따라서 모든 응용 프로그램 ( microsoft. com / store / apps / 9PM34S06CFVJ ). 스크린 샷을 파일에 저장하기 위해 더 이상 다른 소프트웨어를 열 필요가 없습니다.
Giovanni Esposito

답변:


50

PrintScreen을 연결하고 캡처를 파일에 저장하는 매우 간단한 코드를 작성할 수 있습니다.

다음은 캡처를 시작하고 파일에 저장하는 것입니다. "화면 인쇄"키를 연결하기 만하면됩니다.

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);
}

업데이트 다음은 C #에서 PrintScreen (및 기타 키)을 연결하는 코드입니다.

후크 코드


멋진 코드 스 니펫. 물론 이미지를 GIF 대신 JPEG 또는 PNG로 저장하는 것을 고려해야합니다.
VVS

ImageFormat 형식 = ImageFormat.Gif; ImageFormat format = ImageFormat.PNG를 설정할 수 있습니다. 또는 ImageFormat 형식 = ImageFormat.JPG; 모든 것이 여기 있습니다
Patrick Desjardins

4
좋아요, 그 스 니펫으로 무엇을해야합니까? 실행하고 스크린 샷을 원할 때마다 인쇄 화면을 누르십시오. 아니면 한 번만? 그것을 컴파일하는 것 외에는?
제이미 Hablutzel

3
바이너리가 있습니까?
Timofey Trofimov

2
나는 이것이 "매우 간단"하다고 생각하지 않는다 ..
hejdav

153

Windows 8 이전에 타사 도구없이 파일에 직접 저장할 수있는 방법은 없습니다. 여기 제가 개인적으로 선호하는 타사 도구 솔루션이 있습니다.

Windows 8 이상

Windows Key+ PrintScreen 스크린 샷을 폴더에 저장합니다.<user>/Pictures/Screenshots

Windows 7의 경우

Win 7에서는 캡처 도구를 사용하면됩니다. 시작을 누른 다음 "sni"(엔터)를 입력하면 가장 쉽게 액세스 할 수 있습니다. 또는 Windows Key다음sni enter

이전 버전의 Windows

다음 키보드 조합을 사용하여 캡처 한 다음 mspaint를 사용하여 저장합니다. 몇 번 수행하면 2-3 초 밖에 걸리지 않습니다.

  1. Alt+PrintScreen
  2. Win+ R( "실행")
  3. "mspaint"를 입력합니다. enter
  4. Ctrl- V(붙여 넣기)
  5. Ctrl- S(저장)
  6. 파일 대화 상자 사용
  7. Alt- F4(mspaint 닫기)

또한 Cropper 는 훌륭합니다 (및 오픈 소스). 파일이나 클립 보드에 사각형 캡처를 수행하며 물론 무료입니다.


2
실제로 이것은 놀랍도록 빠르고 쉽습니다. 또한 일련의 사진을 찍는 경우 그림판을 열어두고 Ctrl-N을 사용하여 그림판 영역을 계속 재설정하고 Ctrl-S를 사용하여 저장할 수 있습니다 (다른 이름으로 저장할 필요 없음). 그림판을 열어 두는 또 다른 이점은 저장할 파일 형식 (예 : PNG)을 기억한다는 것입니다.
Neil Mayhew

1
@Neil 감사합니다. Ctrl-S와 새로운 win 7 기능으로이 답변을 업데이트했습니다.
TheSoftwareJedi 2010-08-06

1
Windows 키 + "sni"FTW!
제이슨

영어 로케일에서만 작동합니다. 폴란드어 도구가 유비 Narzędzie Wycinanie와 작품 이름 : Win다음 w, y, enter.
maciek 2015

잠금 화면에서 작동하지 않으므로 멋진 창 배경을 캡처하는 데 좋지 않습니다. 잠금 화면을 포함하여 언제든지 스크린 샷을 캡처 할 수있는 Android와는 매우 다릅니다.
Triynko

17

거의 알려지지 않은 사실 : 대부분의 표준 Windows (XP) 대화 상자에서 Ctrl + C를 눌러 대화 상자 내용의 텍스트 복사본을 만들 수 있습니다.
예 : 메모장에서 파일을 열고 스페이스 키를 누르고 창을 닫고 종료 확인 대화 상자에서 Ctrl + C를 누르고 취소하고 대화 상자의 텍스트를 메모장에 붙여 넣습니다.
귀하의 직접적인 질문과 관련이 없지만이 스레드에서 언급하는 것이 좋을 것입니다.

게다가 스크린 샷을 찍으려면 타사 소프트웨어가 필요하지만 큰 Photoshop을 실행할 필요는 없습니다. IrfanWiew 또는 XnView와 같은 자유롭고 가벼운 것이 작업을 수행 할 수 있습니다. MWSnap을 사용하여 화면의 임의의 부분을 복사합니다. 스크린 샷을 만들기 위해 GDI + 함수를 호출하는 약간의 AutoHotkey 스크립트를 작성했습니다. 기타.


지금 방금 찾았습니다. 팁 주셔서 감사합니다.
TankorSmash

좋은 팁. 가끔 복사 할 텍스트를 선택할 수없는 오류 메시지 대화 상자에 실망합니다. 이 팁으로 많은 사람들이 그렇게합니다! 여기 브라우저에서 시도해보세요 : jsfiddle.net/liamhennessy/cs3jsj6p
Liam

15

모든 소스 코드와 의견에 감사드립니다. 덕분에 드디어 원하는 앱이 생겼습니다. :)

몇 가지 예제를 컴파일했으며 소스와 실행 파일 모두 여기에서 찾을 수 있습니다.

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

InterceptCaptureScreen.exe를 사용합니다. 명령 프롬프트 터미널에서 실행 한 다음 스크린 샷 (실행 파일이있는 동일한 디렉토리에있는 타임 스탬프 파일 이름, png)을 캡처하려면 삽입을 누르기 만하면됩니다. 단말기에 초점이 맞지 않아도 키가 캡처됩니다.

(내 랩톱에서는 Fn 키를 눌러야하고 VNC를 통해 전파되지 않는 PrintScreen보다 VNC와 같은 VNC를 통해 전파하는 데 더 쉬운 시간이 있어야하므로 Insert 키를 사용합니다. 물론 변경하기 쉽습니다. 소스 코드에 사용 된 실제 키입니다).

도움이 되었기를 바랍니다. 건배!


1
이 프로그램은 완벽하게 작동합니다. 매우 간단하고 필요한 작업을 수행합니다.
golmschenk 2013 년

2
Windows 7에서도 작동합니다. 전체 화면 게임에서 스크린 샷을 사용하려면 다음 단계 를 따라야했습니다 .
metasequoia

데드 URL. (거의 10 년이 지나도 놀라운 일이 아닙니다.)
Camille Goudeseune

11

나는 아주 오래된 게시물을 깨달았지만 마침내 창문은 그 과정이 얼마나 미친 지 깨달았습니다.

Windows 8.1에서 (확인되었지만 Windows 7에서 작동하지 않음 (tnx @bobobobo))

windows key+ prnt screen스크린 샷을 폴더에 저장합니다.<user>/Pictures/Screenshots

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


7에서는 작동하지 않습니다. 방금 시도했습니다.
bobobobo

@bobobobo 아 감사합니다, 아마도> = windows 8입니다.
Karthik T

Windows 10에서도 작동합니다. 감사합니다 KarthikT
Usman Hayat Khan

6

WinSnap http://www.ntwind.com/software/winsnap/download-free-version.html을 제안 할 있습니다. 자동 저장 옵션을 제공하고 화면, 창, 대화 상자 등을 캡처하기 위해 alt + printscreen 및 기타 키 조합을 캡처합니다.


1
설정을 확인하여 원하는 방식으로 정확하게 설정하십시오.
Daniel X Moore

감사합니다. Alt + Printscreen을 수행하고 스크린 샷을 바탕 화면에 자동으로 저장할 수있는 앱을 찾고있었습니다. 이것은 완벽하게 작동합니다.
Brett

무료 버전은 워터 마크를 추가하고 30 일 후에 만료됩니다. Meh.
Camille Goudeseune 19.04.04

5

Dropbox는 이제이를 자동으로 수행 할 수있는 후크를 제공합니다. 무료 보관 용 계정을 받고 노트북 앱을 설치 한 경우 PrtScr을 누르면 Dropbox에서 모든 스크린 샷을 보관 용 폴더에 자동으로 저장할 수있는 옵션이 제공됩니다.


이것은 실제로 효과가 있었고 화면을 캡처하고 저장하는 가장 빠른 방법이라고 생각합니다. 내 질문이라면 수락으로 표시하겠습니다.
Muhammad Raheel

2

XP에서 해당 기능을 사용하려면 타사 화면 캡처 유틸리티가 필요합니다. 나는 멋진 도구에 대한 Scott Hanselman의 광범위한 블로그를 파헤 치고 보통 거기에서 그러한 유틸리티를 찾습니다. 물론 그는 여기 에서 몇 가지에 대해 블로그를 작성했습니다 .


2

이것은 Delphi에서 할 것입니다. Delphi와 관련된 것이 아니라 Windows API 호출 인 BitBlt 함수의 사용에 유의하십시오.

편집 : 예제 사용 추가

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;


1

스크린 샷 자동 저장 유틸리티를 설치하지 않아도 가능합니다. 이 작업을 수행하는 동안 찾을 수있는 몇 가지 유틸리티가 있습니다.

예 : http://www.screenshot-utility.com/


아, 너무 안타깝 네요. 오래 되었네요. 2001 년에 마지막으로 업데이트되었습니다.
isaaclw 2013

1

물론 클립 보드를 모니터링하고 클립 보드의 모든 이미지에 대해 성가신 SaveAs 대화 상자를 표시하는 프로그램을 작성할 수 있습니다 ;-). 마지막으로 누른 키가 PrintScreen인지 확인하여 오탐 수를 제한 할 수도 있습니다.

내가 그것에 대해 생각하는 동안 .. 당신은 또한 이미 정확히 그것을 한 사람을 위해 구글을 할 수 있습니다.


편집 : .. 또는 누군가가 여기에 소스를 게시하기를 기다리십시오-그냥 일어난 것처럼 :-)


1

Snagit ... 많은 기술자들이 그것을 사용합니다.


스크린 샷 만 찍기 만하면 도구 비용을 지불해야하는 이유는 무엇입니까?
Dane411 2012

1

권장하는 화면 캡처 프로그램을 설치하는 것보다 더 좋은 방법은 표준 화면 인쇄 방법을 사용한 다음 Microsoft Office Picture Manager를 열고 원하는 디렉터리의 흰색 영역에 스크린 샷을 붙여 넣는 것입니다. 편집하거나 다른 형식으로 저장할 수있는 비트 맵이 생성됩니다.


이것이 작동 할 수도 있지만 질문자는이를 프로그래밍 방식으로 수행 할 방법을 요청할 가능성이 높습니다.
Peter O.

1

Windows 7에서 스냅 도구에 대한 유용한 정보를 제공 한 TheSoftwareJedi에게 감사드립니다. 캡처 도구를 여는 바로 가기 : 시작으로 이동하여 sni를 입력하면 "Snipping Tool"목록에서 이름을 찾을 수 있습니다.

여기에 이미지 설명 입력


1

Picasa를 백그라운드에서 계속 실행하고 "Print Screen"키를 클릭하기 만하면됩니다.

출처


0

XP에서 내가 아는 한, 예, 실제로 저장하려면 다른 앱을 사용해야합니다.

Vista에는 프로세스를 약간 단순화하는 Snipping 도구가 함께 제공됩니다!


0

Google Picasa (무료)가 이제이 작업을 수행합니다. 열려있는 경우 누르면 스크린 샷이 파일에 저장되고 Picasa에로드됩니다. 내 경험상 훌륭하게 작동합니다!



-6

이게 가능해:

  1. Alt PrintScreen 누르기
  2. 폴더 열기
  3. 마우스 오른쪽 버튼 클릭-> 스크린 샷 붙여 넣기

예:

벤치 마크 결과 창이 열리면 스크린 샷을 찍습니다. C : \ Benchmarks 열기 오른쪽 클릭-> 스크린 샷 붙여 넣기 screenshot00x.jpg라는 파일이 나타나고 텍스트 screenshot00x가 선택됩니다. 유형 Overclock5

그게 다야. 아무것도 열 필요가 없습니다. 아무것도 쓰지 않으면 기본 이름이 그대로 유지됩니다.


"스크린 샷 붙여 넣기"메뉴 항목이있는 Windows 버전은 무엇입니까? (그리고 이미지 유형의 클립 보드 콘텐츠를 사용하면 win7에서 붙여 넣기가 활성화되지 않습니다).
eckes 2010 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.