- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当应用程序的主要 Form
- 传递给 Application.Run()
的那个 - 有
this.ShowInTaskBar = false;
然后,表示该应用程序的 Process
实例具有 0
的 MainWindowHandle
,这意味着 Process.CloseMainWindow()
不起作用。
我该如何解决这个问题?我需要通过 Process
实例彻底关闭 Form
。
最佳答案
我找到了一种替代方法,即回到 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, 0);
}
// Continue enumerating windows. There may be more instances to close.
return true;
};
EnumWindows(itemHandler, 0);
// Close self ..
}
关于c# - Form.ShowInTaskBar/Process.MainWindowHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006459/
应用程序是为 .NET 2.0 编译的(如果相关)。最初表单是使用 ShowInTaskbar=false 创建的,它不会出现在任务栏中,一切都很酷。但是,当某些操作(在表单上拖动文件并开始文件上传)
我在 WPF 中有一个模式窗口,对于此窗口,ShowInTaskbar 设置为 true,但对于此模型窗口,应用程序图标不会每次都显示在任务栏中。有时图标会出现在任务栏中,有时不会。但要求是当此模态窗
我不是要举办事件。我在问如何询问(使用 C#,而不是 WinAPI)“窗口是否已最小化?”。 WindowState 不够好。当 ShowInTaskbar="False" 时,在 Win+D 后这将
当应用程序的主要 Form - 传递给 Application.Run() 的那个 - 有 this.ShowInTaskBar = false; 然后,表示该应用程序的 Process 实例具有 0
我创建了一个具有以下属性的自定义分层 WPF 窗口: AllowsTransparency = True ShowInTaskbar = 假 背景 = 透明 最顶层 = 正确 Icon = "Icon
我们只想在任何时候运行我们应用程序的一个实例。因此在启动时它会查看应用程序是否正在运行,如果正在运行,它会在主窗口上调用 SetForegroundWindow。 这一切都很好......大部分...
我在基于 PRISM 的 WPF 应用程序中使用 AvalonDock。我的文档 Pane 能够 float (CanFloat =“true”)。但任务栏中不显示 float 窗口。有什么方法可以让
我有一个程序,我希望能够处理所有三种状态: 不显示在任务栏中,就像 Windows 声音、网络程序等小部件一样 显示在任务栏中 - 但不是最顶层。该窗口仍会显示通知区域图标,并且仍应以与 #1 相同的
在我的代码中,以下代码会使在 Windows 10 专业版上运行的应用程序崩溃。 this.ShowInTaskbar = true; 这已经在 2 台不同的机器上进行了测试。当我在 try/catc
我有一个应用程序 (mainApp) 打开模式对话框 (collector) 以询问登录详细信息。该对话框在右上角有一个取消按钮和一个标准关闭按钮,并且有 FormBorderStyle = Fixe
如果您在具有 2 个表单的全新 winform 应用程序中运行这段代码(将其放在 form1 中) private void Form1_Load(object sender, EventAr
在我的应用程序中,我有主窗体和子窗体。我想将子窗体的 ShowIntaskBar 设置为 false,但问题是当我通过菜单打开它时,它会快速出现和消失,然后当我再次打开它时,它会变得可见。所以我不想打
我正在尝试使用热键和任务栏托盘中的启动选项制作应用程序。 现在的问题是,使用 this.Hide()在加载事件中,不会有任何影响。我可以加this.ShowInTaskbar = false ,但在我
我正在使用配置为 FixedToolWindow 的 WinForm。我已将 ShowInTaskbar 设置为 False - 我正在使用 NotifyIcon 来管理窗口最小化后的恢复。 当我最小
我是一名优秀的程序员,十分优秀!