{"id":443,"date":"2008-07-14T16:33:49","date_gmt":"2008-07-14T16:33:49","guid":{"rendered":"http:\/\/ubuntucat.wordpress.com\/?p=391"},"modified":"2008-07-14T16:33:49","modified_gmt":"2008-07-14T16:33:49","slug":"the-futile-search-for-global-hotkeys-on-itunes-for-windows","status":"publish","type":"post","link":"https:\/\/www.psychocats.net\/ubuntucat\/the-futile-search-for-global-hotkeys-on-itunes-for-windows\/","title":{"rendered":"The futile search for global hotkeys on iTunes for Windows"},"content":{"rendered":"<p>In the over three decades I&#8217;ve spent on this planet, relatively few of those years have I spent listening to music on a computer (desktop\/laptop). Yes, in the old days, I listened to records. I think the first one was Def Leppard&#8217;s <i>Pyromania<\/i>. I spent a long time loving tapes, though, and making mix tapes for friends. Probably from 1991 to 1999 I made upwards of 600 mix tapes. I don&#8217;t know the actual number. A lot of care went into picking out the exact 20 to 24 songs to fit on those 90-minute cassette tapes. When CDs came along, I used those to copy to mix tapes. Eventually, I got into the whole CD-ripping business and keeping MP3 versions of songs on a computer. But when you don&#8217;t put in one CD at a time or one tape at a time, how do you make sense of all the thousands of songs you have? <\/p>\n<p> Well, that&#8217;s when I started listening to music on the computer. My first program was WinAmp, and I loved it. I loved the little skins. I loved watching the playlists randomize. I loved the little windows you could move around. When the iPod came on the scene a few years ago, my wife and I each got one, and we realized that the way to get songs on the iPod was through iTunes. My first encounters with iTunes left me unimpressed. It didn&#8217;t seem an intuitive program to me. The funny thing is that now, years later, I can&#8217;t even remember what I found unintuitive about it. I just remember nothing made sense to me. Eventually, though, I grew to love iTunes. Even now I think it&#8217;s the best music management program out there (I say that knowing that Ubuntu users everywhere are groaning while looking for virtual rocks to virtually stone me with). <\/p>\n<p> But when I moved over to Ubuntu three years ago, I had to give up iTunes. In the meantime, I&#8217;ve grown to love Rhythmbox. I had little trysts with AmaroK, JuK, XMMS, Exaile, Banshee, Quod Libet&mdash;you name the GUI Linux music program, and I&#8217;ve probably tried it. Still I kept going back to the simplicity of Rhythmbox. <\/p>\n<p> Even though I still think iTunes is the best overall music management program (I know some people swear by Foobar2000, but that&#8217;s just a little too power user for me), there is one thing I miss from Linux music programs when I use iTunes on my Windows computer at work: global hotkeys. <\/p>\n<p> Global hotkeys allows me to listen to music while using a variety of other programs (mainly Thunderbird and FileMaker Pro). No matter what program I&#8217;m using, if the phone rings or if someone walks in to talk to me, I can hit a key combination and pause whatever song I&#8217;m listening to. Or, even if no one is interrupting me, if I just want to switch to the next song, I don&#8217;t have to bring the focus back to iTunes to change songs. <\/p>\n<p>Global hotkeys aren&#8217;t something iTunes natively supports, so I have to rely on helper programs to set them up for me. For a while I was using <a href=\"http:\/\/www.mattberube.com\/software\/iTunesKeys\/\">iTunesKeys<\/a>. Not a bad program, except that it was buggy. It would take forever to quit if I wanted to quit iTunes. Sometimes it would just hang on a random song. Eventually I gave up on iTunesKeys and gave <a href=\"http:\/\/www.jacobhickman.com\/hotkeys\/\">iTunes Global Hotkeys<\/a> a whirl. Unfortunately, it appears to be a candidate for the <a href=\"http:\/\/www.threatcode.com\/admin_rights.htm\">admin rights hall of shame<\/a>, since I get an error message about permissions when I try to run it as a limited user:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.psychocats.net\/wpimages\/errorglobalhotkeys.png\" width=\"444\" height=\"312\" border=\"0\" align=\"left\"> <\/p>\n<p> Well, since the error message appears every time I try to use any hotkey, since I don&#8217;t want to run as administrator all the time, since the author of iTunes Global Hotkeys is no longer maintaining the software, since iTunesKeys is buggy, since I still love iTunes for Windows, since there is no Windows port of Rhythmbox, and since I want to listen to music at work, I&#8217;m just going to keep that error message window open and move it down to the bottom of my screen. <\/p>\n<p> In case anyone&#8217;s curious, here are the full error message details: <\/p>\n<blockquote><p>See the end of this message for details on invoking<br \/>\njust-in-time (JIT) debugging instead of this dialog box.<\/p>\n<p>************** Exception Text **************<br \/>\nSystem.UnauthorizedAccessException: Access to the path &#8216;c:\\ITHKerrors.log&#8217; is denied.<br \/>\n   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)<br \/>\n   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)<br \/>\n   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)<br \/>\n   at System.IO.StreamWriter.CreateFile(String path, Boolean append)<br \/>\n   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)<br \/>\n   at System.IO.StreamWriter..ctor(String path, Boolean append)<br \/>\n   at iTunesHotKey.Form1.LogIt(String strInput, String strName)<br \/>\n   at iTunesHotKey.Form1.nexttrack_HotKeyPressed(Object sender, EventArgs e)<br \/>\n   at iTunesHotKey.GlobalHotKey.NotifyHotKey(IntPtr virtKey, IntPtr modifiers)<br \/>\n   at iTunesHotKey.GlobalHotKey.HiddenForm.WndProc(Message&amp; m)<br \/>\n   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)<br \/>\n   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)<br \/>\n   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)<\/p>\n<p>************** Loaded Assemblies **************<br \/>\nmscorlib<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/Microsoft.NET\/Framework\/v2.0.50727\/mscorlib.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\niTunesHotKey<br \/>\n    Assembly Version: 1.2.0.0<br \/>\n    Win32 Version: 1.2.0.0<br \/>\n    CodeBase: file:\/\/\/C:\/Program%20Files\/Jacob%20Hickman\/iTunes%20Global%20Hotkeys\/iTunesHotKey.exe<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nMicrosoft.VisualBasic<br \/>\n    Assembly Version: 8.0.0.0<br \/>\n    Win32 Version: 8.0.50727.42 (RTM.050727-4200)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/Microsoft.VisualBasic\/8.0.0.0__b03f5f7f11d50a3a\/Microsoft.VisualBasic.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System\/2.0.0.0__b77a5c561934e089\/System.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem.Windows.Forms<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System.Windows.Forms\/2.0.0.0__b77a5c561934e089\/System.Windows.Forms.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem.Drawing<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System.Drawing\/2.0.0.0__b03f5f7f11d50a3a\/System.Drawing.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem.Runtime.Remoting<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System.Runtime.Remoting\/2.0.0.0__b77a5c561934e089\/System.Runtime.Remoting.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem.Configuration<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System.Configuration\/2.0.0.0__b03f5f7f11d50a3a\/System.Configuration.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSystem.Xml<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System.Xml\/2.0.0.0__b77a5c561934e089\/System.Xml.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nInterop.iTunesLib<br \/>\n    Assembly Version: 1.8.0.0<br \/>\n    Win32 Version: 1.8.0.0<br \/>\n    CodeBase: file:\/\/\/C:\/Program%20Files\/Jacob%20Hickman\/iTunes%20Global%20Hotkeys\/Interop.iTunesLib.DLL<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nCustomMarshalers<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.42 (RTM.050727-4200)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_32\/CustomMarshalers\/2.0.0.0__b03f5f7f11d50a3a\/CustomMarshalers.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nzjmyotbn<br \/>\n    Assembly Version: 2.0.0.0<br \/>\n    Win32 Version: 2.0.50727.832 (QFE.050727-8300)<br \/>\n    CodeBase: file:\/\/\/C:\/WINDOWS\/assembly\/GAC_MSIL\/System\/2.0.0.0__b77a5c561934e089\/System.dll<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>************** JIT Debugging **************<br \/>\nTo enable just-in-time (JIT) debugging, the .config file for this<br \/>\napplication or computer (machine.config) must have the<br \/>\njitDebugging value set in the system.windows.forms section.<br \/>\nThe application must also be compiled with debugging<br \/>\nenabled.<\/p>\n<p>For example:<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>In the over three decades I&#8217;ve spent on this planet, relatively few of those years have I spent listening to music on a computer (desktop\/laptop). Yes, in the old days, I listened to records. I think the first one was Def Leppard&#8217;s Pyromania. I spent a long time loving tapes, though, and making mix tapes&hellip; <a class=\"more-link\" href=\"https:\/\/www.psychocats.net\/ubuntucat\/the-futile-search-for-global-hotkeys-on-itunes-for-windows\/\">Continue reading <span class=\"screen-reader-text\">The futile search for global hotkeys on iTunes for Windows<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,16,24],"tags":[144,170,921],"class_list":["post-443","post","type-post","status-publish","format-standard","hentry","category-computers","category-music","category-windows","tag-global-hotkeys","tag-itunes","tag-windows","entry"],"_links":{"self":[{"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/posts\/443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/comments?post=443"}],"version-history":[{"count":3,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/posts\/443\/revisions"}],"predecessor-version":[{"id":437,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/posts\/443\/revisions\/437"}],"wp:attachment":[{"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/media?parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/categories?post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.psychocats.net\/ubuntucat\/wp-json\/wp\/v2\/tags?post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}