c# 窗口句柄关闭程序
时间: 2023-12-13 11:34:26 浏览: 151
以下是C#关闭窗口句柄的代码示例:
```csharp
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定要退出程序吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
else
{
// 关闭窗口句柄
while (this.Controls.Count > 0)
{
Control ct = this.Controls[0];
this.Controls.Remove(ct);
ct.Dispose();
ct = null;
}
}
}
```
在上述代码中,我们使用了FormClosing事件来处理窗口关闭的操作。在关闭窗口之前,我们弹出一个提示框,询问用户是否确定要退出程序。如果用户点击了“否”,则取消关闭操作;如果用户点击了“是”,则关闭窗口句柄,释放程序控件。
相关问题
c# 使用窗口句柄关闭程序
以下是使用窗口句柄关闭程序的C#代码示例:
```csharp
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private const int WM_CLOSE = 0x10;
public void CloseWindowByHandle(string windowName)
{
IntPtr hWnd = FindWindow(null, windowName);
if (hWnd != IntPtr.Zero)
{
SendMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
}
```
其中,FindWindow函数用于查找窗口句柄,SendMessage函数用于向窗口发送消息,WM_CLOSE是关闭窗口的消息代码。
调用CloseWindowByHandle函数并传入窗口名称即可关闭指定窗口。
c#外部句柄窗口关闭前执行事件
您可以使用Windows API函数来检测和处理外部窗口的关闭事件。以下是一个示例代码,它使用FindWindow和SendMessage函数来查找并关闭指定句柄的窗口:
```
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
const int WM_CLOSE = 0x10;
private void CloseExternalWindow(IntPtr hWnd)
{
SendMessage(hWnd, WM_CLOSE, 0, 0);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
IntPtr hWnd = FindWindow(null, "窗口标题"); // 根据窗口标题查找句柄
if (hWnd != IntPtr.Zero)
{
CloseExternalWindow(hWnd);
}
}
```
在此示例中,您可以将窗口标题替换为您要关闭的外部窗口的标题。在窗口关闭事件中,会查找指定标题的窗口句柄,并发送WM_CLOSE消息来关闭该窗口。请注意,此代码只适用于您拥有足够的权限来关闭其他程序的窗口。
阅读全文