This repository has been archived by the owner on Nov 23, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiTunesHelper.cs
87 lines (74 loc) · 2.16 KB
/
iTunesHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace ITMHelper
{
class iTunesHelper : IDisposable
{
dynamic iTunesApp;
object quitHandler;
public iTunesHelper()
{
Type iTunesType = Type.GetTypeFromProgID("iTunes.Application");
this.iTunesApp = Activator.CreateInstance(iTunesType);
this.quitHandler = new ITEventGenericHandler(iTunesQuitEvent);
iTunesApp.OnAboutToPromptUserToQuitEvent += this.quitHandler;
/*foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(this.iTunesApp))
{
Console.WriteLine(prop.Name);
}*/
}
public delegate void ITEventPlayerHandler(object track);
public delegate void ITEventGenericHandler();
private void iTunesQuitEvent()
{
iTunesApp.OnAboutToPromptUserToQuitEvent -= this.quitHandler;
// TODO: Call handler instead of exiting app
System.Windows.Forms.Application.Exit();
}
public object getCurrentTrack()
{
return iTunesApp.CurrentTrack;
}
public Boolean IsTrackInLibrary(object track)
{
try
{
return ((dynamic)track).TrackDatabaseID == 0 || true;
}
catch (COMException ex)
{
return false;
}
}
public object getPlayerPosition()
{
try
{
return iTunesApp.PlayerPosition;
}
catch (COMException ex)
{
return null;
}
}
public object getPlayerState()
{
return iTunesApp.PlayerState;
}
public object getVersion()
{
return iTunesApp.Version;
}
public void Dispose()
{
// Release the COM object
Marshal.ReleaseComObject(this.iTunesApp);
this.iTunesApp = null;
}
}
}