gpt4 book ai didi

wpf - 如何获取wpf中窗口的句柄?

转载 作者:行者123 更新时间:2023-12-04 19:51:09 25 4
gpt4 key购买 nike

我有一个 WPF 项目,它被编译成一个 dll 并将被另一个应用程序调用。这就是它的设置方式。在这个 WPF 项目中,我需要从主窗口的 View 模型中弹出一个自定义的消息框,以向用户显示消息。这个定制的消息框需要一个 Window 参数。这就是来龙去脉。

对于 WPF 应用程序,Application.Current.MainWindow 会得到我需要的东西。但是这里是一个dll,所以Application.Current为null,导致运行时异常。我还尝试了类似 Window.GetWindow(this) 的方法。在这里它不起作用,因为“this”是 View 模型,所以它不会给我主窗口的句柄。

这里还有什么办法可以获取主窗口的句柄呢?

谢谢。

最佳答案

一旦你得到应用程序dll,假设你知道窗口的名字,你就可以通过反射获取并实例化它

string myWpfAssemblyPath = ""; // Enter the path to your application here
Assembly wpfAppAssembly = Assembly.Load(myWpfAssemblyPath);

var MainWindow = (Window)wpfAppAssembly.CreateInstance("myMainWindow");

请注意,这将创建一个新的窗口实例,而不是为您提供已在运行的窗口的句柄。要获取已实例化的窗口句柄,您可以使用 WIN32 API。

这里有一些链接可以帮助您做到这一点:

Get Window instance from Window Handle

Get Application's Window Handles

http://social.msdn.microsoft.com/Forums/vstudio/en-US/1d7bd916-9bbe-4c76-b9a0-8306159035a1/faq-item-how-to-retrieve-a-window-handle-in-visual-cnet

希望对你有帮助

关于wpf - 如何获取wpf中窗口的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com