mirror of
https://github.com/greenshot/greenshot
synced 2025-08-19 13:10:00 -07:00
Added the FEATURE-998 also to the open last file context menu.
This commit is contained in:
parent
4029e01491
commit
96b92df495
3 changed files with 58 additions and 38 deletions
|
@ -1321,30 +1321,7 @@ namespace Greenshot {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path != null) {
|
ExplorerHelper.OpenInExplorer(path);
|
||||||
try {
|
|
||||||
// Check if path is a directory
|
|
||||||
if (Directory.Exists(path))
|
|
||||||
{
|
|
||||||
using (Process.Start(path))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Check if path is a file
|
|
||||||
else if (File.Exists(path))
|
|
||||||
{
|
|
||||||
// Start the explorer process and select the file
|
|
||||||
using (var explorer = Process.Start("explorer.exe", $"/select,\"{path}\""))
|
|
||||||
{
|
|
||||||
explorer?.WaitForInputIdle(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
|
||||||
// Make sure we show what we tried to open in the exception
|
|
||||||
ex.Data.Add("path", path);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ClickActions.OPEN_LAST_IN_EDITOR:
|
case ClickActions.OPEN_LAST_IN_EDITOR:
|
||||||
if (File.Exists(_conf.OutputFileAsFullpath)) {
|
if (File.Exists(_conf.OutputFileAsFullpath)) {
|
||||||
|
@ -1381,7 +1358,7 @@ namespace Greenshot {
|
||||||
}
|
}
|
||||||
LOG.Debug("DoubleClick was called! Starting: " + path);
|
LOG.Debug("DoubleClick was called! Starting: " + path);
|
||||||
try {
|
try {
|
||||||
Process.Start(path);
|
ExplorerHelper.OpenInExplorer(path);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
// Make sure we show what we tried to open in the exception
|
// Make sure we show what we tried to open in the exception
|
||||||
ex.Data.Add("path", path);
|
ex.Data.Add("path", path);
|
||||||
|
|
|
@ -512,22 +512,14 @@ namespace Greenshot.Helpers {
|
||||||
string errorMessage = null;
|
string errorMessage = null;
|
||||||
var path = Path.GetDirectoryName(surface.LastSaveFullPath);
|
var path = Path.GetDirectoryName(surface.LastSaveFullPath);
|
||||||
try {
|
try {
|
||||||
if (path != null)
|
ExplorerHelper.OpenInExplorer(path);
|
||||||
{
|
|
||||||
var processStartInfo = new ProcessStartInfo("explorer.exe")
|
|
||||||
{
|
|
||||||
Arguments = path,
|
|
||||||
UseShellExecute = false
|
|
||||||
};
|
|
||||||
using (var process = new Process()) {
|
|
||||||
process.StartInfo = processStartInfo;
|
|
||||||
process.Start();
|
|
||||||
}
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
} catch (Exception ex) {
|
{
|
||||||
errorMessage = ex.Message;
|
errorMessage = ex.Message;
|
||||||
}
|
}
|
||||||
// Added fallback for when the explorer can't be found
|
// Added fallback for when the explorer can't be found
|
||||||
|
// TODO: Check if this makes sense
|
||||||
if (errorMessage != null) {
|
if (errorMessage != null) {
|
||||||
try {
|
try {
|
||||||
string windowsPath = Environment.GetEnvironmentVariable("SYSTEMROOT");
|
string windowsPath = Environment.GetEnvironmentVariable("SYSTEMROOT");
|
||||||
|
|
51
GreenshotPlugin/Core/ExplorerHelper.cs
Normal file
51
GreenshotPlugin/Core/ExplorerHelper.cs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace GreenshotPlugin.Core
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Simple utility for the explorer
|
||||||
|
/// </summary>
|
||||||
|
public static class ExplorerHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Open the path in the windows explorer.
|
||||||
|
/// If the path is a directory, it will just open the explorer with that directory.
|
||||||
|
/// If the path is a file, the explorer is opened with the directory and the file is selected.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">Path to file or directory</param>
|
||||||
|
public static void OpenInExplorer(string path)
|
||||||
|
{
|
||||||
|
if (path == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check if path is a directory
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
using (Process.Start(path))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Check if path is a file
|
||||||
|
else if (File.Exists(path))
|
||||||
|
{
|
||||||
|
// Start the explorer process and select the file
|
||||||
|
using (var explorer = Process.Start("explorer.exe", $"/select,\"{path}\""))
|
||||||
|
{
|
||||||
|
explorer?.WaitForInputIdle(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Make sure we show what we tried to open in the exception
|
||||||
|
ex.Data.Add("path", path);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue