C# .net 怎样点窗口右上角“X”(叉)结束自己的程序时同时结束外部的一个程序呢?
发布网友
发布时间:2022-04-26 02:46
我来回答
共5个回答
热心网友
时间:2023-10-05 09:03
楼主是想结束外部程序,一楼答案回答的对,不过首先得获得外部程序的窗口句柄
首先在程序里定义
[DllImport("User32.dll",EntryPoint="SendMessage")]
private static extern int SendMessage( int hWnd,int Msg,int wParam,int lParam);
[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow (string lpClassName,string lpWindowName);
然后在你的窗体Closed事件里增加下边代码,把FindWindow函数里的参数换成你要关闭的程序标题
int iWin = FindWindow(null,"要关闭的程序的标题");
int WM_CLOSE = 0x10;
SendMessage(iWin, WM_CLOSE, 0, 0);
如果只知道程序名,不知道标题,那补充一个用进程的方法,例子是关闭记事本
Process [] localByName = Process.GetProcessesByName("notepad");
for(int i=0;i<localByName;i++)
localByName[i].Kill();
参照msdn:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDiagnosticsProcessMembersTopic.htm
热心网友
时间:2023-10-05 09:03
调用 API 函数 SendMessage 发送 WM_CLOSE 消息。
DllImport("User32.dll",EntryPoint="SendMessage")] private static extern int SendMessage( int hWnd,
int Msg,
int wParam,
int lParam);
const int WM_CLOSE = 0x10;
SendMessage(那个程序的窗口句柄, WM_CLOSE, 0, 0);
可以用 IntPtr 代替 int 数据类型
热心网友
时间:2023-10-05 09:04
找到外部程序的进程,直接结束
热心网友
时间:2023-10-05 09:05
Form有个Closed和Closing事件,在这两个事件下编写代码。
(一楼是VC++的代码)
热心网友
时间:2023-10-05 09:05
在Closing事件调你写的关闭代码就OK了