获取 WPF 应用程序的 window 句柄时出现问题
Problem getting the window handle of WPF application
我目前正在努力获取我的 WPF 应用程序的 window 句柄。
这是 App.xaml.cs:
的代码片段
_Logger.Info("Creating main window and view model.");
MainWindow mainWindow = new MainWindow();
_Logger.Info("MainWindow created");
try
{
FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
}
catch (Exception ex)
{
_Logger.Error("Could not ensure WindowHandle", ex);
}
_Logger.Info("WindowHandle created");
//...
var viewModel = new MainWindowViewModel();
mainWindow.Initialize(viewModel);
mainWindow.WindowState = WindowState.Maximized;
mainWindow.Show();
在极少数情况下,应用程序会在 try 中停止。我得到日志 "Creating main window and view model." 和 "MainWindow created",但没有别的。既不是错误,也不是 "WindowHandle created".
如前所述,这在任何其他机器上都无法重现,除非是在一位特殊客户的机器上。我该如何解决这个问题?
我需要获取 window 句柄,以创建另一个必需的 class.
提前致谢
编辑 1:
添加了最后 5 行代码。
您应该创建 WindowInteropHelper
并在引发 SourceInitialized
事件后访问句柄:
MainWindow mainWindow = new MainWindow();
EventHandler eventHandler = null;
eventHandler = (ss, ee) =>
{
mainWindow.SourceInitialized -= eventHandler;
try
{
FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
}
catch (Exception ex)
{
_Logger.Error("Could not ensure WindowHandle", ex);
}
};
mainWindow.SourceInitialized += eventHandler;
...
mainWindow.Show();
大家好,感谢您的回复。我现在发现了这个问题并想告诉你,如果其他人遇到类似的问题。
.NET Framework 未正确安装。我已经卸载并重新安装,现在一切正常。
我目前正在努力获取我的 WPF 应用程序的 window 句柄。 这是 App.xaml.cs:
的代码片段 _Logger.Info("Creating main window and view model.");
MainWindow mainWindow = new MainWindow();
_Logger.Info("MainWindow created");
try
{
FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
}
catch (Exception ex)
{
_Logger.Error("Could not ensure WindowHandle", ex);
}
_Logger.Info("WindowHandle created");
//...
var viewModel = new MainWindowViewModel();
mainWindow.Initialize(viewModel);
mainWindow.WindowState = WindowState.Maximized;
mainWindow.Show();
在极少数情况下,应用程序会在 try 中停止。我得到日志 "Creating main window and view model." 和 "MainWindow created",但没有别的。既不是错误,也不是 "WindowHandle created".
如前所述,这在任何其他机器上都无法重现,除非是在一位特殊客户的机器上。我该如何解决这个问题? 我需要获取 window 句柄,以创建另一个必需的 class.
提前致谢
编辑 1: 添加了最后 5 行代码。
您应该创建 WindowInteropHelper
并在引发 SourceInitialized
事件后访问句柄:
MainWindow mainWindow = new MainWindow();
EventHandler eventHandler = null;
eventHandler = (ss, ee) =>
{
mainWindow.SourceInitialized -= eventHandler;
try
{
FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
}
catch (Exception ex)
{
_Logger.Error("Could not ensure WindowHandle", ex);
}
};
mainWindow.SourceInitialized += eventHandler;
...
mainWindow.Show();
大家好,感谢您的回复。我现在发现了这个问题并想告诉你,如果其他人遇到类似的问题。 .NET Framework 未正确安装。我已经卸载并重新安装,现在一切正常。