Added elestel's iTunes plugin to the project.

This commit is contained in:
Kimmo Pekkola 2009-07-30 07:49:58 +00:00
parent 8563915b4b
commit c42e61b4de
6 changed files with 16050 additions and 1 deletions

View File

@ -0,0 +1,646 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="PluginiTunes"
ProjectGUID="{A2DD3CBE-B140-4892-A875-24107FA52518}"
RootNamespace="PluginiTunes"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\x32/Debug"
IntermediateDirectory=".\x32/Debug"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\x32/Debug/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="iTunesCOMWindowsSDK"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
PrecompiledHeaderFile=".\x32/Debug/PluginiTunes.pch"
AssemblerListingLocation=".\x32/Debug/"
ObjectFile=".\x32/Debug/"
ProgramDataBaseFileName=".\x32/Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="../../TestBench/x32/Debug/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\x32/Debug/iTunesPlugin.pdb"
ImportLibrary=".\x32/Debug/iTunesPlugin.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\x32/Release"
IntermediateDirectory=".\x32/Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\x32/Release/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="iTunesCOMWindowsSDK"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
PrecompiledHeaderFile=".\x32/Release/PluginiTunes.pch"
AssemblerListingLocation=".\x32/Release/"
ObjectFile=".\x32/Release/"
ProgramDataBaseFileName=".\x32/Release/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Rainmeter.lib"
OutputFile="../../TestBench/x32/Release/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Library\x32\Release"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\x32/Release/iTunesPlugin.pdb"
ImportLibrary=".\x32/Release/iTunesPlugin.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release64|Win32"
OutputDirectory=".\x64/Release"
IntermediateDirectory=".\x64/Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\x64/Release/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/GL /EHsc /Wp64 /GA "
Optimization="2"
InlineFunctionExpansion="1"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\x64/Release/PluginiTunes.pch"
AssemblerListingLocation=".\x64/Release/"
ObjectFile=".\x64/Release/"
ProgramDataBaseFileName=".\x64/Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/machine:AMD64 /LTCG "
AdditionalDependencies="bufferoverflowU.lib odbc32.lib odbccp32.lib"
OutputFile="../../TestBench/x64/Release/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile=".\x64/Release/iTunesPlugin.pdb"
ImportLibrary=".\x64/Release/iTunesPlugin.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName=".\x32/Debug/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="iTunesCOMWindowsSDK"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
PrecompiledHeaderFile=".\x32/Debug/PluginiTunes.pch"
AssemblerListingLocation=".\x32/Debug/"
ObjectFile=".\x32/Debug/"
ProgramDataBaseFileName=".\x32/Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="../../TestBench/x32/Debug/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\x32/Debug/iTunesPlugin.pdb"
ImportLibrary=".\x32/Debug/iTunesPlugin.lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName=".\x32/Release/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="iTunesCOMWindowsSDK"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
PrecompiledHeaderFile=".\x32/Release/PluginiTunes.pch"
AssemblerListingLocation=".\x32/Release/"
ObjectFile=".\x32/Release/"
ProgramDataBaseFileName=".\x32/Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Rainmeter.lib"
OutputFile="../../TestBench/x32/Release/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile=".\x32/Release/iTunesPlugin.pdb"
ImportLibrary=".\x32/Release/iTunesPlugin.lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release64|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName=".\x64/Release/PluginiTunes.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/GL /EHsc /Wp64 /GA "
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="iTunesCOMWindowsSDK"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;PluginiTunes_EXPORTS"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\x64/Release/PluginiTunes.pch"
AssemblerListingLocation=".\x64/Release/"
ObjectFile=".\x64/Release/"
ProgramDataBaseFileName=".\x64/Release/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1035"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/machine:AMD64 /LTCG "
AdditionalDependencies="Rainmeter.lib"
OutputFile="../../TestBench/x64/Release/Plugins/iTunesPlugin.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Library\x64\Release"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\x64/Release/iTunesPlugin.pdb"
ImportLibrary=".\x64/Release/iTunesPlugin.lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\iTunesCOMWindowsSDK\iTunesCOMInterface.h"
>
</File>
<File
RelativePath=".\iTunesCOMWindowsSDK\iTunesCOMInterface_i.c"
>
</File>
<File
RelativePath="iTunesPlugin.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
BasicRuntimeChecks="3"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release64|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
BasicRuntimeChecks="3"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release64|x64"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;PluginiTunes_EXPORTS;$(NoInherit)"
/>
</FileConfiguration>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,175 @@
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
/* link this file in with the server and any clients */
/* File created by MIDL compiler version 6.00.0366 */
/* at Wed Jun 25 17:02:20 2008
*/
/* Compiler settings for iTunesCOMInterface.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
#pragma warning( disable: 4049 ) /* more than 64k source lines */
#ifdef __cplusplus
extern "C"{
#endif
#include <rpc.h>
#include <rpcndr.h>
#ifdef _MIDL_USE_GUIDDEF_
#ifndef INITGUID
#define INITGUID
#include <guiddef.h>
#undef INITGUID
#else
#include <guiddef.h>
#endif
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
#else // !_MIDL_USE_GUIDDEF_
#ifndef __IID_DEFINED__
#define __IID_DEFINED__
typedef struct _IID
{
unsigned long x;
unsigned short s1;
unsigned short s2;
unsigned char c[8];
} IID;
#endif // __IID_DEFINED__
#ifndef CLSID_DEFINED
#define CLSID_DEFINED
typedef IID CLSID;
#endif // CLSID_DEFINED
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
#endif !_MIDL_USE_GUIDDEF_
MIDL_DEFINE_GUID(IID, LIBID_iTunesLib,0x9E93C96F,0xCF0D,0x43f6,0x8B,0xA8,0xB8,0x07,0xA3,0x37,0x07,0x12);
MIDL_DEFINE_GUID(IID, IID_IITObject,0x9FAB0E27,0x70D7,0x4e3a,0x99,0x65,0xB0,0xC8,0xB8,0x86,0x9B,0xB6);
MIDL_DEFINE_GUID(IID, IID_IITSource,0xAEC1C4D3,0xAEF1,0x4255,0xB8,0x92,0x3E,0x3D,0x13,0xAD,0xFD,0xF9);
MIDL_DEFINE_GUID(IID, IID_IITSourceCollection,0x2FF6CE20,0xFF87,0x4183,0xB0,0xB3,0xF3,0x23,0xD0,0x47,0xAF,0x41);
MIDL_DEFINE_GUID(IID, IID_IITEncoder,0x1CF95A1C,0x55FE,0x4f45,0xA2,0xD3,0x85,0xAC,0x6C,0x50,0x4A,0x73);
MIDL_DEFINE_GUID(IID, IID_IITEncoderCollection,0x8862BCA9,0x168D,0x4549,0xA9,0xD5,0xAD,0xB3,0x5E,0x55,0x3B,0xA6);
MIDL_DEFINE_GUID(IID, IID_IITEQPreset,0x5BE75F4F,0x68FA,0x4212,0xAC,0xB7,0xBE,0x44,0xEA,0x56,0x97,0x59);
MIDL_DEFINE_GUID(IID, IID_IITEQPresetCollection,0xAEF4D111,0x3331,0x48da,0xB0,0xC2,0xB4,0x68,0xD5,0xD6,0x1D,0x08);
MIDL_DEFINE_GUID(IID, IID_IITPlaylist,0x3D5E072F,0x2A77,0x4b17,0x9E,0x73,0xE0,0x3B,0x77,0xCC,0xCC,0xA9);
MIDL_DEFINE_GUID(IID, IID_IITOperationStatus,0x206479C9,0xFE32,0x4f9b,0xA1,0x8A,0x47,0x5A,0xC9,0x39,0xB4,0x79);
MIDL_DEFINE_GUID(IID, IID_IITConvertOperationStatus,0x7063AAF6,0xABA0,0x493b,0xB4,0xFC,0x92,0x0A,0x9F,0x10,0x58,0x75);
MIDL_DEFINE_GUID(IID, IID_IITLibraryPlaylist,0x53AE1704,0x491C,0x4289,0x94,0xA0,0x95,0x88,0x15,0x67,0x5A,0x3D);
MIDL_DEFINE_GUID(IID, IID_IITUserPlaylist,0x0A504DED,0xA0B5,0x465a,0x8A,0x94,0x50,0xE2,0x0D,0x7D,0xF6,0x92);
MIDL_DEFINE_GUID(IID, IID_IITTrack,0x4CB0915D,0x1E54,0x4727,0xBA,0xF3,0xCE,0x6C,0xC9,0xA2,0x25,0xA1);
MIDL_DEFINE_GUID(IID, IID_IITTrackCollection,0x755D76F1,0x6B85,0x4ce4,0x8F,0x5F,0xF8,0x8D,0x97,0x43,0xDC,0xD8);
MIDL_DEFINE_GUID(IID, IID_IITVisual,0x340F3315,0xED72,0x4c09,0x9A,0xCF,0x21,0xEB,0x4B,0xDF,0x99,0x31);
MIDL_DEFINE_GUID(IID, IID_IITVisualCollection,0x88A4CCDD,0x114F,0x4043,0xB6,0x9B,0x84,0xD4,0xE6,0x27,0x49,0x57);
MIDL_DEFINE_GUID(IID, IID_IITWindow,0x370D7BE0,0x3A89,0x4a42,0xB9,0x02,0xC7,0x5F,0xC1,0x38,0xBE,0x09);
MIDL_DEFINE_GUID(IID, IID_IITBrowserWindow,0xC999F455,0xC4D5,0x4aa4,0x82,0x77,0xF9,0x97,0x53,0x69,0x99,0x74);
MIDL_DEFINE_GUID(IID, IID_IITWindowCollection,0x3D8DE381,0x6C0E,0x481f,0xA8,0x65,0xE2,0x38,0x5F,0x59,0xFA,0x43);
MIDL_DEFINE_GUID(IID, IID_IiTunes,0x9DD6680B,0x3EDC,0x40db,0xA7,0x71,0xE6,0xFE,0x48,0x32,0xE3,0x4A);
MIDL_DEFINE_GUID(IID, DIID__IiTunesEvents,0x5846EB78,0x317E,0x4b6f,0xB0,0xC3,0x11,0xEE,0x8C,0x8F,0xEE,0xF2);
MIDL_DEFINE_GUID(IID, DIID__IITConvertOperationStatusEvents,0x5C47A705,0x8E8A,0x45a1,0x9E,0xED,0x71,0xC9,0x93,0xF0,0xBF,0x60);
MIDL_DEFINE_GUID(CLSID, CLSID_iTunesApp,0xDC0C2640,0x1415,0x4644,0x87,0x5C,0x6F,0x4D,0x76,0x98,0x39,0xBA);
MIDL_DEFINE_GUID(CLSID, CLSID_iTunesConvertOperationStatus,0xD06596AD,0xC900,0x41b2,0xBC,0x68,0x1B,0x48,0x64,0x50,0xFC,0x56);
MIDL_DEFINE_GUID(IID, IID_IITArtwork,0xD0A6C1F8,0xBF3D,0x4cd8,0xAC,0x47,0xFE,0x32,0xBD,0xD1,0x72,0x57);
MIDL_DEFINE_GUID(IID, IID_IITArtworkCollection,0xBF2742D7,0x418C,0x4858,0x9A,0xF9,0x29,0x81,0xB0,0x62,0xD2,0x3E);
MIDL_DEFINE_GUID(IID, IID_IITURLTrack,0x1116E3B5,0x29FD,0x4393,0xA7,0xBD,0x45,0x4E,0x5E,0x32,0x79,0x00);
MIDL_DEFINE_GUID(IID, IID_IITAudioCDPlaylist,0xCF496DF3,0x0FED,0x4d7d,0x9B,0xD8,0x52,0x9B,0x6E,0x8A,0x08,0x2E);
MIDL_DEFINE_GUID(IID, IID_IITPlaylistCollection,0xFF194254,0x909D,0x4437,0x9C,0x50,0x3A,0xAC,0x2A,0xE6,0x30,0x5C);
MIDL_DEFINE_GUID(IID, IID_IITIPodSource,0xCF4D8ACE,0x1720,0x4fb9,0xB0,0xAE,0x98,0x77,0x24,0x9E,0x89,0xB0);
MIDL_DEFINE_GUID(IID, IID_IITFileOrCDTrack,0x00D7FE99,0x7868,0x4cc7,0xAD,0x9E,0xAC,0xFD,0x70,0xD0,0x95,0x66);
MIDL_DEFINE_GUID(IID, IID_IITPlaylistWindow,0x349CBB45,0x2E5A,0x4822,0x8E,0x4A,0xA7,0x55,0x55,0xA1,0x86,0xF7);
#undef MIDL_DEFINE_GUID
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1,777 @@
/*
Copyright (C) 2009 Elestel
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#pragma warning(disable: 4786)
#pragma warning(disable: 4996)
#include <windows.h>
//#include <atlbase.h>
#include <comdef.h>
#include "iTunesCOMInterface.h"
#include "..\..\Library\Export.h" // Rainmeter's exported functions
#include <map>
#include <time.h>
const int VOLUME_STEP = 5;
/* The exported functions */
extern "C"
{
__declspec( dllexport ) UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id);
__declspec( dllexport ) void Finalize(HMODULE instance, UINT id);
__declspec( dllexport ) LPCTSTR GetString(UINT id, UINT flags);
__declspec( dllexport ) UINT Update(UINT id);
__declspec( dllexport ) UINT GetPluginVersion();
__declspec( dllexport ) LPCTSTR GetPluginAuthor();
__declspec( dllexport ) void ExecuteBang(LPCTSTR args, UINT id);
}
enum COMMAND_TYPE
{
COMMAND_POWER,
COMMAND_TOGGLEITUNES,
COMMAND_TOGGLEVISUALS,
COMMAND_SOUNDVOLUMEUP,
COMMAND_SOUNDVOLUMEDOWN,
// Player Controls
COMMAND_BACKTRACK,
COMMAND_FASTFORWARD,
COMMAND_NEXTTRACK,
COMMAND_PAUSE,
COMMAND_PLAY,
COMMAND_PLAYFILE,
COMMAND_PLAYPAUSE,
COMMAND_PREVIOUSTRACK,
COMMAND_RESUME,
COMMAND_REWIND,
COMMAND_STOP,
COMMAND_GETPLAYERBUTTONSSTATE,
COMMAND_PLAYERBUTTONCLICKED,
// Conversion Methods
COMMAND_CONVERTFILE,
COMMAND_CONVERTFILES,
COMMAND_TRACK,
COMMAND_TRACKS,
COMMAND_FILE2,
COMMAND_FILES2,
COMMAND_TRACK2,
COMMAND_TRACKS2,
// Miscellaneous Methods
COMMAND_CHECKVERSION,
COMMAND_GETITOBJECTBYID,
COMMAND_CREATEPLAYLIST,
COMMAND_OPENURL,
COMMAND_GOTOMUSICSTOREHOMEPAGE,
COMMAND_UPDATEIPOD,
COMMAND_QUIT,
COMMAND_CREATEEQPRESET,
COMMAND_CREATEPLAYLISTINSOURCE,
COMMAND_SUBSCRIBETOPODCAST,
COMMAND_UPDATEPODCASTFEEDS,
COMMAND_CREATEFOLDER,
COMMAND_CREATEFOLDERINSOURCE,
COMMAND_GETITOBJECTPERSISTENTIDS,
// Collection Properties
//TODO: Sources
//TODO: Encoders
//TODO: EQPresets
//TODO: Visuals
//TODO: Windows
// Sound Properties
COMMAND_GETSOUNDVOLUME,
COMMAND_SETSOUNDVOLUME,
COMMAND_GETMUTE,
COMMAND_SETMUTE,
// Player Properties
COMMAND_GETPLAYERSTATE,
COMMAND_GETPLAYERPOSITIONPERCENT,
COMMAND_GETPLAYERPOSITION,
COMMAND_SETPLAYERPOSITION,
// Encoder Properties
//TODO: CurrentEncoder
// Visual Properties
//TODO: VisualsEnabled
//TODO: FullScreenVisuals
//TODO: VisualSize
//TODO: CurrentVisual
// EQ Properties
COMMAND_GETEQENABLED,
COMMAND_SETEQENABLED,
COMMAND_GETCURRENTEQPRESET,
COMMAND_SETCURRENTEQPRESET,
// Streaming Properties
COMMAND_GETCURRENTSTREAMTITLE,
COMMAND_GETCURRENTSTREAMURL,
// Miscellaneous Properties
//TODO: BrowserWindow
//TODO: EQWindow
//TODO: LibrarySource
//TODO: LibraryPlaylist
// CurrentTrack
COMMAND_GETCURRENTTRACK_ALBUM,
COMMAND_GETCURRENTTRACK_ARTIST,
COMMAND_GETCURRENTTRACK_BITRATE,
COMMAND_GETCURRENTTRACK_BPM,
COMMAND_GETCURRENTTRACK_COMMENT,
COMMAND_GETCURRENTTRACK_COMPOSER,
COMMAND_GETCURRENTTRACK_EQ,
COMMAND_GETCURRENTTRACK_GENRE,
COMMAND_GETCURRENTTRACK_KINDASSTRING,
COMMAND_GETCURRENTTRACK_NAME,
COMMAND_GETCURRENTTRACK_RATING,
COMMAND_GETCURRENTTRACK_SAMPLERATE,
COMMAND_GETCURRENTTRACK_SIZE,
COMMAND_GETCURRENTTRACK_TIME,
COMMAND_GETCURRENTTRACK_TRACKCOUNT,
COMMAND_GETCURRENTTRACK_TRACKNUMBER,
COMMAND_GETCURRENTTRACK_YEAR,
COMMAND_GETCURRENTTRACK_ARTWORK,
//TODO: other CurrentTrack properties
//TODO: CurrentPlaylist
COMMAND_GETVERSION,
//TODO: AppCommandMessageProcessingEnabled
//TODO: ForceToForegroundOnDialog
//TODO: CanSetShuffle
//TODO: CanSetSongRepeat
//TODO: ConvertOperationStatus
//TODO: SoundVolumeControlEnabled
//TODO: LibraryXMLPath
//TODO: ITObjectPersistentIDHigh
//TODO: ITObjectPersistentIDLow
COMMAND_COUNT
};
const static wchar_t* CommandName[COMMAND_COUNT] =
{
L"Power", // COMMAND_POWER
L"ToggleiTunes", // COMMAND_TOGGLEITUNES
L"ToggleVisuals", // COMMAND_TOGGLEVISUALS
L"SoundVolumeUp", // COMMAND_SOUNDVOLUMEUP
L"SoundVolumeDown", // COMMAND_SOUNDVOLUMEDOWN
// Player Controls
L"BackTrack", // COMMAND_BACKTRACK
L"FastForward", // COMMAND_FASTFORWARD
L"NextTrack", // COMMAND_NEXTTRACK
L"Pause", // COMMAND_PAUSE
L"Play", // COMMAND_PLAY
L"PlayFile", // COMMAND_PLAYFILE
L"PlayPause", // COMMAND_PLAYPAUSE
L"PreviousTrack", // COMMAND_PREVIOUSTRACK
L"Resume", // COMMAND_RESUME
L"Rewind", // COMMAND_REWIND
L"Stop", // COMMAND_STOP
L"GetPlayerButtonsState", // COMMAND_GETPLAYERBUTTONSSTATE
L"PlayerButtonClicked", // COMMAND_PLAYERBUTTONCLICKED
// Conversion Methods
L"ConvertFile", // COMMAND_CONVERTFILE
L"ConvertFiles", // COMMAND_CONVERTFILES
L"ConvertTrack", // COMMAND_TRACK
L"ConvertTracks", // COMMAND_TRACKS
L"ConvertFile2", // COMMAND_FILE2
L"ConvertFiles2", // COMMAND_FILES2
L"ConvertTrack2", // COMMAND_TRACK2
L"ConvertTracks2", // COMMAND_TRACKS2
// Miscellaneous Methods
L"CheckVersion", // COMMAND_CHECKVERSION
L"GetITObjectByID", // COMMAND_GETITOBJECTBYID
L"CreatePlaylist", // COMMAND_CREATEPLAYLIST
L"OpenURL", // COMMAND_OPENURL
L"GotoMusicStoreHomePage", // COMMAND_GOTOMUSICSTOREHOMEPAGE
L"UpdateIPod", // COMMAND_UPDATEIPOD
L"Quit", // COMMAND_QUIT
L"CreateEQPreset", // COMMAND_CREATEEQPRESET
L"CreatePlaylistInSource", // COMMAND_CREATEPLAYLISTINSOURCE
L"SubscribeToPodcast", // COMMAND_SUBSCRIBETOPODCAST
L"UpdatePodcastFeeds", // COMMAND_UPDATEPODCASTFEEDS
L"CreateFolder", // COMMAND_CREATEFOLDER
L"CreateFolderInSource", // COMMAND_CREATEFOLDERINSOURCE
L"GetITObjectPersistentIDs", // COMMAND_GETITOBJECTPERSISTENTIDS
// Collection Properties
//TODO: Sources
//TODO: Encoders
//TODO: EQPresets
//TODO: Visuals
//TODO: Windows
// Sound Properties
L"GetSoundVolume", // COMMAND_GETSOUNDVOLUME
L"SetSoundVolume", // COMMAND_SETSOUNDVOLUME
L"GetMute", // COMMAND_GETMUTE
L"SetMute", // COMMAND_SETMUTE
// Player Properties
L"GetPlayerState", // COMMAND_GETPLAYERSTATE
L"GetPlayerPositionPercent", // COMMAND_GETPLAYERPOSITIONPERCENT
L"GetPlayerPosition", // COMMAND_GETPLAYERPOSITION
L"SetPlayerPosition", // COMMAND_SETPLAYERPOSITION
// Encoder Properties
//TODO: CurrentEncoder
// Visual Properties
//TODO: VisualsEnabled
//TODO: FullScreenVisuals
//TODO: VisualSize
//TODO: CurrentVisual
// EQ Properties
L"GetEQEnabled", // COMMAND_GETEQENABLED
L"SetEQEnabled", // COMMAND_SETEQENABLED
L"GetCurrentEQPreset", // COMMAND_GETCURRENTEQPRESET
L"SetCurrentEQPreset", // COMMAND_SETCURRENTEQPRESET
// Streaming Properties
L"GetCurrentStreamTitle", // COMMAND_GETCURRENTSTREAMTITLE
L"GetCurrentStreamURL", // COMMAND_GETCURRENTSTREAMURL
// Miscellaneous Properties
//TODO: BrowserWindow
//TODO: EQWindow
//TODO: LibrarySource
//TODO: LibraryPlaylist
// CurrentTrack
L"GetCurrentTrackAlbum", // COMMAND_GETCURRENTTRACK_ALBUM
L"GetCurrentTrackArtist", // COMMAND_GETCURRENTTRACK_ARTIST
L"GetCurrentTrackBitrate", // COMMAND_GETCURRENTTRACK_BITRATE
L"GetCurrentTrackBPM", // COMMAND_GETCURRENTTRACK_BPM
L"GetCurrentTrackComment", // COMMAND_GETCURRENTTRACK_COMMENT
L"GetCurrentTrackComposer", // COMMAND_GETCURRENTTRACK_COMPOSER
L"GetCurrentTrackEQ", // COMMAND_GETCURRENTTRACK_EQ
L"GetCurrentTrackGenre", // COMMAND_GETCURRENTTRACK_GENRE
L"GetCurrentTrackKindAsString", // COMMAND_GETCURRENTTRACK_KINDASSTRING
L"GetCurrentTrackName", // COMMAND_GETCURRENTTRACK_NAME
L"GetCurrentTrackRating", // COMMAND_GETCURRENTTRACK_RATING
L"GetCurrentTrackSampleRate", // COMMAND_GETCURRENTTRACK_SAMPLERATE
L"GetCurrentTrackSize", // COMMAND_GETCURRENTTRACK_SIZE
L"GetCurrentTrackTime", // COMMAND_GETCURRENTTRACK_TIME
L"GetCurrentTrackTrackCount", // COMMAND_GETCURRENTTRACK_TRACKCOUNT
L"GetCurrentTrackTrackNumber", // COMMAND_GETCURRENTTRACK_TRACKNUMBER
L"GetCurrentTrackYear", // COMMAND_GETCURRENTTRACK_YEAR
L"GetCurrentTrackArtwork", // COMMAND_GETCURRENTTRACK_ARTWORK
//TODO: other CurrentTrack properties
// TODO: CurrentPlaylist
L"GetVersion", // COMMAND_GETVERSION
//TODO: AppCommandMessageProcessingEnabled
//TODO: ForceToForegroundOnDialog
//TODO: CanSetShuffle
//TODO: CanSetSongRepeat
//TODO: ConvertOperationStatus
//TODO: SoundVolumeControlEnabled
//TODO: LibraryXMLPath
//TODO: ITObjectPersistentIDHigh
//TODO: ITObjectPersistentIDLow
};
_COM_SMARTPTR_TYPEDEF(IiTunes, __uuidof(IiTunes));
_COM_SMARTPTR_TYPEDEF(IITTrack, __uuidof(IITTrack));
_COM_SMARTPTR_TYPEDEF(IITArtworkCollection, __uuidof(IITArtworkCollection));
_COM_SMARTPTR_TYPEDEF(IITArtwork, __uuidof(IITArtwork));
static IiTunesPtr iTunes;
static bool CoInitialized = false;
static bool InstanceCreated = false;
typedef std::map<UINT, COMMAND_TYPE> CCommandIdMap;
static CCommandIdMap CommandIdMap;
static wchar_t BaseDir[MAX_PATH];
static IITTrackPtr CurrentTrack;
static wchar_t CurrentTrackArtworkPath[MAX_PATH];
static wchar_t DefaultTrackArtworkPath[MAX_PATH];
static bool updateCurrentTrack()
{
static clock_t lastClock = 0;
clock_t currentClock = clock();
if (0 == lastClock || currentClock - lastClock > CLOCKS_PER_SEC)
{
wsprintf(CurrentTrackArtworkPath, L"%s%s", BaseDir, DefaultTrackArtworkPath);
CurrentTrack.Release();
if (FAILED(iTunes->get_CurrentTrack(&CurrentTrack)) || !CurrentTrack)
return false;
lastClock = currentClock;
IITArtworkCollectionPtr artworkCollection;
if (SUCCEEDED(CurrentTrack->get_Artwork(&artworkCollection)))
{
long count;
artworkCollection->get_Count(&count);
IITArtworkPtr artwork;
ITArtworkFormat artworkFormat;
if (count > 0 &&
SUCCEEDED(artworkCollection->get_Item(1, &artwork)) &&
SUCCEEDED(artwork->get_Format(&artworkFormat)))
{
_bstr_t path;
switch (artworkFormat)
{
case ITArtworkFormatJPEG:
wsprintf(CurrentTrackArtworkPath, L"%s\\Skins\\iTunes\\img\\artwork.jpg", BaseDir);
break;
case ITArtworkFormatPNG :
wsprintf(CurrentTrackArtworkPath, L"%s\\Skins\\iTunes\\img\\artwork.png", BaseDir);
break;
case ITArtworkFormatBMP:
wsprintf(CurrentTrackArtworkPath, L"%s\\Skins\\iTunes\\img\\artwork.bmp", BaseDir);
break;
}
path = CurrentTrackArtworkPath;
if (FAILED(artwork->SaveArtworkToFile(path)))
{
wsprintf(CurrentTrackArtworkPath, L"%s%s", BaseDir, DefaultTrackArtworkPath);
}
}
}
}
return (NULL != CurrentTrack);
}
/*
This function is called when the measure is initialized.
The function must return the maximum value that can be measured.
The return value can also be 0, which means that Rainmeter will
track the maximum value automatically. The parameters for this
function are:
instance The instance of this DLL
iniFile The name of the ini-file (usually Rainmeter.ini)
section The name of the section in the ini-file for this measure
id The identifier for the measure. This is used to identify the measures that use the same plugin.
*/
UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id)
{
if (!CoInitialized)
{
::CoInitialize(NULL);
::GetCurrentDirectory(MAX_PATH - 1, BaseDir);
::GetModuleFileName(NULL, BaseDir, MAX_PATH);
BaseDir[MAX_PATH - 1] = 0;
wchar_t* lastBackslash = wcsrchr(BaseDir, L'\\');
if (lastBackslash)
lastBackslash[1] = 0;
CoInitialized = true;
}
if (CoInitialized && !InstanceCreated && ::FindWindow(L"iTunes", L"iTunes") &&
SUCCEEDED(iTunes.CreateInstance(CLSID_iTunesApp, NULL, CLSCTX_LOCAL_SERVER)))
{
InstanceCreated = true;
}
const wchar_t* type = ReadConfigString(section, L"Command", L"");
for(int i = 0; i < COMMAND_COUNT; i++)
if (wcsicmp(CommandName[i], type) == 0)
{
CommandIdMap[id] = (COMMAND_TYPE)i;
if (COMMAND_GETCURRENTTRACK_ARTWORK == (COMMAND_TYPE)i)
{
const wchar_t* defaultArtwork = ReadConfigString(section, L"DefaultArtwork", L"");
wcscpy(DefaultTrackArtworkPath, defaultArtwork);
}
}
return 0;
}
/*
This function is called when new value should be measured.
The function returns the new value.
*/
UINT Update(UINT id)
{
if (!CoInitialized || !InstanceCreated)
{
return 0;
}
CCommandIdMap::const_iterator it = CommandIdMap.find(id);
COMMAND_TYPE command = (it != CommandIdMap.end()) ? it->second : COMMAND_COUNT;
switch (command)
{
case COMMAND_GETSOUNDVOLUME: // value: 0 ~ 100
{
long volume;
iTunes->get_SoundVolume(&volume);
return volume;
}
case COMMAND_GETPLAYERPOSITIONPERCENT: // value: 0 ~ 100
{
long pos;
iTunes->get_PlayerPosition(&pos);
if (!updateCurrentTrack())
return 0;
long duration;
CurrentTrack->get_Duration(&duration);
return duration ? pos * 100 / duration : 0;
}
case COMMAND_GETPLAYERPOSITION: // value: seconds
{
long pos;
iTunes->get_PlayerPosition(&pos);
return pos;
}
}
return 0;
}
/*
This function is called when the value should be
returned as a string.
*/
#define BUFFER_SIZE 256
LPCTSTR GetString(UINT id, UINT flags)
{
//Error Check
static wchar_t buffer[BUFFER_SIZE];
buffer[0] = 0;
if (!CoInitialized)
{
wsprintf(buffer, L"Fail to initialize");
return buffer;
}
CCommandIdMap::const_iterator it = CommandIdMap.find(id);
COMMAND_TYPE command = (it != CommandIdMap.end()) ? it->second : COMMAND_COUNT;
if (!InstanceCreated)
{
//wsprintf(buffer, L"iTunes is not running");
if (COMMAND_GETCURRENTTRACK_ARTWORK == command)
wsprintf(buffer, L"%s%s", BaseDir, DefaultTrackArtworkPath);
return buffer;
}
if (command >= COMMAND_GETCURRENTTRACK_ALBUM && command <= COMMAND_GETCURRENTTRACK_ARTWORK)
{
if (!updateCurrentTrack())
return buffer;
BSTR bstrValue;
long longValue;
bool bstrUsed = false;
switch (command)
{
case COMMAND_GETCURRENTTRACK_ALBUM:
bstrUsed = SUCCEEDED(CurrentTrack->get_Album(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_ARTIST:
bstrUsed = SUCCEEDED(CurrentTrack->get_Artist(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_BITRATE:
if (SUCCEEDED(CurrentTrack->get_BitRate(&longValue)))
{
wsprintf(buffer, L"%dkbps", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_BPM:
if (SUCCEEDED(CurrentTrack->get_BPM(&longValue)))
{
wsprintf(buffer, L"%dbpm", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_COMMENT:
bstrUsed = SUCCEEDED(CurrentTrack->get_Comment(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_COMPOSER:
bstrUsed = SUCCEEDED(CurrentTrack->get_Composer(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_EQ:
bstrUsed = SUCCEEDED(CurrentTrack->get_EQ(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_GENRE:
bstrUsed = SUCCEEDED(CurrentTrack->get_Genre(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_KINDASSTRING:
bstrUsed = SUCCEEDED(CurrentTrack->get_KindAsString(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_NAME:
bstrUsed = SUCCEEDED(CurrentTrack->get_Name(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_RATING:
if (SUCCEEDED(CurrentTrack->get_Rating(&longValue)))
{
wsprintf(buffer, L"%d/100", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_SAMPLERATE:
if (SUCCEEDED(CurrentTrack->get_SampleRate(&longValue)))
{
wsprintf(buffer, L"%dHz", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_SIZE:
if (SUCCEEDED(CurrentTrack->get_Size(&longValue)))
{
if (longValue < 1024)
wsprintf(buffer, L"%dbytes", longValue);
else if (longValue < 1024 * 1024)
wsprintf(buffer, L"%d.%dKbytes", longValue/1024, (longValue*10/1024)%10);
else
wsprintf(buffer, L"%d.%dMbytes", longValue/1024/1024, (longValue*10/1024/1024)%10);
}
break;
case COMMAND_GETCURRENTTRACK_TIME:
bstrUsed = SUCCEEDED(CurrentTrack->get_Time(&bstrValue));
break;
case COMMAND_GETCURRENTTRACK_TRACKCOUNT:
if (SUCCEEDED(CurrentTrack->get_TrackCount(&longValue)))
{
wsprintf(buffer, L"%d", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_TRACKNUMBER:
if (SUCCEEDED(CurrentTrack->get_TrackNumber(&longValue)))
{
wsprintf(buffer, L"%d", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_YEAR:
if (SUCCEEDED(CurrentTrack->get_Year(&longValue)))
{
wsprintf(buffer, L"%d", longValue);
}
break;
case COMMAND_GETCURRENTTRACK_ARTWORK:
{
wsprintf(buffer, L"%s", CurrentTrackArtworkPath);
break;
}
}
if (bstrUsed && bstrValue)
{
wcsncpy(buffer, bstrValue, BUFFER_SIZE - 1);
buffer[BUFFER_SIZE - 1] = 0;
SysFreeString(bstrValue);
}
return buffer;
}
wsprintf(buffer, L"Type Incorrect");
return buffer;
}
void ExecuteBang(LPCTSTR args, UINT id)
{
if (!CoInitialized)
{
return;
}
CCommandIdMap::const_iterator it = CommandIdMap.find(id);
COMMAND_TYPE command = (it != CommandIdMap.end()) ? it->second : COMMAND_COUNT;
if (!InstanceCreated)
{
if (COMMAND_POWER == command && CoInitialized && SUCCEEDED(iTunes.CreateInstance(CLSID_iTunesApp, NULL, CLSCTX_LOCAL_SERVER)))
{
HWND iTunesHandle = ::FindWindow(L"iTunes", L"iTunes");
::PostMessage(iTunesHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
InstanceCreated = true;
}
return;
}
switch (command)
{
case COMMAND_POWER:
iTunes->Quit();
iTunes.Release();
InstanceCreated = false;
break;
case COMMAND_TOGGLEITUNES:
{
HWND iTunesHandle = ::FindWindow(L"iTunes", L"iTunes");
WINDOWPLACEMENT placement;
memset(&placement, 0, sizeof(placement));
placement.length = sizeof(placement);
if (iTunesHandle && SUCCEEDED(::GetWindowPlacement(iTunesHandle, &placement)))
{
::PostMessage(iTunesHandle, WM_SYSCOMMAND, (SW_SHOWMINIMIZED == placement.showCmd) ? SC_RESTORE : SC_MINIMIZE, 0);
}
break;
}
case COMMAND_TOGGLEVISUALS:
{
VARIANT_BOOL visualsEnabled;
iTunes->get_VisualsEnabled(&visualsEnabled);
if(visualsEnabled == VARIANT_TRUE)
{
iTunes->put_VisualsEnabled(VARIANT_FALSE);
}
else
{
iTunes->put_VisualsEnabled(VARIANT_TRUE);
}
break;
}
case COMMAND_SOUNDVOLUMEUP:
{
long volume;
iTunes->get_SoundVolume(&volume);
volume += VOLUME_STEP;
(volume > 100) ? volume = 100 : 0;
iTunes->put_SoundVolume(volume);
break;
}
case COMMAND_SOUNDVOLUMEDOWN:
{
long volume;
iTunes->get_SoundVolume(&volume);
volume -= VOLUME_STEP;
(volume < 0) ? volume = 0 : 0;
iTunes->put_SoundVolume(volume);
break;
}
// Player Controls
case COMMAND_BACKTRACK:
iTunes->BackTrack();
break;
case COMMAND_FASTFORWARD:
iTunes->FastForward();
break;
case COMMAND_NEXTTRACK:
iTunes->NextTrack();
break;
case COMMAND_PAUSE:
iTunes->Pause();
break;
case COMMAND_PLAY:
iTunes->Pause();
iTunes->Play();
break;
case COMMAND_PLAYFILE:
//TODO:
break;
case COMMAND_PLAYPAUSE:
iTunes->PlayPause();
break;
case COMMAND_PREVIOUSTRACK:
iTunes->PreviousTrack();
break;
case COMMAND_RESUME:
iTunes->Resume();
break;
case COMMAND_REWIND:
iTunes->Rewind();
break;
case COMMAND_STOP:
iTunes->Stop();
break;
case COMMAND_GETPLAYERBUTTONSSTATE:
//TODO:
break;
case COMMAND_PLAYERBUTTONCLICKED:
//TODO:
break;
// Conversion Methods
case COMMAND_CONVERTFILE:
//TODO:
break;
case COMMAND_CONVERTFILES:
//TODO:
break;
case COMMAND_TRACK:
//TODO:
break;
case COMMAND_TRACKS:
//TODO:
break;
case COMMAND_FILE2:
//TODO:
break;
case COMMAND_FILES2:
//TODO:
break;
case COMMAND_TRACK2:
//TODO:
break;
case COMMAND_TRACKS2:
//TODO:
break;
// Miscellaneous Methods
case COMMAND_CHECKVERSION:
//TODO:
break;
case COMMAND_GETITOBJECTBYID:
//TODO:
break;
case COMMAND_CREATEPLAYLIST:
//TODO:
break;
case COMMAND_OPENURL:
//TODO:
break;
case COMMAND_GOTOMUSICSTOREHOMEPAGE:
iTunes->GotoMusicStoreHomePage();
break;
case COMMAND_UPDATEIPOD:
iTunes->UpdateIPod();
break;
case COMMAND_QUIT:
iTunes->Quit();
break;
case COMMAND_CREATEEQPRESET:
//TODO:
break;
case COMMAND_CREATEPLAYLISTINSOURCE:
//TODO:
break;
case COMMAND_SUBSCRIBETOPODCAST:
//TODO:
break;
case COMMAND_UPDATEPODCASTFEEDS:
iTunes->UpdatePodcastFeeds();
break;
case COMMAND_CREATEFOLDER:
//TODO:
break;
case COMMAND_CREATEFOLDERINSOURCE:
//TODO:
break;
case COMMAND_GETITOBJECTPERSISTENTIDS:
//TODO:
break;
}
}
/*
If the measure needs to free resources before quitting.
The plugin can export Finalize function, which is called
when Rainmeter quits (or refreshes).
*/
void Finalize(HMODULE instance, UINT id)
{
if (InstanceCreated)
{
iTunes.Release();
InstanceCreated = false;
}
}
UINT GetPluginVersion()
{
return 0001;
}
LPCTSTR GetPluginAuthor()
{
return L"Elestel";
}

View File

@ -77,10 +77,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginRecycleManager", "Plu
{BE9D2400-7F1C-49D6-8498-5CE495491AD6} = {BE9D2400-7F1C-49D6-8498-5CE495491AD6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}"
ProjectSection(ProjectDependencies) = postProject
{BE9D2400-7F1C-49D6-8498-5CE495491AD6} = {BE9D2400-7F1C-49D6-8498-5CE495491AD6}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release 64|Win32 = Release 64|Win32
Release 64|x64 = Release 64|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release64|Win32 = Release64|Win32
@ -90,6 +97,9 @@ Global
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|Win32.ActiveCfg = Debug|Win32
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|Win32.Build.0 = Debug|Win32
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|x64.ActiveCfg = Debug|Win32
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release 64|Win32.ActiveCfg = Release|x64
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release 64|x64.ActiveCfg = Release|x64
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release 64|x64.Build.0 = Release|x64
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|Win32.ActiveCfg = Release|Win32
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|Win32.Build.0 = Release|Win32
{D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|x64.ActiveCfg = Release|Win32
@ -101,6 +111,9 @@ Global
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release 64|Win32.ActiveCfg = Release64|x64
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release 64|x64.ActiveCfg = Release64|x64
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release 64|x64.Build.0 = Release64|x64
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32
{BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64
@ -112,6 +125,9 @@ Global
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|Win32
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release 64|Win32.ActiveCfg = Release|x64
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release 64|x64.ActiveCfg = Release|x64
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release 64|x64.Build.0 = Release|x64
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32
{EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|Win32
@ -122,6 +138,9 @@ Global
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Debug|Win32.ActiveCfg = Debug|Win32
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Debug|Win32.Build.0 = Debug|Win32
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Debug|x64.ActiveCfg = Debug|Win32
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release 64|Win32.ActiveCfg = Release64|x64
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release 64|x64.ActiveCfg = Release64|x64
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release 64|x64.Build.0 = Release64|x64
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release|Win32.ActiveCfg = Release|Win32
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release|Win32.Build.0 = Release|Win32
{761BAD94-EA54-4DBD-9FF0-50FDAFECBE93}.Release|x64.ActiveCfg = Release|Win32
@ -131,6 +150,9 @@ Global
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Debug|Win32.ActiveCfg = Debug|Win32
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Debug|Win32.Build.0 = Debug|Win32
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Debug|x64.ActiveCfg = Debug|Win32
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release 64|Win32.ActiveCfg = Release64|x64
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release 64|x64.ActiveCfg = Release64|x64
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release 64|x64.Build.0 = Release64|x64
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release|Win32.ActiveCfg = Release|Win32
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release|Win32.Build.0 = Release|Win32
{BCE0E543-7ADC-4E10-AD66-52E90F70ED4A}.Release|x64.ActiveCfg = Release|Win32
@ -141,6 +163,9 @@ Global
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|Win32
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release 64|Win32.ActiveCfg = Release|x64
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release 64|x64.ActiveCfg = Release|x64
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release 64|x64.Build.0 = Release|x64
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32
{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|Win32
@ -151,6 +176,9 @@ Global
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|Win32
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release 64|Win32.ActiveCfg = Release|x64
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release 64|x64.ActiveCfg = Release|x64
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release 64|x64.Build.0 = Release|x64
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32
{C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|Win32
@ -161,6 +189,9 @@ Global
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|Win32
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release 64|Win32.ActiveCfg = Release64|x64
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release 64|x64.ActiveCfg = Release64|x64
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release 64|x64.Build.0 = Release64|x64
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32
{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|Win32
@ -171,6 +202,9 @@ Global
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|Win32
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release 64|Win32.ActiveCfg = Release|x64
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release 64|x64.ActiveCfg = Release|x64
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release 64|x64.Build.0 = Release|x64
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32
{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|Win32
@ -181,6 +215,9 @@ Global
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|Win32
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release 64|Win32.ActiveCfg = Release|x64
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release 64|x64.ActiveCfg = Release|x64
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release 64|x64.Build.0 = Release|x64
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32
{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|Win32
@ -191,6 +228,9 @@ Global
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|Win32
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release 64|Win32.ActiveCfg = Release64|x64
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release 64|x64.ActiveCfg = Release64|x64
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release 64|x64.Build.0 = Release64|x64
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32
{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|Win32
@ -201,6 +241,9 @@ Global
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|Win32
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release 64|Win32.ActiveCfg = Release64|x64
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release 64|x64.ActiveCfg = Release64|x64
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release 64|x64.Build.0 = Release64|x64
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32
{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|Win32
@ -211,6 +254,9 @@ Global
{8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32
{8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32
{8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|Win32
{8B820B9F-C154-417C-A090-42198F2AF496}.Release 64|Win32.ActiveCfg = Release64|x64
{8B820B9F-C154-417C-A090-42198F2AF496}.Release 64|x64.ActiveCfg = Release64|x64
{8B820B9F-C154-417C-A090-42198F2AF496}.Release 64|x64.Build.0 = Release64|x64
{8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32
{8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32
{8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|Win32
@ -221,6 +267,9 @@ Global
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|Win32
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release 64|Win32.ActiveCfg = Release|x64
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release 64|x64.ActiveCfg = Release|x64
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release 64|x64.Build.0 = Release|x64
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32
{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|Win32
@ -231,6 +280,9 @@ Global
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Debug|Win32.ActiveCfg = Debug|Win32
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Debug|Win32.Build.0 = Debug|Win32
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Debug|x64.ActiveCfg = Debug|Win32
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release 64|Win32.ActiveCfg = Release|x64
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release 64|x64.ActiveCfg = Release|x64
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release 64|x64.Build.0 = Release|x64
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release|Win32.ActiveCfg = Release|Win32
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release|Win32.Build.0 = Release|Win32
{BEB03F9B-FDC4-4DD4-B315-E3414DB0B137}.Release|x64.ActiveCfg = Release|Win32
@ -241,6 +293,9 @@ Global
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release 64|Win32.ActiveCfg = Release|x64
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release 64|x64.ActiveCfg = Release|x64
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release 64|x64.Build.0 = Release|x64
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|Win32
@ -248,6 +303,18 @@ Global
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release64|Win32.Build.0 = Release64|Win32
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release64|x64.ActiveCfg = Release64|x64
{4F8C4C09-431C-45C4-830B-32006E783C3A}.Release64|x64.Build.0 = Release64|x64
{A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release 64|Win32.ActiveCfg = Release64|x64
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release 64|x64.ActiveCfg = Release64|x64
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release 64|x64.Build.0 = Release64|x64
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release64|Win32.ActiveCfg = Release64|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release64|Win32.Build.0 = Release64|Win32
{A2DD3CBE-B140-4892-A875-24107FA52518}.Release64|x64.ActiveCfg = Release64|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -1,2 +1,2 @@
#pragma once
const int revision_number = 104;
const int revision_number = 113;