LunarMind/App.xaml.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Windows.Threading;
namespace SHomeWorkshop.LunarMind
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
/// <summary>
/// 这个事件用于处理 WPF 4.0版在对剪贴板操作时存在的 Bug。
/// 当剪贴板被其它程序占用(监视)时,WPF 4.0 就会出现异常。微软在.net 4.5中修正了这个问题。
/// 但为了 Windows XP 中也能使用本程序,我只能将.net 版本锁定在 4.0——这是WinXP最后能支持一个.net 版本。
///
/// 事实上,这个办法的原理是反复尝试向剪贴板进行操作,仍然可能造成UI假死,并不是个完美的解决方案。
/// 另,有人实测使用Clipboard.SetData()方法取代Clipboard.SetText()方法比较好用。
/// 这个还需要进一步测试。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
var comException = e.Exception as System.Runtime.InteropServices.COMException;
if (comException != null && comException.ErrorCode == -2147221040)///OpenClipboard HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN))
e.Handled = true;
}
void App_Startup(object sender, StartupEventArgs e)
{
// 解决Win10下菜单面板向左打开的问题。
var ifLeft = SystemParameters.MenuDropAlignment;
if (ifLeft)
{
var t = typeof(SystemParameters);
var field = t.GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
field.SetValue(null, false);
}
// 取命令行参数。
if (e.Args.Length > 0)
{
Globals.cmdParameterString = e.Args[0];
}
Application.Current.SessionEnding += new SessionEndingCancelEventHandler(Current_SessionEnding);
}
/// <summary>
/// 此事件用以在“文档被修改且未保存的情况下,直接关闭Windows时让用户有机会保存文件”。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
后面还有 13 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。