1

だから私はPowerShellでUIテストを実行しています。

エラーが発生した場合、つまりウィンドウだけのスクリーンショットを撮りたいのですが、これはaltprintscrnで実行できます。

%{prtsc}

ただし、アクティブなウィンドウのjpgのみを取得します。

これを試してみました
$h=(Get-Process iexplore).MainWindowHandle SetForegroundWindow((Get-Process -name iexplore).MainWindowHandle)sleep -sec 2 $ h =(Get-Process -id $ pid).MainWindowHandle

また、エラーを特定する方法についてのヘルプもありがたいです。

function screenshot
{
    param(    
    [Switch]$OfWindow        
    )
    begin {
        Add-Type -AssemblyName System.Drawing
        $jpegCodec = [Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | 
            Where-Object { $_.FormatDescription -eq "JPEG" }
    }
    process {
        Start-Sleep -Milliseconds 250
        if ($OfWindow) { 
        [Windows.Forms.Sendkeys]::SendWait("%{PrtSc}")        
        } else {
            [Windows.Forms.Sendkeys]::SendWait("{PrtSc}")        
        }

        Start-Sleep -Milliseconds 250
        $bitmap = [Windows.Forms.Clipboard]::GetImage()    
        $ep = New-Object Drawing.Imaging.EncoderParameters  
        $ep.Param[0] = New-Object Drawing.Imaging.EncoderParameter ([System.Drawing.Imaging.Encoder]::Quality, [long]100)  
        $screenCapturePathBase = "$pwd\ScreenCapture"
        $c = 0
        while (Test-Path "${screenCapturePathBase}${c}.jpg") {
            $c++}

        $bitmap.Save("${screenCapturePathBase}${c}.jpg", $jpegCodec, $ep)
    }
}
4

2 に答える 2

2

%なしで画面全体をキャプチャするように注意しますか?

Add-Type -Assembly System.Windows.Forms
Start-Sleep -seconds 1

## Capture the entire screen 
[System.Windows.Forms.Sendkeys]::SendWait("{PrtSc}") 

## Capture the current window 
[System.Windows.Forms.Sendkeys]::SendWait("%{PrtSc}")
于 2011-07-17T09:37:23.593 に答える
2

アクティブウィンドウの設定

別の方法で行う必要があることがいくつかあります。まず、アクティブウィンドウを次のように設定する必要があります。

Powershellイベントサブスクライバーアクションからフォアグラウンドウィンドウを設定する方法

適切なウィンドウを取得する

次に、IEが少なくとも2つのプロセスを生成するという事実に対処する必要があります。したがって、適切なウィンドウを取得する必要があります。

$h = Get-Process | Where-Object {$_.MainWindowTitle -like "My website*"} | Select-Object -ExpandProperty MainWindowHandle

スクリーンショットを撮る

これで、2つの方法のいずれかでスクリーンショットを撮ることができます。

  1. JPBlancが示したようにPrtScを送信します。

    Add-Type -Assembly System.Windows.Forms
    Start-Sleep -seconds 1
    
    ## Capture the current window 
    [System.Windows.Forms.Sendkeys]::SendWait("%{PrtSc}")
    
  2. 撮影-PoschCodeのスクリーンショットスクリプト

于 2011-08-18T16:16:57.657 に答える