/// shell
String shortcutPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), LnkName + ".lnk"); if (!System.IO.File.Exists(shortcutPath)) { string AppName = System.IO.Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().GetName().Name); // 獲取當前應用程序目錄地址 String exePath = AppDomain.CurrentDomain.BaseDirectory + AppName + ".exe"; IW.IWshShell shell = new IW.WshShell(); // 肯定是否已經建立的快捷鍵被更名了 foreach (var item in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "*.lnk")) { IW.WshShortcut tempShortcut = (IW.WshShortcut)shell.CreateShortcut(item); if (tempShortcut.TargetPath == exePath) { return; } } IW.WshShortcut shortcut = (IW.WshShortcut)shell.CreateShortcut(shortcutPath); shortcut.TargetPath = exePath; shortcut.Arguments = "";// 參數 shortcut.Description = AppName + exePath; shortcut.WorkingDirectory = Environment.CurrentDirectory;//程序所在文件夾,在快捷方式圖標點擊右鍵能夠看到此屬性 shortcut.IconLocation = exePath;//圖標,該圖標是應用程序的資源文件 //shortcut.Hotkey = "CTRL+SHIFT+W";//熱鍵,發現沒做用,大概須要註冊一下 shortcut.WindowStyle = 1; shortcut.Save(); MessageBox.Show("桌面快捷方式已建立!"); } }
----分界線----
public partial class App : Application
{
public App()
{
//UI線程異常
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
//非UI線程異常
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;this
} private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { //能夠記錄日誌並轉向錯誤bug窗口友好提示用戶 e.Handled = true; try { PLogs.Error(e.Exception.StackTrace.ToString(), e.Exception.Message); } catch (Exception) { } MessageBox.Show("抱歉給您帶來不便!消息:" + e.Exception.Message, "系統錯誤",MessageBoxButton.OK,MessageBoxImage.Error); } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { //能夠記錄日誌並轉向錯誤bug窗口友好提示用戶 if (e.ExceptionObject is System.Exception) { Exception ex = (System.Exception)e.ExceptionObject; try { PLogs.Error(ex.StackTrace.ToString(), ex.Message); } catch (Exception) { } MessageBox.Show("抱歉給您帶來不便!消息:" + ex.Message, "系統錯誤", MessageBoxButton.OK, MessageBoxImage.Error); } } } class PLogs { /// <summary> /// 普通日誌 /// </summary> /// <param name="className">類名</param> /// <param name="info">日誌記錄</param> public static void Info(string className, string info) { WriteLog("INFO", className, info); } /// <summary> /// 警告日誌 /// </summary> /// <param name="className">類名</param> /// <param name="info">日誌記錄</param> public static void Warn(string className, string info) { WriteLog("WARN", className, info); } /// <summary> /// 錯誤日誌 /// </summary> /// <param name="className">類名</param> /// <param name="info">日誌記錄</param> public static void Error(string className, string info) { WriteLog("ERROE", className, info); } /// <summary> /// 寫入日誌 /// </summary> /// <param name="className">類名</param> /// <param name="infoLevel">日誌級別</param> /// <param name="info">日誌記錄</param> private static void WriteLog(string className, string infoLevel, string info) { string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "/logs"; if (!Directory.Exists(logFilePath)) { Directory.CreateDirectory(logFilePath); } string logFileName = logFilePath + "/" + "log_" + DateTime.Now.ToString("yyyyMMdd") + ".log"; if (!File.Exists(logFileName)) { File.Create(logFileName).Close(); } string logFormat = string.Format("[ {0} ] {1} {2} {3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), className, infoLevel, info); StreamWriter sw = File.AppendText(logFileName); sw.WriteLine(logFormat); sw.Flush(); sw.Close(); } }