[Feature] Read icons from system cache (#149), version 1.0.17.17

This commit is contained in:
Markus Hofknecht 2021-04-22 19:32:25 +02:00
parent 010af66b42
commit ecebddb0cb
7 changed files with 4 additions and 90 deletions

View file

@ -17,7 +17,7 @@ namespace SystemTrayMenu.DllImports
return DeleteObject(hObject);
}
[DllImport("gdi32.dll")]
[DllImport("gdi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern bool DeleteObject(IntPtr hObject);
}
}

View file

@ -1,25 +0,0 @@
// <copyright file="GetMenuDefaultItem.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu.DllImports
{
using System;
using System.Runtime.InteropServices;
/// <summary>
/// wraps the methodcalls to native windows dll's.
/// </summary>
public static partial class NativeMethods
{
public static int User32GetMenuDefaultItem(IntPtr hMenu, bool fByPos, uint gmdiFlags)
{
return GetMenuDefaultItem(hMenu, fByPos, gmdiFlags);
}
// Determines the default menu item on the specified menu
[DllImport("user32", SetLastError = true, CharSet = CharSet.Unicode)]
[DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]
private static extern int GetMenuDefaultItem(IntPtr hMenu, bool fByPos, uint gmdiFlags);
}
}

View file

@ -5,7 +5,6 @@
namespace SystemTrayMenu.DllImports
{
using System;
using System.Drawing;
using System.Runtime.InteropServices;
/// <summary>

View file

@ -1,55 +0,0 @@
// <copyright file="SHGetFileInfo.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu.DllImports
{
using System;
using System.Runtime.InteropServices;
/// <summary>
/// wraps the methodcalls to native windows dll's.
/// </summary>
public static partial class NativeMethods
{
private const int maxPath = 256;
internal static IntPtr Shell32SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags)
{
return SHGetFileInfo(
pszPath,
dwFileAttributes,
ref psfi,
cbFileInfo,
uFlags);
}
[DllImport("Shell32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]
private static extern IntPtr SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct SHFILEINFO
{
public const int NAMESIZE = 80;
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = maxPath)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = NAMESIZE)]
public string szTypeName;
}
}
}

View file

@ -6,7 +6,7 @@ namespace SystemTrayMenu.DllImports
{
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SIZE
{
public int Cx;
@ -14,8 +14,8 @@ namespace SystemTrayMenu.DllImports
public SIZE(int cx, int cy)
{
this.Cx = cx;
this.Cy = cy;
Cx = cx;
Cy = cy;
}
}
}

View file

@ -11,7 +11,6 @@ namespace SystemTrayMenu.UserInterface
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using SystemTrayMenu.UserInterface.HotkeyTextboxControl;
using SystemTrayMenu.Utilities;
using static SystemTrayMenu.UserInterface.HotkeyTextboxControl.HotkeyControl;

View file

@ -4,16 +4,12 @@
namespace SystemTrayMenu.Utilities
{
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using SystemTrayMenu.DllImports;
using TAFactory.IconPack;
// from https://www.codeproject.com/Articles/2532/Obtaining-and-managing-file-and-folder-icons-using
// added ImageList_GetIcon, IconCache, AddIconOverlay