diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj index a14eb339fc..a417cb6b75 100644 --- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj +++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj @@ -122,7 +122,6 @@ False ..\References\OpenTK.dll - False ..\References\$(Platform)\SlimDX.dll diff --git a/BizHawk.Client.EmuHawk/JumpLists.cs b/BizHawk.Client.EmuHawk/JumpLists.cs index 41efac51ca..db41963523 100644 --- a/BizHawk.Client.EmuHawk/JumpLists.cs +++ b/BizHawk.Client.EmuHawk/JumpLists.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using System.Windows; -using System.Windows.Shell; using System.IO; using System.Reflection; @@ -11,13 +9,26 @@ namespace BizHawk.Client.EmuHawk { public class JumpLists { - static Application _app; + static readonly Assembly PresentationFramework; + static Type Application; + static Type JumpList; + static Type JumpTask; + + static object _app; static JumpLists() { - _app = new Application(); - var jmp = new JumpList(); - jmp.ShowRecentCategory = true; - JumpList.SetJumpList(_app, jmp); + try + { + PresentationFramework = Assembly.Load("PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); + Application = PresentationFramework.GetType("System.Windows.Application"); + JumpList = PresentationFramework.GetType("System.Windows.Shell.JumpList"); + JumpTask = PresentationFramework.GetType("System.Windows.Shell.JumpTask"); + _app = Activator.CreateInstance(Application); + dynamic jmp = Activator.CreateInstance(JumpList); + jmp.ShowRecentCategory = true; + JumpList.GetMethod("SetJumpList").Invoke(null, new[] { _app, jmp }); + } + catch { } } /// @@ -31,18 +42,21 @@ namespace BizHawk.Client.EmuHawk // title = fullpath.Split('|')[1]; //else // title = Path.GetFileName(fullpath); - - string exepath = Assembly.GetEntryAssembly().Location; - - var ji = new JumpTask + try { - ApplicationPath = exepath, - Arguments = '"' + fullpath + '"', - Title = title, + string exepath = Assembly.GetEntryAssembly().Location; + + dynamic ji = Activator.CreateInstance(JumpTask); + + ji.ApplicationPath = exepath; + ji.Arguments = '"' + fullpath + '"'; + ji.Title = title; // for some reason, this doesn't work - WorkingDirectory = Path.GetDirectoryName(exepath) - }; - JumpList.AddToRecentCategory(ji); + ji.WorkingDirectory = Path.GetDirectoryName(exepath); + + JumpList.GetMethod("AddToRecentCategory", new[] { JumpTask }).Invoke(null, new[] { ji }); + } + catch { } } } }