相关疑难解决方法(0)

创建单实例WPF应用程序的正确方法是什么?

在.NET(而不是Windows窗体或控制台)下使用C#和WPF ,创建只能作为单个实例运行的应用程序的正确方法是什么?

我知道这与一些叫做互斥的神秘事物有关,我很少能找到一个不愿意停下来解释其中一个是什么的人.

代码还需要通知已经运行的实例用户尝试启动第二个,并且如果存在任何命令行参数,也可以传递.

.net c# wpf mutex

631
推荐指数
16
解决办法
19万
查看次数

21
推荐指数
4
解决办法
1万
查看次数

禁用WPF窗口焦点

我有一个WPF窗口,只有当您通过Visibility.Hidden和Visibility.Visible按住Tab键时才会显示.但是,按住该键可将焦点从活动应用程序转移到WPF窗口.我可以禁用此行为吗?更进一步:是否有可能完全阻止窗口即使在单击控件时聚焦,但仍然注册控件的单击操作?

c# wpf focus

19
推荐指数
4
解决办法
1万
查看次数

在整个应用程序中捕获按键

有可能,捕获(我想在app.xaml.cs的某个地方)任何键,如果按下打开的窗口?

感谢帮助!

c# wpf keypress

6
推荐指数
2
解决办法
7037
查看次数

如何从不同的进程关闭窗口

我有一个ac#应用程序,我想指示从一个不同的进程很好地关闭.我也希望能够让它打开它的主窗口.我有一个对它的主窗口句柄的引用.

我知道我可以使用精心设计的方案,如远程处理或WCF.问题是我可以使用更简单的机制(如窗口消息)或c#应用程序中窗口的OnClose事件处理程序来实现

c# windows wpf windowing

5
推荐指数
1
解决办法
4151
查看次数

WPF:如何区分Window.Close()调用和系统菜单关闭操作?

可能重复:
如何在关闭处理程序中区分"窗口关闭按钮单击(X)"与window.Close()

在WPF中,以下是关闭a的不同方法Window:

1)Window.Close()
2)从Window系统菜单中选择'Close'(左上)
3)单击Window标题栏上的'X'按钮(右上角)
4)键盘快捷键:Alt + F4

所有这些操作都会触发WPF事件 Window.Closing

我如何区分这两种类型的行为?

在Excel/VBA中,这是可能的:VBA.VbQueryClose.vbFormCodevs VBA.VbQueryClose.vbFormControlMenu.

这个相关的问题/答案说系统菜单操作将生成Windows事件WM_CLOSE.也许有一种方法可以从WPF中查看基础Windows事件.

.net c# wpf xaml

4
推荐指数
1
解决办法
2963
查看次数

在C#中显示另一个应用程序的WPF窗口

我有一个名为app1的WPF应用程序,它有一个名为window1的窗口.当用户单击关闭按钮时window1,应用程序不会关闭,但window1会隐藏(this.hide()).

我想在启动时检查应用程序的另一个实例是否已在运行; 如果是这样,我想显示已经运行的实例并终止新实例.

我怎样才能做到这一点?

我知道如何检查进程以及如何关闭当前应用程序,但我不知道如何显示正在运行的另一个WPF进程的窗口...

在我的App启动活动中,我这样做:

private void Application_Startup(object sender, StartupEventArgs e)
{
    if(Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Count() > 1)
    {
        Application.Current.Shutdown(0);
    }
}  
Run Code Online (Sandbox Code Playgroud)

c# wpf winapi window process

3
推荐指数
1
解决办法
3235
查看次数

如何在.Net 6中处理Win32 WndProc消息?

我使用 .Net 6 和PInvoke nuget 包来访问 Win32 API,并通过以下方式创建 Win32 窗口:

  IntPtr windowHandle = User32.CreateWindowEx(User32.WindowStylesEx.WS_EX_TOOLWINDOW,
                               "static",
                               "Window Title",
                               User32.WindowStyles.WS_OVERLAPPEDWINDOW |
                               User32.WindowStyles.WS_VISIBLE,
                               0,
                               0,
                               800,
                               800,
                               IntPtr.Zero,
                               IntPtr.Zero,
                               IntPtr.Zero,
                               IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)

当窗口在屏幕上可见时,我的情况与此人相同窗口呈现良好,但对用户没有响应。当我将鼠标悬停在窗口上时,鼠标指针变为加载圆圈。

我认为无响应是由于窗口事件和消息未得到处理。我想以某种方式覆盖或挂钩 Win32 窗口的 WndProc 方法来处理消息,因为显然User32.GetMessage() 不会返回所有消息。

在 WPF 中,您可以向 HwndHost 添加一个挂钩来处理 WndProc 消息。如何在不使用 WPF 的情况下获取 .Net 6 中的 WndProc 消息?

c# winapi wndproc .net-6.0

0
推荐指数
1
解决办法
1076
查看次数

标签 统计

c# ×8

wpf ×7

.net ×2

winapi ×2

window ×2

xaml ×2

.net-6.0 ×1

focus ×1

keypress ×1

mutex ×1

process ×1

resize ×1

windowing ×1

windows ×1

wndproc ×1