如何在C#中使用WM_Close?

Anu*_*uya 5 c# pinvoke

任何人都可以提供一个如何使用WM_CLOSE关闭像记事本这样的小应用程序的例子吗?

Kev*_*ose 12

如果您已有要发送的句柄.

...Some Class...
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

//I'd double check this constant, just in case
static uint WM_CLOSE = 0x10;

public void CloseWindow(IntPtr hWindow)
{
  SendMessage(hWindow, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
...Continue Class...
Run Code Online (Sandbox Code Playgroud)

掌握手柄可能很棘手.控制后代类(基本上是WinForms)有Handle,你可以使用EnumWindows枚举所有顶级窗口(这需要更高级的p/invoke,尽管只是略微).