2014-12-22 4 views
-2

현재 창에서 특정 부분의 스크린 샷을 찍은 다음 클립 보드에 복사하여 PPT 또는 다른 문서에 붙여 넣을 수 있습니다.이미지를 PowerShell의 클립 보드에 복사하는 방법

이미지를 성공적으로 bmp 형식으로 가져올 수 있으며이를 클립 보드에 놓을 방법을 찾을 수 없습니다.

이것은 지금까지 제 코드입니다.

[Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
function screenshot([Drawing.Rectangle]$bounds, $path) { 

    $bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height 
    $graphics = [Drawing.Graphics]::FromImage($bmp) 

    $graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size) 
    $bmp.Save($path) 

    # Create data object. 
    $dataObject = New-Object windows.forms.dataobject 

    # Add generated strings to data object. 
    $dataObject.SetData("jpg", $true, $bmp) 

    # Put data object in system clipboard. 
    [Windows.Forms.Clipboard]::SetDataObject($dataObject, $true) 
    [Windows.Forms.Clipboard]::SetText("Hello") 

} 

$bounds = [Drawing.Rectangle]::FromLTRB(0, 100, 700, 500) 
screenshot $bounds "d:\screenshot.png" 

다른 다양한 방법으로 시도했지만 해독 할 수 없었습니다.

간단한 텍스트라도 클립 보드에 복사되지 않습니다.

제발 나에게 약간의 제안.

+0

만약 내가 짐작해야만했다면, "jpg"를 BMP에 사용하는 것이 당신의 원인을 돕지 못한다. –

+0

나는 성공도없이 bmp를 사용했다. –

답변

0

좋아, 여기 있습니다. 관련 포럼 게시물과 Clipboard 메소드 목록에서 얻은 일반적인 접근 방식. 이름이 approved verbs list을 따르려고 시도합니다. 불필요한 기능으로 트리밍 된 관계없는 기능 (경로에 저장?).

[Reflection.Assembly]::LoadWithPartialName("System.Drawing") 

function Set-ClipboardFromScreenshot([Drawing.Rectangle]$Bounds) { 
    $bmp = New-Object Drawing.Bitmap $Bounds.width, $Bounds.height 
    $graphics = [Drawing.Graphics]::FromImage($bmp) 
    $graphics.CopyFromScreen($Bounds.Location, [Drawing.Point]::Empty, $Bounds.size) 
    [Windows.Forms.Clipboard]::SetImage($bmp) 
} 

Set-ClipboardFromScreenshot ([Drawing.Rectangle]::FromLTRB(0, 100, 700, 500)) 

실제 크기와 아마도 원산지를 실제 화면으로 복사하여 테스트하고 확인한 것입니다.

관련 문제