///
/// 創建桌面圖標
///
public static void CreateShortcutOnDesktop(string LnkName)
{
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;
}
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();
}
}