调用pinvoke函数的屏幕截图!这可能是因为托管PinVoke签名与非托管目标签名不符。检查PINVOKE签名的调用约定和参数是否与目标不受管理的签名匹配。
我如何修复此操作,以便可以获取另一个应用程序窗口的屏幕截图?
在
pinvoke.net(很棒的参考)上,签名应为:
GetWindowRect
可能也可以做到这一点,这不需要您定义自定义
如果这不起作用,则可以基于thispage来定义
public static extern bool GetWindowRect(IntPtr hwnd, out Rectangle lpRect);
struct,并使用:
RECT
pinvoke.net页面上的
public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect);
显示了如何在
RECT
和
RECT
之间转换。
您的声明缺少“ OUT”,并且使用错误的矩形类型,应如下:
Rectangle
您称其为:
private static extern bool GetWindowRect(IntPtr hWnd, out RECT rect);
矩形还需要是Winapi矩形,而不是.NET类。有关其定义,请参见
here。惯例是称其为矩形而不是矩形。