[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
foreach (Process pr in Process.GetProcesses())
{
RECT rc;
GetWindowRect(???, out rc);
"???"にはどうすればよいですか? 。それはHandleRefオブジェクトを置く必要があると私に伝えますが、ProcessメソッドからHandleRefオブジェクトを取得する方法はわかりません。C# - user32.dll - GetWindowRectの問題
あなたがステップをスキップしました。最初にウィンドウからネイティブハンドルを取得する必要があります。たとえば、ウィンドウがアプリケーション内のC#メインフォーム(WinFormsアプリケーションを前提としている)であれば、新しい 'HandleRef(this、this.Handle); 'を使用します;まず、問題のウィンドウへのハンドルを取得する必要があります.Handleはそうでない可能性が高い)。 –