プロセスウィンドウでスクリーンショットを撮る7 64ビット、問題は、私は常に次の行でエラーが出るということですパラメータ」、私はエラーと幅と高さは、それがうまく働いたが、今は64ビットで、それはもう動作しない32ビットで前に常に0私は、Windowsのプロセスのウィンドウにスクリーンショットを作成しようとしています
ある見るためにスローを作りました。
コード:
public void CaptureApplication()
{
string procName = "firefox";
var proc = Process.GetProcessesByName(procName)[0];
var rect = new User32.Rect();
User32.GetWindowRect(proc.MainWindowHandle, ref rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
Graphics graphics = Graphics.FromImage(bmp);
graphics.CopyFromScreen(rect.left, rect.top, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
bmp.Save("c:\\tmp\\test.png", ImageFormat.Png);
}
private class User32
{
[StructLayout(LayoutKind.Sequential)]
public struct Rect
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32.dll")]
public static extern IntPtr GetWindowRect(IntPtr hWnd, ref Rect rect);
}
がどのように私はこのエラーを修正しますか? Firefoxのプロセスを取得
おそらくプロセス名が 'firefox.exe'ですか? –
私はそれをしました、そしてそれは同じエラーです。 – Chris
'GetWindowRect'の戻り値もチェックする必要があります。' IntPtr.Zero'を返すと、そのステップで何かが間違っていました。 –