mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-06-11 15:04:54 +12:00
[Feature] Refactor GetDefaultBrowserPath, ProcessStart (#169), version 1.0.17.31
This commit is contained in:
parent
7301b61a42
commit
c12ed3fc4e
|
@ -587,7 +587,7 @@ namespace SystemTrayMenu.Business
|
||||||
|
|
||||||
private static void OpenFolder()
|
private static void OpenFolder()
|
||||||
{
|
{
|
||||||
Log.ProcessStart(Config.Path, null, true);
|
Log.ProcessStart(Config.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Menu Create(MenuData menuData, string title = null)
|
private Menu Create(MenuData menuData, string title = null)
|
||||||
|
|
|
@ -112,8 +112,7 @@ namespace SystemTrayMenu
|
||||||
|
|
||||||
internal static void ShowHelpFAQ()
|
internal static void ShowHelpFAQ()
|
||||||
{
|
{
|
||||||
string browserPath = FileUrl.GetDefaultBrowserPath();
|
if (FileUrl.GetDefaultBrowserPath(out string browserPath))
|
||||||
if (!string.IsNullOrEmpty(browserPath))
|
|
||||||
{
|
{
|
||||||
Process.Start(browserPath, "https://github.com/Hofknecht/SystemTrayMenu#FAQ");
|
Process.Start(browserPath, "https://github.com/Hofknecht/SystemTrayMenu#FAQ");
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,7 +225,7 @@ namespace SystemTrayMenu.DataClasses
|
||||||
if (ContainsMenu &&
|
if (ContainsMenu &&
|
||||||
(e == null || e.Button == MouseButtons.Left))
|
(e == null || e.Button == MouseButtons.Left))
|
||||||
{
|
{
|
||||||
Log.ProcessStart(TargetFilePath, null, true);
|
Log.ProcessStart(TargetFilePath);
|
||||||
if (!Properties.Settings.Default.StaysOpenWhenItemClicked)
|
if (!Properties.Settings.Default.StaysOpenWhenItemClicked)
|
||||||
{
|
{
|
||||||
toCloseByDoubleClick = true;
|
toCloseByDoubleClick = true;
|
||||||
|
@ -251,30 +251,10 @@ namespace SystemTrayMenu.DataClasses
|
||||||
if (!ContainsMenu &&
|
if (!ContainsMenu &&
|
||||||
(e == null || e.Button == MouseButtons.Left))
|
(e == null || e.Button == MouseButtons.Left))
|
||||||
{
|
{
|
||||||
try
|
Log.ProcessStart(TargetFilePathOrig, arguments, true, workingDirectory, true);
|
||||||
|
if (!Properties.Settings.Default.StaysOpenWhenItemClicked)
|
||||||
{
|
{
|
||||||
using Process p = new Process
|
toCloseByOpenItem = true;
|
||||||
{
|
|
||||||
StartInfo = new ProcessStartInfo(TargetFilePath)
|
|
||||||
{
|
|
||||||
FileName = TargetFilePathOrig,
|
|
||||||
Arguments = arguments,
|
|
||||||
WorkingDirectory = workingDirectory,
|
|
||||||
CreateNoWindow = true,
|
|
||||||
UseShellExecute = true,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
p.Start();
|
|
||||||
|
|
||||||
if (!Properties.Settings.Default.StaysOpenWhenItemClicked)
|
|
||||||
{
|
|
||||||
toCloseByOpenItem = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Win32Exception ex)
|
|
||||||
{
|
|
||||||
Log.Warn($"path:'{TargetFilePath}'", ex);
|
|
||||||
MessageBox.Show(ex.Message);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,13 +332,7 @@ namespace SystemTrayMenu.DataClasses
|
||||||
iconFile = file.Value("IconFile", string.Empty);
|
iconFile = file.Value("IconFile", string.Empty);
|
||||||
if (string.IsNullOrEmpty(iconFile))
|
if (string.IsNullOrEmpty(iconFile))
|
||||||
{
|
{
|
||||||
string browserPath = FileUrl.GetDefaultBrowserPath();
|
if (FileUrl.GetDefaultBrowserPath(out string browserPath))
|
||||||
if (string.IsNullOrEmpty(browserPath))
|
|
||||||
{
|
|
||||||
Log.Info($"Resolve *.URL '{TargetFilePath}'" +
|
|
||||||
$"No default browser found!");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
icon = IconReader.GetFileIconWithCache(browserPath, true, out bool toDispose);
|
icon = IconReader.GetFileIconWithCache(browserPath, true, out bool toDispose);
|
||||||
diposeIcon = toDispose;
|
diposeIcon = toDispose;
|
||||||
|
|
|
@ -58,6 +58,38 @@ namespace SystemTrayMenu.Utilities
|
||||||
!path.Substring(2).Contains(@"\", StringComparison.InvariantCulture);
|
!path.Substring(2).Contains(@"\", StringComparison.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsNetworkPath(string path)
|
||||||
|
{
|
||||||
|
return path.StartsWith(@"\\", StringComparison.InvariantCulture) &&
|
||||||
|
!path.StartsWith(@"\\?\", StringComparison.InvariantCulture);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool PingHost(string nameOrAddress)
|
||||||
|
{
|
||||||
|
bool pingable = false;
|
||||||
|
Ping pinger = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pinger = new Ping();
|
||||||
|
PingReply reply = pinger.Send(nameOrAddress);
|
||||||
|
pingable = reply.Status == IPStatus.Success;
|
||||||
|
}
|
||||||
|
catch (PingException ex)
|
||||||
|
{
|
||||||
|
Log.Warn($"Ping {nameOrAddress} failed", ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (pinger != null)
|
||||||
|
{
|
||||||
|
pinger.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pingable;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetShortcutFileNamePath(object shortcutFilename)
|
private static string GetShortcutFileNamePath(object shortcutFilename)
|
||||||
{
|
{
|
||||||
string resolvedFilename = string.Empty;
|
string resolvedFilename = string.Empty;
|
||||||
|
@ -97,37 +129,5 @@ namespace SystemTrayMenu.Utilities
|
||||||
|
|
||||||
return resolvedFilename;
|
return resolvedFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsNetworkPath(string path)
|
|
||||||
{
|
|
||||||
return path.StartsWith(@"\\", StringComparison.InvariantCulture) &&
|
|
||||||
!path.StartsWith(@"\\?\", StringComparison.InvariantCulture);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool PingHost(string nameOrAddress)
|
|
||||||
{
|
|
||||||
bool pingable = false;
|
|
||||||
Ping pinger = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pinger = new Ping();
|
|
||||||
PingReply reply = pinger.Send(nameOrAddress);
|
|
||||||
pingable = reply.Status == IPStatus.Success;
|
|
||||||
}
|
|
||||||
catch (PingException ex)
|
|
||||||
{
|
|
||||||
Log.Warn($"Ping {nameOrAddress} failed", ex);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (pinger != null)
|
|
||||||
{
|
|
||||||
pinger.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pingable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,13 +10,14 @@ namespace SystemTrayMenu.Utilities
|
||||||
{
|
{
|
||||||
private static string browserPath = string.Empty;
|
private static string browserPath = string.Empty;
|
||||||
|
|
||||||
public static string GetDefaultBrowserPath()
|
public static bool GetDefaultBrowserPath(out string browserPath)
|
||||||
{
|
{
|
||||||
|
bool valid = true;
|
||||||
string urlAssociation = @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http";
|
string urlAssociation = @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http";
|
||||||
string browserPathKey = @"$BROWSER$\shell\open\command";
|
string browserPathKey = @"$BROWSER$\shell\open\command";
|
||||||
|
|
||||||
RegistryKey userChoiceKey;
|
RegistryKey userChoiceKey;
|
||||||
string browserPath = FileUrl.browserPath;
|
browserPath = FileUrl.browserPath;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(browserPath))
|
if (string.IsNullOrEmpty(browserPath))
|
||||||
{
|
{
|
||||||
|
@ -39,7 +40,7 @@ namespace SystemTrayMenu.Utilities
|
||||||
|
|
||||||
string path = CleanifyBrowserPath(browserKey.GetValue(null) as string);
|
string path = CleanifyBrowserPath(browserKey.GetValue(null) as string);
|
||||||
browserKey.Close();
|
browserKey.Close();
|
||||||
return path;
|
browserPath = path;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -57,7 +58,13 @@ namespace SystemTrayMenu.Utilities
|
||||||
FileUrl.browserPath = browserPath;
|
FileUrl.browserPath = browserPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
return browserPath;
|
if (string.IsNullOrEmpty(browserPath))
|
||||||
|
{
|
||||||
|
valid = false;
|
||||||
|
Log.Info($"No default browser found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string CleanifyBrowserPath(string p)
|
private static string CleanifyBrowserPath(string p)
|
||||||
|
|
|
@ -77,9 +77,14 @@ namespace SystemTrayMenu.Utilities
|
||||||
Logger.ShutDown();
|
Logger.ShutDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void ProcessStart(string fileName, string arguments = null, bool doubleQuoteArg = false)
|
internal static void ProcessStart(
|
||||||
|
string fileName,
|
||||||
|
string arguments = "",
|
||||||
|
bool doubleQuoteArg = false,
|
||||||
|
string workingDirectory = "",
|
||||||
|
bool createNoWindow = false)
|
||||||
{
|
{
|
||||||
if (doubleQuoteArg && arguments != null)
|
if (doubleQuoteArg && !string.IsNullOrEmpty(arguments))
|
||||||
{
|
{
|
||||||
arguments = "\"" + arguments + "\"";
|
arguments = "\"" + arguments + "\"";
|
||||||
}
|
}
|
||||||
|
@ -90,7 +95,10 @@ namespace SystemTrayMenu.Utilities
|
||||||
{
|
{
|
||||||
StartInfo = new ProcessStartInfo(fileName)
|
StartInfo = new ProcessStartInfo(fileName)
|
||||||
{
|
{
|
||||||
|
FileName = fileName,
|
||||||
Arguments = arguments,
|
Arguments = arguments,
|
||||||
|
WorkingDirectory = workingDirectory,
|
||||||
|
CreateNoWindow = createNoWindow,
|
||||||
UseShellExecute = true,
|
UseShellExecute = true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue