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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。