微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Form.ShowInTaskBar / Process.MainWindowHandle

一个应用程序的主Form – 一个传递给Application.Run() – 的Form

this.ShowInTaskBar = false;

那么表示该应用程序的Process一个实例的MainWindowHandle为0 ,这意味着Process.CloseMainWindow()不起作用。

我怎样才能解决这个问题? 我需要通过Process实例干净地closuresForm 。

获取应用程序的NotifyIcon矩形?

针对.NET 4.5的WPF,但在应用程序运行时要求安装.NET 3.5的窗口

Windows性能计数器从PerfMon中消失

调用“运行”命令

返回用户所属的所有Active Directory应用程序组的列表

如何测量C#中的系统空闲时间,不包括看电影等?

Windows服务无法正常工作时,exe文件转换为服务

.net框架的产品代码

如何使用ReflectionPermission来拒绝reflection

在IIS 7.5 / Windows 7家庭高级版RavendB错误

我找到了一种替代方法,通过回到Win32的东西,并使用窗口标题。 这是混乱的,但它适用于我的情况。

该示例具有关闭该应用程序的所有实例的一个应用程序实例的上下文菜单

[DllImport("user32.dll")] public static extern int EnumWindows(EnumWindowsCallback x,int y); public delegate bool EnumWindowsCallback(int hwnd,int lParam); [DllImport("user32.dll")] public static extern void GetwindowText(int h,StringBuilder s,int nMaxCount); [DllImport("user32.dll")] public static extern IntPtr PostMessage(IntPtr hWnd,int msg,int wParam,int lParam); private void ContextMenu_Quit_All(object sender,EventArgs ea) { EnumWindowsCallback itemHandler = (hwnd,lParam) => { StringBuilder sb = new StringBuilder(1024); GetwindowText(hwnd,sb,sb.Capacity); if ((sb.ToString() == MainWindow.APP_WINDOW_TITLE) && (hwnd != mainWindow.Handle.ToInt32())) // Don't close self yet { PostMessage(new IntPtr(hwnd),/*WM_CLOSE*/0x0010,0); } // Continue enumerating windows. There may be more instances to close. return true; }; EnumWindows(itemHandler,0); // Close self .. }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐