Skip to content
This repository
  • 2 commits
  • 7 files changed
  • 0 comments
  • 1 contributor
466  DisplayCast.sln
... ...
@@ -1,219 +1,247 @@
1  
-
2  
-Microsoft Visual Studio Solution File, Format Version 11.00
3  
-# Visual Studio 2010
4  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Player", "Player\Player.csproj", "{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}"
5  
-	ProjectSection(ProjectDependencies) = postProject
6  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
7  
-	EndProjectSection
8  
-EndProject
9  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Streamer", "Streamer\Streamer.csproj", "{3E6E103B-6645-4150-A1B2-00093DE12F1F}"
10  
-	ProjectSection(ProjectDependencies) = postProject
11  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
12  
-	EndProjectSection
13  
-EndProject
14  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Location", "Location\Location\Location.csproj", "{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}"
15  
-EndProject
16  
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "DisplayCast Installer", "DisplayCastInstaller\DisplayCastInstaller.vdproj", "{82C068A9-FDAC-474E-B59C-26A85D8B9866}"
17  
-	ProjectSection(ProjectDependencies) = postProject
18  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
19  
-	EndProjectSection
20  
-EndProject
21  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{7C03A308-2C6B-489F-A009-AE224B92FE26}"
22  
-EndProject
23  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControllerService", "ControllerService\ControllerService.csproj", "{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}"
24  
-EndProject
25  
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ControllerService Installer", "ControllerServiceInstaller\ControllerServiceInstaller.vdproj", "{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}"
26  
-EndProject
27  
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZeroconfService", "ZeroconfService\ZeroconfService.csproj", "{DF49DC31-7E4D-44C2-8E35-51E61762265A}"
28  
-EndProject
29  
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{9D48B144-1846-40CE-B5D3-9DDE042EFCBE}"
30  
-	ProjectSection(SolutionItems) = preProject
31  
-		Control Service API.txt = Control Service API.txt
32  
-		README.txt = README.txt
33  
-	EndProjectSection
34  
-EndProject
35  
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sources", "Sources", "{C89471C4-18E9-4393-A07A-B69A195D5B46}"
36  
-EndProject
37  
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installers", "Installers", "{B3B73C61-7DDC-4AA0-9C8C-63348D743447}"
38  
-EndProject
39  
-Global
40  
-	GlobalSection(SubversionScc) = preSolution
41  
-		Svn-Managed = True
42  
-		Manager = AnkhSVN - Subversion Support for Visual Studio
43  
-	EndGlobalSection
44  
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
45  
-		CD_ROM|Any CPU = CD_ROM|Any CPU
46  
-		CD_ROM|Mixed Platforms = CD_ROM|Mixed Platforms
47  
-		CD_ROM|x86 = CD_ROM|x86
48  
-		Debug|Any CPU = Debug|Any CPU
49  
-		Debug|Mixed Platforms = Debug|Mixed Platforms
50  
-		Debug|x86 = Debug|x86
51  
-		DVD-5|Any CPU = DVD-5|Any CPU
52  
-		DVD-5|Mixed Platforms = DVD-5|Mixed Platforms
53  
-		DVD-5|x86 = DVD-5|x86
54  
-		Release|Any CPU = Release|Any CPU
55  
-		Release|Mixed Platforms = Release|Mixed Platforms
56  
-		Release|x86 = Release|x86
57  
-		SingleImage|Any CPU = SingleImage|Any CPU
58  
-		SingleImage|Mixed Platforms = SingleImage|Mixed Platforms
59  
-		SingleImage|x86 = SingleImage|x86
60  
-		Description = FXPal DisplayCast project
61  
-	EndGlobalSection
62  
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
63  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
64  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
65  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|x86.ActiveCfg = Release|Any CPU
66  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
67  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
68  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|x86.ActiveCfg = Debug|Any CPU
69  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|x86.Build.0 = Debug|Any CPU
70  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
71  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
72  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|x86.ActiveCfg = Debug|Any CPU
73  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
74  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
75  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|x86.ActiveCfg = Debug|Any CPU
76  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|x86.Build.0 = Debug|Any CPU
77  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
78  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
79  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|x86.ActiveCfg = Release|Any CPU
80  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
81  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
82  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|x86.ActiveCfg = Release|Any CPU
83  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|Any CPU.ActiveCfg = Release|x86
84  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
85  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|x86.ActiveCfg = Debug|x86
86  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|x86.Build.0 = Debug|x86
87  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
88  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
89  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|x86.ActiveCfg = Debug|Any CPU
90  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|Any CPU.ActiveCfg = Release|x86
91  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|Mixed Platforms.ActiveCfg = Release|x86
92  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|x86.ActiveCfg = Debug|x86
93  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|x86.Build.0 = Debug|x86
94  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
95  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
96  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|x86.ActiveCfg = Release|Any CPU
97  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
98  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
99  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|x86.ActiveCfg = Release|Any CPU
100  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
102  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|x86.ActiveCfg = Debug|Any CPU
103  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|x86.Build.0 = Debug|Any CPU
104  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
105  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
106  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|x86.ActiveCfg = Debug|Any CPU
107  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|Any CPU.ActiveCfg = Release|Any CPU
108  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
109  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|x86.ActiveCfg = Release|Any CPU
110  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|x86.Build.0 = Release|Any CPU
111  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
112  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
113  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|x86.ActiveCfg = Release|Any CPU
114  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|Any CPU.ActiveCfg = Release
115  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|Mixed Platforms.ActiveCfg = Release
116  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|x86.ActiveCfg = Release
117  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|Any CPU.ActiveCfg = Debug
118  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|Mixed Platforms.ActiveCfg = Debug
119  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|x86.ActiveCfg = Debug
120  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|Any CPU.ActiveCfg = Debug
121  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|Mixed Platforms.ActiveCfg = Debug
122  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|x86.ActiveCfg = Debug
123  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|Any CPU.ActiveCfg = Release
124  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|Mixed Platforms.ActiveCfg = Release
125  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|x86.ActiveCfg = Release
126  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|Any CPU.ActiveCfg = Release
127  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|Mixed Platforms.ActiveCfg = Release
128  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|x86.ActiveCfg = Release
129  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
130  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
131  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|x86.ActiveCfg = Release|Any CPU
132  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
133  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
134  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|x86.ActiveCfg = Debug|Any CPU
135  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|x86.Build.0 = Debug|Any CPU
136  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
137  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
138  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|x86.ActiveCfg = Debug|Any CPU
139  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|Any CPU.ActiveCfg = Release|Any CPU
140  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
141  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|x86.ActiveCfg = Release|Any CPU
142  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|x86.Build.0 = Release|Any CPU
143  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
144  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
145  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|x86.ActiveCfg = Release|Any CPU
146  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|Any CPU.ActiveCfg = Release|x86
147  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x86
148  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|x86.ActiveCfg = Release|x86
149  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|Any CPU.ActiveCfg = Debug|x86
150  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
151  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|x86.ActiveCfg = Release|x86
152  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|x86.Build.0 = Release|x86
153  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|Any CPU.ActiveCfg = Debug|x86
154  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x86
155  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|x86.ActiveCfg = Debug|x86
156  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|Any CPU.ActiveCfg = Release|x86
157  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|Mixed Platforms.ActiveCfg = Release|x86
158  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|x86.ActiveCfg = Release|x86
159  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|x86.Build.0 = Release|x86
160  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|Any CPU.ActiveCfg = Release|x86
161  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|Mixed Platforms.ActiveCfg = Release|x86
162  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|x86.ActiveCfg = Release|x86
163  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|Any CPU.ActiveCfg = Release
164  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|Mixed Platforms.ActiveCfg = Release
165  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|x86.ActiveCfg = Release
166  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|Any CPU.ActiveCfg = Debug
167  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|Mixed Platforms.ActiveCfg = Debug
168  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|x86.ActiveCfg = Debug
169  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|Any CPU.ActiveCfg = Debug
170  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|Mixed Platforms.ActiveCfg = Debug
171  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|x86.ActiveCfg = Debug
172  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|Any CPU.ActiveCfg = Release
173  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|Mixed Platforms.ActiveCfg = Release
174  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|x86.ActiveCfg = Release
175  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|Any CPU.ActiveCfg = Release
176  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|Mixed Platforms.ActiveCfg = Release
177  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|x86.ActiveCfg = Release
178  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
179  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
180  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
181  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
182  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|x86.ActiveCfg = Release|Any CPU
183  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
184  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Any CPU.Build.0 = Debug|Any CPU
185  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
186  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
187  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|x86.ActiveCfg = Debug|Any CPU
188  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|x86.Build.0 = Debug|Any CPU
189  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
190  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
191  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
192  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
193  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|x86.ActiveCfg = Debug|Any CPU
194  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Any CPU.ActiveCfg = Release|Any CPU
195  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Any CPU.Build.0 = Release|Any CPU
196  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
197  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
198  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|x86.ActiveCfg = Release|Any CPU
199  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|x86.Build.0 = Release|Any CPU
200  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
201  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Any CPU.Build.0 = Release|Any CPU
202  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
203  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
204  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|x86.ActiveCfg = Release|Any CPU
205  
-	EndGlobalSection
206  
-	GlobalSection(SolutionProperties) = preSolution
207  
-		HideSolutionNode = FALSE
208  
-	EndGlobalSection
209  
-	GlobalSection(NestedProjects) = preSolution
210  
-		{3E6E103B-6645-4150-A1B2-00093DE12F1F} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
211  
-		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
212  
-		{7C03A308-2C6B-489F-A009-AE224B92FE26} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
213  
-		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
214  
-		{DF49DC31-7E4D-44C2-8E35-51E61762265A} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
215  
-		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
216  
-		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F} = {B3B73C61-7DDC-4AA0-9C8C-63348D743447}
217  
-		{82C068A9-FDAC-474E-B59C-26A85D8B9866} = {B3B73C61-7DDC-4AA0-9C8C-63348D743447}
218  
-	EndGlobalSection
219  
-EndGlobal
  1
+
  2
+Microsoft Visual Studio Solution File, Format Version 11.00
  3
+# Visual Studio 2010
  4
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Player", "Player\Player.csproj", "{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}"
  5
+	ProjectSection(ProjectDependencies) = postProject
  6
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
  7
+	EndProjectSection
  8
+EndProject
  9
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Streamer", "Streamer\Streamer.csproj", "{3E6E103B-6645-4150-A1B2-00093DE12F1F}"
  10
+	ProjectSection(ProjectDependencies) = postProject
  11
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
  12
+	EndProjectSection
  13
+EndProject
  14
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Location", "Location\Location\Location.csproj", "{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}"
  15
+EndProject
  16
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "DisplayCast Installer", "DisplayCastInstaller\DisplayCastInstaller.vdproj", "{82C068A9-FDAC-474E-B59C-26A85D8B9866}"
  17
+	ProjectSection(ProjectDependencies) = postProject
  18
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}
  19
+	EndProjectSection
  20
+EndProject
  21
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{7C03A308-2C6B-489F-A009-AE224B92FE26}"
  22
+EndProject
  23
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControllerService", "ControllerService\ControllerService.csproj", "{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}"
  24
+EndProject
  25
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ControllerService Installer", "ControllerServiceInstaller\ControllerServiceInstaller.vdproj", "{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}"
  26
+EndProject
  27
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZeroconfService", "ZeroconfService\ZeroconfService.csproj", "{DF49DC31-7E4D-44C2-8E35-51E61762265A}"
  28
+EndProject
  29
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{9D48B144-1846-40CE-B5D3-9DDE042EFCBE}"
  30
+	ProjectSection(SolutionItems) = preProject
  31
+		Control Service API.txt = Control Service API.txt
  32
+		README.txt = README.txt
  33
+	EndProjectSection
  34
+EndProject
  35
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sources", "Sources", "{C89471C4-18E9-4393-A07A-B69A195D5B46}"
  36
+EndProject
  37
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installers", "Installers", "{B3B73C61-7DDC-4AA0-9C8C-63348D743447}"
  38
+EndProject
  39
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Faunus", "Faunus\Faunus.csproj", "{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}"
  40
+EndProject
  41
+Global
  42
+	GlobalSection(SubversionScc) = preSolution
  43
+		Svn-Managed = True
  44
+		Manager = AnkhSVN - Subversion Support for Visual Studio
  45
+	EndGlobalSection
  46
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
  47
+		CD_ROM|Any CPU = CD_ROM|Any CPU
  48
+		CD_ROM|Mixed Platforms = CD_ROM|Mixed Platforms
  49
+		CD_ROM|x86 = CD_ROM|x86
  50
+		Debug|Any CPU = Debug|Any CPU
  51
+		Debug|Mixed Platforms = Debug|Mixed Platforms
  52
+		Debug|x86 = Debug|x86
  53
+		DVD-5|Any CPU = DVD-5|Any CPU
  54
+		DVD-5|Mixed Platforms = DVD-5|Mixed Platforms
  55
+		DVD-5|x86 = DVD-5|x86
  56
+		Release|Any CPU = Release|Any CPU
  57
+		Release|Mixed Platforms = Release|Mixed Platforms
  58
+		Release|x86 = Release|x86
  59
+		SingleImage|Any CPU = SingleImage|Any CPU
  60
+		SingleImage|Mixed Platforms = SingleImage|Mixed Platforms
  61
+		SingleImage|x86 = SingleImage|x86
  62
+		Description = FXPal DisplayCast project
  63
+	EndGlobalSection
  64
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
  65
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  66
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  67
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  68
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  69
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  70
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|x86.ActiveCfg = Debug|Any CPU
  71
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Debug|x86.Build.0 = Debug|Any CPU
  72
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  73
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  74
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  75
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
  76
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
  77
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|x86.ActiveCfg = Debug|Any CPU
  78
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.Release|x86.Build.0 = Debug|Any CPU
  79
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  80
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  81
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4}.SingleImage|x86.ActiveCfg = Release|Any CPU
  82
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  83
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  84
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  85
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|Any CPU.ActiveCfg = Release|x86
  86
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  87
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|x86.ActiveCfg = Debug|x86
  88
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Debug|x86.Build.0 = Debug|x86
  89
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  90
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  91
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  92
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|Any CPU.ActiveCfg = Release|x86
  93
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|Mixed Platforms.ActiveCfg = Release|x86
  94
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|x86.ActiveCfg = Debug|x86
  95
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.Release|x86.Build.0 = Debug|x86
  96
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  97
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  98
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F}.SingleImage|x86.ActiveCfg = Release|Any CPU
  99
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  100
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  101
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  102
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  103
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  104
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|x86.ActiveCfg = Debug|Any CPU
  105
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Debug|x86.Build.0 = Debug|Any CPU
  106
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  107
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  108
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  109
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|Any CPU.ActiveCfg = Release|Any CPU
  110
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
  111
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|x86.ActiveCfg = Release|Any CPU
  112
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.Release|x86.Build.0 = Release|Any CPU
  113
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  114
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  115
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E}.SingleImage|x86.ActiveCfg = Release|Any CPU
  116
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|Any CPU.ActiveCfg = Release
  117
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|Mixed Platforms.ActiveCfg = Release
  118
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.CD_ROM|x86.ActiveCfg = Release
  119
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|Any CPU.ActiveCfg = Debug
  120
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|Mixed Platforms.ActiveCfg = Debug
  121
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Debug|x86.ActiveCfg = Debug
  122
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|Any CPU.ActiveCfg = Debug
  123
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|Mixed Platforms.ActiveCfg = Debug
  124
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.DVD-5|x86.ActiveCfg = Debug
  125
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|Any CPU.ActiveCfg = Release
  126
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|Mixed Platforms.ActiveCfg = Release
  127
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.Release|x86.ActiveCfg = Release
  128
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|Any CPU.ActiveCfg = Release
  129
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|Mixed Platforms.ActiveCfg = Release
  130
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866}.SingleImage|x86.ActiveCfg = Release
  131
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  132
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  133
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  134
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  135
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  136
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|x86.ActiveCfg = Debug|Any CPU
  137
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Debug|x86.Build.0 = Debug|Any CPU
  138
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  139
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  140
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  141
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|Any CPU.ActiveCfg = Release|Any CPU
  142
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
  143
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|x86.ActiveCfg = Release|Any CPU
  144
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.Release|x86.Build.0 = Release|Any CPU
  145
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  146
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  147
+		{7C03A308-2C6B-489F-A009-AE224B92FE26}.SingleImage|x86.ActiveCfg = Release|Any CPU
  148
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|Any CPU.ActiveCfg = Release|x86
  149
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x86
  150
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.CD_ROM|x86.ActiveCfg = Release|x86
  151
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|Any CPU.ActiveCfg = Debug|x86
  152
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
  153
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|x86.ActiveCfg = Release|x86
  154
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Debug|x86.Build.0 = Release|x86
  155
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|Any CPU.ActiveCfg = Debug|x86
  156
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x86
  157
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.DVD-5|x86.ActiveCfg = Debug|x86
  158
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|Any CPU.ActiveCfg = Release|x86
  159
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|Mixed Platforms.ActiveCfg = Release|x86
  160
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|x86.ActiveCfg = Release|x86
  161
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.Release|x86.Build.0 = Release|x86
  162
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|Any CPU.ActiveCfg = Release|x86
  163
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|Mixed Platforms.ActiveCfg = Release|x86
  164
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219}.SingleImage|x86.ActiveCfg = Release|x86
  165
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|Any CPU.ActiveCfg = Release
  166
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|Mixed Platforms.ActiveCfg = Release
  167
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.CD_ROM|x86.ActiveCfg = Release
  168
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|Any CPU.ActiveCfg = Debug
  169
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|Mixed Platforms.ActiveCfg = Debug
  170
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Debug|x86.ActiveCfg = Debug
  171
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|Any CPU.ActiveCfg = Debug
  172
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|Mixed Platforms.ActiveCfg = Debug
  173
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.DVD-5|x86.ActiveCfg = Debug
  174
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|Any CPU.ActiveCfg = Release
  175
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|Mixed Platforms.ActiveCfg = Release
  176
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.Release|x86.ActiveCfg = Release
  177
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|Any CPU.ActiveCfg = Release
  178
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|Mixed Platforms.ActiveCfg = Release
  179
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F}.SingleImage|x86.ActiveCfg = Release
  180
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  181
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
  182
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  183
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
  184
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  185
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  186
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Any CPU.Build.0 = Debug|Any CPU
  187
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  188
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
  189
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|x86.ActiveCfg = Debug|Any CPU
  190
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Debug|x86.Build.0 = Debug|Any CPU
  191
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  192
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
  193
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  194
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
  195
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  196
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Any CPU.ActiveCfg = Release|Any CPU
  197
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Any CPU.Build.0 = Release|Any CPU
  198
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
  199
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
  200
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|x86.ActiveCfg = Release|Any CPU
  201
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.Release|x86.Build.0 = Release|Any CPU
  202
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  203
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Any CPU.Build.0 = Release|Any CPU
  204
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  205
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
  206
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A}.SingleImage|x86.ActiveCfg = Release|Any CPU
  207
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
  208
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
  209
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
  210
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
  211
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.CD_ROM|x86.ActiveCfg = Release|Any CPU
  212
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  213
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
  214
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
  215
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
  216
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Debug|x86.ActiveCfg = Debug|Any CPU
  217
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
  218
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
  219
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
  220
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
  221
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.DVD-5|x86.ActiveCfg = Debug|Any CPU
  222
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
  223
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Release|Any CPU.Build.0 = Release|Any CPU
  224
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
  225
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
  226
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.Release|x86.ActiveCfg = Release|Any CPU
  227
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
  228
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.SingleImage|Any CPU.Build.0 = Release|Any CPU
  229
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
  230
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
  231
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}.SingleImage|x86.ActiveCfg = Release|Any CPU
  232
+	EndGlobalSection
  233
+	GlobalSection(SolutionProperties) = preSolution
  234
+		HideSolutionNode = FALSE
  235
+	EndGlobalSection
  236
+	GlobalSection(NestedProjects) = preSolution
  237
+		{3E6E103B-6645-4150-A1B2-00093DE12F1F} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  238
+		{E50ACD1B-9EC0-4351-AE7C-EBCDF4C2860E} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  239
+		{7C03A308-2C6B-489F-A009-AE224B92FE26} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  240
+		{DEAB3158-3B56-4E30-BC9D-D17BE2DBB219} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  241
+		{DF49DC31-7E4D-44C2-8E35-51E61762265A} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  242
+		{DE8DB97E-37A3-43ED-9A5E-CCC5F6DE9CB4} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  243
+		{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5} = {C89471C4-18E9-4393-A07A-B69A195D5B46}
  244
+		{286EE4C5-D1E4-4ED1-B81B-E5CC6CCD677F} = {B3B73C61-7DDC-4AA0-9C8C-63348D743447}
  245
+		{82C068A9-FDAC-474E-B59C-26A85D8B9866} = {B3B73C61-7DDC-4AA0-9C8C-63348D743447}
  246
+	EndGlobalSection
  247
+EndGlobal
BIN  DisplayCast.suo
Binary file not shown
33  DisplayCastInstaller/DisplayCastInstaller.vdproj
@@ -34,13 +34,13 @@
34 34
         "Entry"
35 35
         {
36 36
         "MsmKey" = "8:_2FF2114F325EC3F04D0AE88813BBD336"
37  
-        "OwnerKey" = "8:_8C042D5BCF8946618654A0D82BA97746"
  37
+        "OwnerKey" = "8:_AC6EC1B377084B378AF3F12CC949AF1F"
38 38
         "MsmSig" = "8:_UNDEFINED"
39 39
         }
40 40
         "Entry"
41 41
         {
42 42
         "MsmKey" = "8:_2FF2114F325EC3F04D0AE88813BBD336"
43  
-        "OwnerKey" = "8:_AC6EC1B377084B378AF3F12CC949AF1F"
  43
+        "OwnerKey" = "8:_8C042D5BCF8946618654A0D82BA97746"
44 44
         "MsmSig" = "8:_UNDEFINED"
45 45
         }
46 46
         "Entry"
@@ -148,25 +148,25 @@
148 148
         "Entry"
149 149
         {
150 150
         "MsmKey" = "8:_UNDEFINED"
151  
-        "OwnerKey" = "8:_0F9AAA1AA70B4CFC994F7CBFCCE04C53"
  151
+        "OwnerKey" = "8:_AC6EC1B377084B378AF3F12CC949AF1F"
152 152
         "MsmSig" = "8:_UNDEFINED"
153 153
         }
154 154
         "Entry"
155 155
         {
156 156
         "MsmKey" = "8:_UNDEFINED"
157  
-        "OwnerKey" = "8:_997A48C274F6757E2595B2C159B470BD"
  157
+        "OwnerKey" = "8:_A8A2DE4099F84D639DC9BA8C737E1163"
158 158
         "MsmSig" = "8:_UNDEFINED"
159 159
         }
160 160
         "Entry"
161 161
         {
162 162
         "MsmKey" = "8:_UNDEFINED"
163  
-        "OwnerKey" = "8:_DE526A39CEEDB0E3CA51AA5930EBD1F7"
  163
+        "OwnerKey" = "8:_8C042D5BCF8946618654A0D82BA97746"
164 164
         "MsmSig" = "8:_UNDEFINED"
165 165
         }
166 166
         "Entry"
167 167
         {
168 168
         "MsmKey" = "8:_UNDEFINED"
169  
-        "OwnerKey" = "8:_7565FE54D709CBC886ABD8DC245DF76F"
  169
+        "OwnerKey" = "8:_2FF2114F325EC3F04D0AE88813BBD336"
170 170
         "MsmSig" = "8:_UNDEFINED"
171 171
         }
172 172
         "Entry"
@@ -178,25 +178,25 @@
178 178
         "Entry"
179 179
         {
180 180
         "MsmKey" = "8:_UNDEFINED"
181  
-        "OwnerKey" = "8:_2FF2114F325EC3F04D0AE88813BBD336"
  181
+        "OwnerKey" = "8:_7565FE54D709CBC886ABD8DC245DF76F"
182 182
         "MsmSig" = "8:_UNDEFINED"
183 183
         }
184 184
         "Entry"
185 185
         {
186 186
         "MsmKey" = "8:_UNDEFINED"
187  
-        "OwnerKey" = "8:_8C042D5BCF8946618654A0D82BA97746"
  187
+        "OwnerKey" = "8:_DE526A39CEEDB0E3CA51AA5930EBD1F7"
188 188
         "MsmSig" = "8:_UNDEFINED"
189 189
         }
190 190
         "Entry"
191 191
         {
192 192
         "MsmKey" = "8:_UNDEFINED"
193  
-        "OwnerKey" = "8:_A8A2DE4099F84D639DC9BA8C737E1163"
  193
+        "OwnerKey" = "8:_997A48C274F6757E2595B2C159B470BD"
194 194
         "MsmSig" = "8:_UNDEFINED"
195 195
         }
196 196
         "Entry"
197 197
         {
198 198
         "MsmKey" = "8:_UNDEFINED"
199  
-        "OwnerKey" = "8:_AC6EC1B377084B378AF3F12CC949AF1F"
  199
+        "OwnerKey" = "8:_0F9AAA1AA70B4CFC994F7CBFCCE04C53"
200 200
         "MsmSig" = "8:_UNDEFINED"
201 201
         }
202 202
     }
@@ -420,9 +420,14 @@
420 420
             {
421 421
             "AssemblyRegister" = "3:1"
422 422
             "AssemblyIsInGAC" = "11:FALSE"
423  
-            "AssemblyAsmDisplayName" = "8:InTheHand.Net.Personal, Version=3.4.429.0, Culture=neutral, PublicKeyToken=ea38caa273134499, processorArchitecture=MSIL"
  423
+            "AssemblyAsmDisplayName" = "8:InTheHand.Net.Personal, Version=3.5.605.0, Culture=neutral, PublicKeyToken=ea38caa273134499, processorArchitecture=MSIL"
424 424
                 "ScatterAssemblies"
425 425
                 {
  426
+                    "_997A48C274F6757E2595B2C159B470BD"
  427
+                    {
  428
+                    "Name" = "8:InTheHand.Net.Personal.dll"
  429
+                    "Attributes" = "3:512"
  430
+                    }
426 431
                 }
427 432
             "SourcePath" = "8:InTheHand.Net.Personal.dll"
428 433
             "TargetName" = "8:"
@@ -687,15 +692,15 @@
687 692
         {
688 693
         "Name" = "8:Microsoft Visual Studio"
689 694
         "ProductName" = "8:DisplayCast"
690  
-        "ProductCode" = "8:{D3F44633-058A-44EB-B645-E53EB895C188}"
691  
-        "PackageCode" = "8:{8350C7D8-ECAB-483F-8442-A517A89DE631}"
  695
+        "ProductCode" = "8:{6D43A909-53AC-4242-8556-786EDABA00EE}"
  696
+        "PackageCode" = "8:{870F3D56-96CD-48D0-887B-48EB918868EF}"
692 697
         "UpgradeCode" = "8:{C630DE41-3538-4262-8025-4ECA149437F1}"
693 698
         "AspNetVersion" = "8:4.0.30319.0"
694 699
         "RestartWWWService" = "11:FALSE"
695 700
         "RemovePreviousVersions" = "11:TRUE"
696 701
         "DetectNewerInstalledVersion" = "11:TRUE"
697 702
         "InstallAllUsers" = "11:TRUE"
698  
-        "ProductVersion" = "8:1.1.5"
  703
+        "ProductVersion" = "8:1.1.6"
699 704
         "Manufacturer" = "8:FX Palo Alto Laboratory Inc."
700 705
         "ARPHELPTELEPHONE" = "8:"
701 706
         "ARPHELPLINK" = "8:http://www.fxpal.com/?p=DisplayCast"
9  Faunus/Faunus.cs
... ...
@@ -0,0 +1,9 @@
  1
+using System;
  2
+using System.Collections.Generic;
  3
+using System.Linq;
  4
+using System.Text;
  5
+
  6
+namespace Faunus {
  7
+    public class Faunus {
  8
+    }
  9
+}
54  Faunus/Faunus.csproj
... ...
@@ -0,0 +1,54 @@
  1
+<?xml version="1.0" encoding="utf-8"?>
  2
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3
+  <PropertyGroup>
  4
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  5
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  6
+    <ProductVersion>8.0.30703</ProductVersion>
  7
+    <SchemaVersion>2.0</SchemaVersion>
  8
+    <ProjectGuid>{D7867AEE-95D3-4C53-A43B-977DE4F8D6F5}</ProjectGuid>
  9
+    <OutputType>Library</OutputType>
  10
+    <AppDesignerFolder>Properties</AppDesignerFolder>
  11
+    <RootNamespace>Faunus</RootNamespace>
  12
+    <AssemblyName>Faunus</AssemblyName>
  13
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  14
+    <FileAlignment>512</FileAlignment>
  15
+  </PropertyGroup>
  16
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  17
+    <DebugSymbols>true</DebugSymbols>
  18
+    <DebugType>full</DebugType>
  19
+    <Optimize>false</Optimize>
  20
+    <OutputPath>bin\Debug\</OutputPath>
  21
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
  22
+    <ErrorReport>prompt</ErrorReport>
  23
+    <WarningLevel>4</WarningLevel>
  24
+  </PropertyGroup>
  25
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  26
+    <DebugType>pdbonly</DebugType>
  27
+    <Optimize>true</Optimize>
  28
+    <OutputPath>bin\Release\</OutputPath>
  29
+    <DefineConstants>TRACE</DefineConstants>
  30
+    <ErrorReport>prompt</ErrorReport>
  31
+    <WarningLevel>4</WarningLevel>
  32
+  </PropertyGroup>
  33
+  <ItemGroup>
  34
+    <Reference Include="System" />
  35
+    <Reference Include="System.Core" />
  36
+    <Reference Include="System.Xml.Linq" />
  37
+    <Reference Include="System.Data.DataSetExtensions" />
  38
+    <Reference Include="Microsoft.CSharp" />
  39
+    <Reference Include="System.Data" />
  40
+    <Reference Include="System.Xml" />
  41
+  </ItemGroup>
  42
+  <ItemGroup>
  43
+    <Compile Include="Faunus.cs" />
  44
+    <Compile Include="Properties\AssemblyInfo.cs" />
  45
+  </ItemGroup>
  46
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  47
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
  48
+       Other similar extension points exist, see Microsoft.Common.targets.
  49
+  <Target Name="BeforeBuild">
  50
+  </Target>
  51
+  <Target Name="AfterBuild">
  52
+  </Target>
  53
+  -->
  54
+</Project>
36  Faunus/Properties/AssemblyInfo.cs
... ...
@@ -0,0 +1,36 @@
  1
+using System.Reflection;
  2
+using System.Runtime.CompilerServices;
  3
+using System.Runtime.InteropServices;
  4
+
  5
+// General Information about an assembly is controlled through the following 
  6
+// set of attributes. Change these attribute values to modify the information
  7
+// associated with an assembly.
  8
+[assembly: AssemblyTitle("Faunus")]
  9
+[assembly: AssemblyDescription("")]
  10
+[assembly: AssemblyConfiguration("")]
  11
+[assembly: AssemblyCompany("")]
  12
+[assembly: AssemblyProduct("Faunus")]
  13
+[assembly: AssemblyCopyright("Copyright ©  2012")]
  14
+[assembly: AssemblyTrademark("")]
  15
+[assembly: AssemblyCulture("")]
  16
+
  17
+// Setting ComVisible to false makes the types in this assembly not visible 
  18
+// to COM components.  If you need to access a type in this assembly from 
  19
+// COM, set the ComVisible attribute to true on that type.
  20
+[assembly: ComVisible(false)]
  21
+
  22
+// The following GUID is for the ID of the typelib if this project is exposed to COM
  23
+[assembly: Guid("ad5a5429-11ac-4eb9-997f-01e1870be17c")]
  24
+
  25
+// Version information for an assembly consists of the following four values:
  26
+//
  27
+//      Major Version
  28
+//      Minor Version 
  29
+//      Build Number
  30
+//      Revision
  31
+//
  32
+// You can specify all the values or you can default the Build and Revision Numbers 
  33
+// by using the '*' as shown below:
  34
+// [assembly: AssemblyVersion("1.0.*")]
  35
+[assembly: AssemblyVersion("1.0.0.0")]
  36
+[assembly: AssemblyFileVersion("1.0.0.0")]
1,445  Streamer/Console.cs
... ...
@@ -1,716 +1,729 @@
1  
-// Copyright (c) 2012, Fuji Xerox Co., Ltd.
2  
-// All rights reserved.
3  
-// Author: Surendar Chandra, FX Palo Alto Laboratory, Inc.
4  
-
5  
-using System;
6  
-using System.Threading;
7  
-using System.Collections;
8  
-using System.Diagnostics;
9  
-using System.Collections.Generic;
10  
-using System.ComponentModel;
11  
-using System.Data;
12  
-using System.Drawing;
13  
-using System.Drawing.Imaging;
14  
-using System.Text;
15  
-using System.Windows.Forms;
16  
-using System.Net;
17  
-using System.Net.Sockets;
18  
-using System.Runtime.InteropServices;
19  
-using System.IO;
20  
-using System.IO.Compression;
21  
-using System.Net.NetworkInformation;
22  
-using System.Resources;
23  
-using System.Reflection;
24  
-
25  
-using Microsoft.Win32;
26  
-using Microsoft.VisualBasic;
27  
-
28  
-using ZeroconfService;
29  
-#if USE_WIFI_LOCALIZATION
30  
-using Location;
31  
-using location;
32  
-#endif 
33  
-
34  
-using Mirror.Driver;
35  
-
36  
-#if USE_BLUETOOTH
37  
-using InTheHand.Net;
38  
-using InTheHand.Net.Sockets;
39  
-using InTheHand.Windows.Forms;
40  
-using InTheHand.Net.Bluetooth;
41  
-#endif
42  
-
43  
-namespace FXPAL.DisplayCast.Streamer {
44  
-    public partial class Console : Form {
45  
-        private NetService publishService;
46  
-        private Hashtable TXTrecords;
47  
-        private ContextMenu contextMenu;
48  
-        private NotifyIcon notifyIcon;
49  
-        private static MenuItem exitItem, changeNameItem, desktopItem, locationItem, aboutItem, playersItem, archiversItem;
50  
-        // private CheckBox location;
51  
-        // private ListView browserList;
52  
-        private int numPlayers = 0, numArchivers = 0;
53  
-        private String id;
54  
-
55  
-        private ArrayList resolvingNS = null;
56  
-
57  
-        #region Utility functions
58  
-        /// <summary>
59  
-        /// Gets the user configured name for a service from its TXTrecords
60  
-        /// </summary>
61  
-        /// <param name="service"></param>
62  
-        /// <returns></returns>
63  
-        private static String getName(NetService service) {
64  
-            String name = service.Name;
65  
-
66  
-            if (service.TXTRecordData != null) {
67  
-                byte[] txt = service.TXTRecordData;
68  
-                IDictionary dict = NetService.DictionaryFromTXTRecordData(txt);
69  
-
70  
-                if (dict != null) {
71  
-                    foreach (DictionaryEntry kvp in dict) {
72  
-                        String key = (String)kvp.Key;
73  
-
74  
-                        key = key.ToUpper();
75  
-                        if (key.Equals("NAME")) {
76  
-                            byte[] value = (byte[])kvp.Value;
77  
-                            try {
78  
-                                name = Encoding.UTF8.GetString(value);
79  
-                            } catch {
80  
-                            }
81  
-                            break;
82  
-                        }
83  
-                    }
84  
-                }
85  
-            }
86  
-
87  
-            return name;
88  
-        }
89  
-        #endregion
90  
-
91  
-        #region Bonjour browse routines to keep track of Players
92  
-        /// <summary>
93  
-        /// 
94  
-        /// </summary>
95  
-        /// <param name="browser"></param>
96  
-        /// <param name="service"></param>
97  
-        /// <param name="moreComing"></param>
98  
-        void nsBrowser_DidRemoveService(NetServiceBrowser browser, NetService service, bool moreComing) {
99  
-            MenuItem items;
100  
-            Boolean player = false;
101  
-
102  
-            if (service.Type.StartsWith(Shared.DisplayCastGlobals.PLAYER)) {
103  
-                items = playersItem;
104  
-                player = true;
105  
-            } else if (service.Type.StartsWith(Shared.DisplayCastGlobals.ARCHIVER))
106  
-                items = archiversItem;
107  
-            else
108  
-                return;
109  
-
110  
-            Trace.WriteLine("DEBUG: Removing service " + service.Name + " of type " + service.Type);
111  
-
112  
-            ArrayList itemsToRemove = new ArrayList();
113  
-            foreach (MenuItem item in items.MenuItems) {
114  
-                if (item == null)
115  
-                    continue;   // WTF?
116  
-
117  
-                NetService iService = (NetService)item.Tag;
118  
-
119  
-                if (resolvingNS.Contains(iService))
120  
-                    resolvingNS.Remove(iService);
121  
-
122  
-                // Check for the separator item
123  
-                if (iService == null)
124  
-                    continue;
125  
-
126  
-                if (iService.Name.Equals(service.Name)) {
127  
-                    itemsToRemove.Add(item);
128  
-                    // Dec 5, 2011
129  
-                    iService.StopMonitoring();
130  
-                    iService.Stop();
131  
-
132  
-                    if (player)
133  
-                        numPlayers--;
134  
-                    else
135  
-                        numArchivers--;
136  
-                }
137  
-            }
138  
-
139  
-            foreach (MenuItem item in itemsToRemove)
140  
-                items.MenuItems.Remove(item);
141  
-            itemsToRemove.Clear();
142  
-        }
143  
-
144  
-        /// <summary>
145  
-        /// 
146  
-        /// </summary>
147  
-        /// <param name="browser"></param>
148  
-        /// <param name="service"></param>
149  
-        /// <param name="moreComing"></param>
150  
-        void nsBrowser_DidFindService(NetServiceBrowser browser, NetService service, bool moreComing) {
151  
-            // Service found. Need to resolve it to find the name
152  
-
153  
-            if (resolvingNS == null)
154  
-                resolvingNS = new ArrayList();
155  
-            resolvingNS.Add(service);   // So that service is not garbage collected away
156  
-
157  
-            service.DidResolveService += new NetService.ServiceResolved(nsBrowser_DidResolveService);
158  
-            service.ResolveWithTimeout(5);
159  
-        }
160  
-
161  
-        /// <summary>
162  
-        /// 
163  
-        /// </summary>
164  
-        /// <param name="service"></param>
165  
-        void nsBrowser_DidUpdateTXT(NetService service) {
166  
-            // There might be duplicates and so go through the entire list
167  
-            // Trace.WriteLine("DEBUG: TXT updates " + service.Name);
168  
-            MenuItem items;
169  
-
170  
-            if (service.Type.StartsWith(Shared.DisplayCastGlobals.PLAYER))
171  
-                items = playersItem;
172  
-            else if (service.Type.StartsWith(Shared.DisplayCastGlobals.ARCHIVER))
173  
-                items = archiversItem;
174  
-            else
175  
-                return;
176  
-
177  
-            foreach (MenuItem item in items.MenuItems) {
178  
-                if (item == null)
179  
-                    continue;
180  
-
181  
-                NetService iService = (NetService)item.Tag;
182  
-
183  
-                // Check for the separator item
184  
-                if (iService == null)
185  
-                    continue;
186  
-
187  
-                if (iService.Name.Equals(service.Name))
188  
-                    // I suppose I can blindly replace the old text
189  
-                    item.Text = getName(service);
190  
-            }
191  
-        }
192  
-
193  
-        /// <summary>
194  
-        /// 
195  
-        /// </summary>
196  
-        /// <param name="service"></param>
197  
-        public void nsBrowser_DidResolveService(NetService service) {
198  
-            // Start monitoring to see whether the name changes
199  
-            service.DidUpdateTXT += new NetService.ServiceTXTUpdated(nsBrowser_DidUpdateTXT);
200  
-            service.StartMonitoring();
201  
-          
202  
-            MenuItem newElem = new System.Windows.Forms.MenuItem();
203  
-            newElem.Text = getName(service);
204  
-            newElem.Click += new System.EventHandler(selectPlayer);
205  
-            newElem.Select += new System.EventHandler(selectPlayer);
206  
-            newElem.Tag = service;
207  
-
208  
-            if (service.Type.StartsWith(Shared.DisplayCastGlobals.PLAYER)) {
209  
-                newElem.Index = numPlayers++;
210  
-                playersItem.MenuItems.Add(newElem);
211  
-            } else if (service.Type.StartsWith(Shared.DisplayCastGlobals.ARCHIVER)) {
212  
-                newElem.Index = numArchivers++;
213  
-                archiversItem.MenuItems.Add(newElem);
214  
-            }
215  
-        }
216  
-        #endregion
217  
-
218  
-#if USE_WIFI_LOCALIZATION
219  
-        #region Location disclosure support
220  
-        private static Boolean discloseLocation = false;
221  
-
222  
-        static QueryMSE MSE;
223  
-        static String myMac;
224  
-        static Thread locThread;
225  
-        static AesMobileStationLocation prevLoc = null;
226  
-        private String getWIFIMACAddress() {
227  
-            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
228  
-
229  
-            if (nics == null || nics.Length < 1)
230  
-                return null;
231  
-
232  
-            foreach (NetworkInterface adapter in nics) {
233  
-                if (adapter.NetworkInterfaceType != NetworkInterfaceType.Wireless80211)
234  
-                    continue;
235  
-
236  
-                if (adapter.Description.Contains("Virtual"))
237  
-                    continue;       // WTF - Displaycast desktop has a virtual WiFi adapter
238  
-
239  
-                PhysicalAddress address = adapter.GetPhysicalAddress();
240  
-                byte[] bytes = address.GetAddressBytes();
241  
-                if (bytes.Length <= 0)
242  
-                    continue;
243  
-
244  
-                String mac = "";
245  
-                for (int i = 0; i < bytes.Length; i++) {
246  
-                    mac += bytes[i].ToString("X2");
247  
-                    if (i != bytes.Length - 1)
248  
-                        mac += ":";
249  
-                }
250  
-                return (mac);
251  
-            }
252  
-
253  
-            return null;
254  
-        }
255  
-
256  
-        private void monitorMyLocation() {
257  
-            try {
258  
-                while (true) {
259  
-                    if (discloseLocation) {
260  
-                        Trace.WriteLine("DEBUG: Looking up location info..");
261  
-                        try {
262  
-                            MSE.login();
263  
-                            AesMobileStationLocation loc = MSE.queryMAC(myMac);
264  
-                            MSE.logout();
265  
-
266  
-                            if (loc != null) {
267  
-                                if ((prevLoc == null) || (prevLoc.x != loc.x) || (prevLoc.y != loc.y)) {
268  
-                                    TXTrecords.Add("locationID", "NOTIMPL" /* loc.x + " x " + loc.y */);
269  
-                                    publishService.setTXTRecordData(NetService.DataFromTXTRecordDictionary(TXTrecords));
270  
-
271  
-                                    Trace.WriteLine(" Mac: " + loc.macAddress + " Loc: " + loc.x + "x" + loc.y + " lastHeard " + loc.minLastHeardSecs + " conf " + loc.confidenceFactor);
272  
-                                    prevLoc = loc;
273  
-                                }
274  
-                            }
275  
-                        } catch (Exception e) {
276  
-                            Trace.WriteLine("DEBUG: Disclose location: " + e.StackTrace);
277  
-                        }
278  
-                    }
279  
-                    Thread.Sleep(5000);
280  
-                }
281  
-            } catch (Exception e) {
282  
-                Trace.WriteLine("Oops - " + e.Message);
283  
-            }
284  
-        }
285  
-        #endregion
286  
-#endif 
287  
-
288  
-        #region Event handlers
289  
-        /// <summary>
290  
-        /// 
291  
-        /// </summary>
292  
-        /// <param name="Sender"></param>
293  
-        /// <param name="e"></param>
294  
-        private void about(object Sender, EventArgs e) {
295  
-            // var result = MessageBox.Show("FXPAL DisplayCast Streamer (v " + Shared.DisplayCastGlobals.DISPLAYCAST_VERSION.ToString() + "))", "FXPAL DisplayCast Streamer", MessageBoxButtons.OK);
296  
-            AboutBox about = new AboutBox();
297  
-            about.ShowDialog();
298  
-        }
299  
-
300  
-        /// <summary>
301  
-        /// 
302  
-        /// </summary>
303  
-        /// <param name="Sender"></param>
304  
-        /// <param name="e"></param>
305  
-        private void notifyIcon_DoubleClick(object Sender, EventArgs e) {
306  
-            if (this.WindowState == FormWindowState.Minimized)
307  
-                this.WindowState = FormWindowState.Normal;
308  
-
309  
-            Activate();
310  
-        }
311  
-
312  
-#region Set Primary Display
313  
-        public const int DM_ORIENTATION = 0x00000001;
314  
-        public const int DM_PAPERSIZE = 0x00000002;
315  
-        public const int DM_PAPERLENGTH = 0x00000004;
316  
-        public const int DM_PAPERWIDTH = 0x00000008;
317  
-        public const int DM_SCALE = 0x00000010;
318  
-        public const int DM_POSITION = 0x00000020;
319  
-        public const int DM_NUP = 0x00000040;
320  
-        public const int DM_DISPLAYORIENTATION = 0x00000080;
321  
-        public const int DM_COPIES = 0x00000100;
322  
-        public const int DM_DEFAULTSOURCE = 0x00000200;
323  
-        public const int DM_PRINTQUALITY = 0x00000400;
324  
-        public const int DM_COLOR = 0x00000800;
325  
-        public const int DM_DUPLEX = 0x00001000;
326  
-        public const int DM_YRESOLUTION = 0x00002000;
327  
-        public const int DM_TTOPTION = 0x00004000;
328  
-        public const int DM_COLLATE = 0x00008000;
329  
-        public const int DM_FORMNAME = 0x00010000;
330  
-        public const int DM_LOGPIXELS = 0x00020000;
331  
-        public const int DM_BITSPERPEL = 0x00040000;
332  
-        public const int DM_PELSWIDTH = 0x00080000;
333  
-        public const int DM_PELSHEIGHT = 0x00100000;
334  
-        public const int DM_DISPLAYFLAGS = 0x00200000;
335  
-        public const int DM_DISPLAYFREQUENCY = 0x00400000;
336  
-        public const int DM_ICMMETHOD = 0x00800000;
337  
-        public const int DM_ICMINTENT = 0x01000000;
338  
-        public const int DM_MEDIATYPE = 0x02000000;
339  
-        public const int DM_DITHERTYPE = 0x04000000;
340  
-        public const int DM_PANNINGWIDTH = 0x08000000;
341  
-        public const int DM_PANNINGHEIGHT = 0x10000000;
342  
-        public const int DM_DISPLAYFIXEDOUTPUT = 0x20000000;
343  
-        public const int ENUM_CURRENT_SETTINGS = -1;
344  
-        public const int CDS_UPDATEREGISTRY = 0x01;
345  
-        public const int CDS_TEST = 0x02;
346  
-        public const int CDS_SET_PRIMARY = 0x00000010;
347  
-        public const long DISP_CHANGE_SUCCESSFUL = 0;
348  
-        public const long DISP_CHANGE_RESTART = 1;
349  
-        public const long DISP_CHANGE_FAILED = -1;
350  
-        public const long DISP_CHANGE_BADMODE = -2;
351  
-        public const long DISP_CHANGE_NOTUPDATED = -3;
352  
-        public const long DISP_CHANGE_BADFLAGS = -4;
353  
-        public const long DISP_CHANGE_BADPARAM = -5;
354  
-        public const long DISP_CHANGE_BADDUALVIEW = -6;
355  
-
356  
-        /// <summary>
357  
-        /// 
358  
-        /// </summary>
359  
-        /// <param name="screen"></param>
360  
-        private static void SetPrimary(Screen screen) {
361  
-        /*
362  
-            DISPLAY_DEVICE d = new DISPLAY_DEVICE();
363  
-            DEVMODE dm = new DEVMODE();
364  
-            d.cb = Marshal.SizeOf(d);
365  
-            uint deviceID = 1;
366  
-            User_32.EnumDisplayDevices(null, deviceID, ref  d, 0);
367  
-            User_32.EnumDisplaySettings(d.DeviceName, 0, ref dm);
368  
-            dm.dmPelsWidth = 2560;
369  
-            dm.dmPelsHeight = 1600;
370  
-            dm.dmPositionX = screen.Bounds.Right;
371  
-            dm.dmFields = DM_POSITION | DM_PELSWIDTH | DM_PELSHEIGHT;
372  
-            User_32.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, CDS_SET_PRIMARY, IntPtr.Zero);
373  
-         */
374  
-        }
375  
-
376  
-        /// <summary>
377  
-        /// 
378  
-        /// </summary>
379  
-        /// <param name="Sender"></param>
380  
-        /// <param name="e"></param>
381  
-        private void selectDesktop(object Sender, EventArgs e) {
382  
-            MenuItem selected = (MenuItem)Sender;
383  
-            Screen screen = (Screen)selected.Tag;
384  
-
385  
-            SetPrimary(screen);
386  
-        }
387  
-#endregion
388  
-
389  
-        /// <summary>
390  
-        /// Menu callback to send to Player
391  
-        /// </summary>
392  
-        /// <param name="Sender"></param>
393  
-        /// <param name="e"></param>
394  
-        private void selectPlayer(object Sender, EventArgs e) {
395  
-            MenuItem clicked = (MenuItem)Sender;
396  
-            NetService service = (NetService)clicked.Tag;
397  
-            IList addresses = service.Addresses;
398  
-            byte[] bytes;
399  
-
400  
-            foreach (System.Net.IPEndPoint addr in addresses) {
401  
-                System.Net.Sockets.TcpClient clntSocket = new System.Net.Sockets.TcpClient();
402  
-                try {
403  
-                    clntSocket.Connect(addr);
404  
-                    if (clntSocket.Connected) {
405  
-                        Trace.WriteLine("DEBUG: Connected to " + service.Name);
406  
-                        NetworkStream strm = clntSocket.GetStream();
407  
-
408  
-                        if (clicked.Checked) {
409  
-                            String handle = clicked.Name;
410  
-
411  
-                            bytes = Encoding.ASCII.GetBytes("CLOSE " + handle + "\n");
412  
-                            strm.Write(bytes, 0, bytes.Length);
413  
-
414  
-                            Trace.WriteLine("CLOSING : " + handle);
415  
-                            bytes = new byte[1024];
416  
-                            // strm.ReadTimeout = 5000;
417  
-                            try {
418  
-                                strm.Read(bytes, 0, bytes.Length);
419  
-
420  
-                                Trace.WriteLine("Returned " + System.Text.Encoding.ASCII.GetString(bytes));
421  
-                            } catch (Exception ex) {
422  
-                                Trace.WriteLine("FATAL: " + ex.StackTrace);
423  
-                            }
424  
-                            clicked.Checked = false;
425  
-                        } else {
426  
-                            bytes = Encoding.ASCII.GetBytes("SHOW " + id + " FULLSCREEN\n");
427  
-                            strm.Write(bytes, 0, bytes.Length);
428  
-
429  
-                            bytes = new byte[128];
430  
-                            strm.ReadTimeout = 5000;
431  
-                            try {
432  
-                                strm.Read(bytes, 0, bytes.Length);
433  
-                                clicked.Checked = true;
434  
-                                clicked.Name = System.Text.Encoding.ASCII.GetString(bytes);
435  
-                            } catch {
436  
-                            }
437  
-                        }
438  
-                        strm.Close();   // The result handle have no use for us
439  
-
440  
-                        break;
441  
-                    }
442  
-                } catch {
443  
-                }
444  
-            }
445  
-        }
446  
-
447  
-#if USE_WIFI_LOCALIZATION
448  
-        private void locationChecked(object Sender, EventArgs e) {
449  
-            if (locationItem.Checked) {
450  
-                locationItem.Checked = false;
451  
-
452  
-                prevLoc = null;
453  
-                TXTrecords.Remove("locationID");
454  
-                publishService.setTXTRecordData(NetService.DataFromTXTRecordDictionary(TXTrecords));
455  
-            } else {
456  
-                locationItem.Checked = true;
457  
-                discloseLocation = true;
458  
-            }
459  
-            using (RegistryKey dcs = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("FXPAL").CreateSubKey("DisplayCast").CreateSubKey("Streamer")) {
460  
-                dcs.SetValue("discloseLocation", locationItem.Checked);
461  
-            }
462  
-        }
463  
-#endif
464  
-
465  
-        /// <summary>
466  
-        /// 
467  
-        /// </summary>
468  
-        /// <param name="Sender"></param>
469  
-        /// <param name="e"></param>
470  
-        private void exitItem_Click(object Sender, EventArgs e) {
471  
-            Environment.Exit(0);
472  
-        }
473  
-
474  
-        /// <summary>
475  
-        /// 
476  
-        /// </summary>
477  
-        /// <param name="sender"></param>
478  
-        /// <param name="e"></param>
479  
-        private void Console_Load(object sender, EventArgs e) {
480  
-            /*
481  
-            using (RegistryKey dcs = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("FXPAL").CreateSubKey("DisplayCast").CreateSubKey("Streamer")) {
482  
-                streamerName.Clear();
483  
-                streamerName.AppendText(dcs.GetValue("Name").ToString());
484  
-            }
485  
-             */
486  
-        }
487  
-
488  
-        /// <summary>
489  
-        /// 
490  
-        /// </summary>
491  
-        /// <param name="sender"></param>
492  
-        /// <param name="e"></param>
493  
-        private void changeName(object sender, EventArgs e) {
494  
-            if (publishService != null) {
495  
-                String defaultName;
496  
-
497  
-                using (RegistryKey dcs = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("FXPAL").CreateSubKey("DisplayCast").CreateSubKey("Streamer")) {
498  
-                    defaultName = dcs.GetValue("Name", System.Environment.UserName).ToString();
499  
-                    String name = Interaction.InputBox("Enter our name. Remote players will use this name to watch our screencast.", "FXPal DisplayCast Streamer", defaultName, 0, 0);
500  
-
501  
-                    if (name.Length != 0) {
502  
-                        dcs.SetValue("Name", name);
503  
-                        // Trace.WriteLine("DEBUG - name is " + name + " length is " + name.Length);
504  
-
505  
-                        TXTrecords.Remove("name");
506  
-                        TXTrecords.Add("name", name);
507  
-                        publishService.TXTRecordData = NetService.DataFromTXTRecordDictionary(TXTrecords);
508  
-                        publishService.TXTRecordData = NetService.DataFromTXTRecordDictionary(TXTrecords);
509  
-                        publishService.Publish();
510  
-                    }
511  
-                }
512  
-            }
513  
-        }
514  
-        #endregion
515  
-
516  
-#if USE_BLUETOOTH
517  
-        #region Bluetooth stuff
518  
-        static BluetoothComponent bt;
519  
-
520  
-        /// <summary>
521  
-        /// Callback on a completed discover operation
522  
-        /// </summary>
523  
-        /// <param name="sender"></param>
524  
-        /// <param name="e"></param>
525  
-        static private void discoverComplete(object sender, DiscoverDevicesEventArgs e) {
526  
-            BluetoothDeviceInfo[] devices = e.Devices;
527  
-
528  
-            foreach (MenuItem menu in playersItem.MenuItems) {
529  
-                if (menu == null)
530  
-                    continue;   // WTF?
531  
-
532  
-                if (menu.Text.EndsWith("(nearby)"))
533  
-                    menu.Text = menu.Text.Replace("(nearby)", "");
534  
-            }
535  
-
536  
-            try {
537  
-                foreach (BluetoothDeviceInfo device in e.Devices) {
538  
-                    string addr = device.DeviceAddress.ToString("C").Replace(":", "-").ToLower();
539  
-
540  
-                    foreach (MenuItem menu in playersItem.MenuItems) {
541  
-                        if (menu == null)
542  
-                            continue;   // WTF?
543  
-
544  
-                        NetService service = (NetService)menu.Tag;
545  
-                        if (service == null)
546  
-                            continue;   // WTF
547  
-                        if (service.TXTRecordData != null) {
548  
-                            IDictionary dict = NetService.DictionaryFromTXTRecordData(service.TXTRecordData);
549  
-
550  
-                            if (dict != null) {
551  
-                                foreach (DictionaryEntry kvp in dict) {
552  
-                                    String key = (String)kvp.Key;
553  
-
554  
-                                    key = key.ToUpper();
555  
-                                    if (key.Equals("BLUETOOTH")) {
556  
-                                        byte[] value = (byte[])kvp.Value;
557  
-                                        try {
558  
-                                            if (Encoding.UTF8.GetString(value).ToLower().Equals(addr)) {
559  
-                                                menu.Text = menu.Text + "(nearby)";
560  
-                                            }
561  
-                                        } catch {
562  
-                                        }
563  
-                                        break;
564  
-                                    }
565  
-                                }
566  
-                            }
567  
-                        }
568  
-                    }
569  
-                }
570  
-
571  
-                BluetoothComponent bt = (BluetoothComponent)sender;
572  
-                bt.DiscoverDevicesAsync(100, true, true, true, true, null);
573  
-            } catch {
574  
-            }
575  
-        }
576  
-        #endregion
577  
-#endif
578  
-
579  
-        private IContainer iComponents;
580  
-        private NetServiceBrowser player = null, archiver = null;
581  
-        /// <summary>
582  
-        /// 
583  
-        /// </summary>
584  
-        /// <param name="publishService"></param>
585  
-        /// <param name="TXTrecords"></param>
586  
-        /// <param name="id"></param>
587  
-        public Console(NetService publishService, Hashtable TXTrecords, String id) {
588  
-            InitializeComponent();
589  
-
590  
-#if USE_BLUETOOTH
591  
-            // If Bluetooth is supported, then scan for nearby players
592  
-            if (BluetoothRadio.IsSupported) {
593  
-                try {
594  
-                    bt = new BluetoothComponent();
595  
-
596  
-                    bt.DiscoverDevicesComplete += new EventHandler<DiscoverDevicesEventArgs>(discoverComplete);
597  
-                    bt.DiscoverDevicesAsync(100, true, true, true, true, null);
598  
-                } catch {
599  
-                    if (bt != null)
600  
-                        bt.Dispose();
601  
-                    // Something is wrong with bluetooth module
602  
-                }
603  
-            }
604  
-#endif
605  
-
606  
-            this.publishService = publishService;
607  
-            this.TXTrecords = TXTrecords;
608  
-            this.id = id;
609  
-
610  
-            playersItem = new System.Windows.Forms.MenuItem();
611  
-            playersItem.Text = "P&roject Me";
612  
-            playersItem.MenuItems.Add("-");
613  
-
614  
-            archiversItem = new System.Windows.Forms.MenuItem();
615  
-            archiversItem.Text = "A&rchive Me";
616  
-            archiversItem.MenuItems.Add("-");
617  
-
618  
-#if USE_WIFI_LOCALIZATION
619  
-            MSE = new QueryMSE();
620  
-            myMac = getWIFIMACAddress();
621  
-            /* if (myMac == null)
622  
-                myMac = displaycast; */
623  
-            if (myMac != null) {
624  
-                locationItem = new System.Windows.Forms.MenuItem();
625  
-                locationItem.Text = "Disclose location?";
626  
-                // locationItem.Index = 4;
627  
-                // playersItem.Index++;
628  
-                // archiversItem.Index++;
629  
-                locationItem.Click += new System.EventHandler(locationChecked);
630  
-                using (RegistryKey dcs = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("FXPAL").CreateSubKey("DisplayCast").CreateSubKey("Streamer")) {
631  
-                    locationItem.Checked = Convert.ToBoolean(dcs.GetValue("discloseLocation"));
632  
-                }
633  
-                discloseLocation = locationItem.Checked;
634  
-
635  
-                locThread = new Thread(new ThreadStart(monitorMyLocation));
636  
-                locThread.Start();
637  
-            }
638  
-#endif
639  
-
640  
-            Screen[] screens = Screen.AllScreens;
641  
-            if (screens.Length > 1) {
642  
-                desktopItem = new System.Windows.Forms.MenuItem();
643  
-                desktopItem.Text = "D&esktop to stream";
644  
-
645  
-                desktopItem.MenuItems.Add("-");
646  
-                foreach (Screen screen in screens) {
647  
-                    MenuItem item = new MenuItem();
648  
-                    System.Drawing.Rectangle bounds = screen.Bounds;
649  
-
650  
-                    item.Text = "DESKTOP: " + bounds.X + "x" + bounds.Y + " " + bounds.Width + "x" + bounds.Height;
651  
-                    item.Click += new System.EventHandler(selectDesktop);
652  
-                    item.Select += new System.EventHandler(selectDesktop);
653  
-                    item.Tag = screen;
654  
-
655  
-                    desktopItem.MenuItems.Add(item);
656  
-                }
657  
-            }
658  
-
659  
-            changeNameItem = new System.Windows.Forms.MenuItem();
660  
-            changeNameItem.Text = "C&hange Name";
661  
-            changeNameItem.Click += new System.EventHandler(changeName);
662  
-
663  
-            aboutItem = new System.Windows.Forms.MenuItem();
664  
-            aboutItem.Text = "A&bout...";
665  
-            aboutItem.Click += new System.EventHandler(about);
666  
-
667  
-            exitItem = new System.Windows.Forms.MenuItem();
668  
-            exitItem.Text = "E&xit";
669  
-            exitItem.Click += new System.EventHandler(exitItem_Click);
670  
-
671  
-            contextMenu = new System.Windows.Forms.ContextMenu();
672  
-
673  
-            contextMenu.MenuItems.Add(playersItem);
674  
-            contextMenu.MenuItems.Add(archiversItem);
675  
-            contextMenu.MenuItems.Add("-");
676  
-
677  
-            if (locationItem != null)
678  
-                contextMenu.MenuItems.Add(locationItem);
679  
-
680  
-            if (desktopItem != null)
681  
-                contextMenu.MenuItems.Add(desktopItem);
682  
-            contextMenu.MenuItems.Add(changeNameItem);
683  
-
684  
-            contextMenu.MenuItems.Add("-");
685  
-            contextMenu.MenuItems.Add(aboutItem);
686  
-
687  
-            contextMenu.MenuItems.Add("-");
688  
-            contextMenu.MenuItems.Add(exitItem);
689  
-
690  
-            iComponents = new System.ComponentModel.Container();
691  
-            notifyIcon = new NotifyIcon(iComponents);
692  
-            notifyIcon.Icon = new Icon("Streamer.ico");
693  
-            // notifyIcon.Icon = Streamer.Properties.Resources.Streamer;
694  
-            // notifyIcon.Icon = new Icon(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("FXPAL.DisplayCast.Streamer.Streamer.ico"));
695  
-
696  
-            notifyIcon.ContextMenu = contextMenu;
697  
-            notifyIcon.Text = "FXPAL Displaycast Streamer";
698  
-            notifyIcon.Visible = true;
699  
-            notifyIcon.DoubleClick += new System.EventHandler(this.notifyIcon_DoubleClick);
700  
-
701  
-            player = new NetServiceBrowser();
702  
-            //player.InvokeableObject = this;
703  
-            player.AllowMultithreadedCallbacks = true;
704  
-            player.DidFindService += new NetServiceBrowser.ServiceFound(nsBrowser_DidFindService);
705  
-            player.DidRemoveService += new NetServiceBrowser.ServiceRemoved(nsBrowser_DidRemoveService);
706  
-            player.SearchForService(Shared.DisplayCastGlobals.PLAYER, Shared.DisplayCastGlobals.BONJOURDOMAIN);
707  
-
708  
-            archiver = new NetServiceBrowser();
709  
-            // archiver.InvokeableObject = this;
710  
-            archiver.AllowMultithreadedCallbacks = true;
711  
-            archiver.DidFindService += new NetServiceBrowser.ServiceFound(nsBrowser_DidFindService);
712  
-            archiver.DidRemoveService += new NetServiceBrowser.ServiceRemoved(nsBrowser_DidRemoveService);
713  
-            archiver.SearchForService(Shared.DisplayCastGlobals.ARCHIVER, Shared.DisplayCastGlobals.BONJOURDOMAIN);
714  
-        }
715  
-    }
716  
-}
  1
+// Copyright (c) 2012, Fuji Xerox Co., Ltd.
  2
+// All rights reserved.
  3
+// Author: Surendar Chandra, FX Palo Alto Laboratory, Inc.
  4
+
  5
+using System;
  6
+using System.Threading;
  7
+using System.Collections;
  8
+using System.Diagnostics;
  9
+using System.Collections.Generic;
  10
+using System.ComponentModel;
  11
+using System.Data;
  12
+using System.Drawing;
  13
+using System.Drawing.Imaging;
  14
+using System.Text;
  15
+using System.Windows.Forms;
  16
+using System.Net;
  17
+using System.Net.Sockets;
  18
+using System.Runtime.InteropServices;
  19
+using System.IO;
  20
+using System.IO.Compression;
  21
+using System.Net.NetworkInformation;
  22
+using System.Resources;
  23
+using System.Reflection;
  24
+
  25
+using Microsoft.Win32;
  26
+using Microsoft.VisualBasic;
  27
+
  28
+using ZeroconfService;
  29
+#if USE_WIFI_LOCALIZATION
  30
+using Location;
  31
+using location;
  32
+#endif 
  33
+
  34
+using Mirror.Driver;
  35
+
  36
+#if USE_BLUETOOTH
  37
+using InTheHand.Net;
  38
+using InTheHand.Net.Sockets;
  39
+using InTheHand.Windows.Forms;
  40
+using InTheHand.Net.Bluetooth;
  41
+#endif
  42
+
  43
+namespace FXPAL.DisplayCast.Streamer {
  44
+    public partial class Console : Form {
  45
+        private NetService publishService;
  46
+        private Hashtable TXTrecords;
  47
+        private ContextMenu contextMenu;
  48
+        private NotifyIcon notifyIcon;
  49
+        private static MenuItem exitItem, changeNameItem, desktopItem, locationItem, aboutItem, playersItem, archiversItem;
  50
+        // private CheckBox location;
  51
+        // private ListView browserList;
  52
+        private int numPlayers = 0, numArchivers = 0;
  53
+        private String id;
  54
+
  55
+        private ArrayList resolvingNS = null;
  56
+
  57
+        #region Utility functions
  58
+        /// <summary>
  59
+        /// Gets the user configured name for a service from its TXTrecords
  60
+        /// </summary>
  61
+        /// <param name="service"></param>
  62
+        /// <returns></returns>
  63
+        private static String getName(NetService service) {
  64
+            String name = service.Name;
  65
+
  66
+            if (service.TXTRecordData != null) {
  67
+                byte[] txt = service.TXTRecordData;
  68
+                IDictionary dict = NetService.DictionaryFromTXTRecordData(txt);
  69
+
  70
+                if (dict != null) {
  71
+                    foreach (DictionaryEntry kvp in dict) {
  72
+                        String key = (String)kvp.Key;
  73
+
  74
+                        key = key.ToUpper();
  75
+                        if (key.Equals("NAME")) {
  76
+                            byte[] value = (byte[])kvp.Value;
  77
+                            try {
  78
+                                name = Encoding.UTF8.GetString(value);
  79
+                            } catch {
  80
+                            }
  81
+                            break;
  82
+                        }
  83
+                    }
  84
+                }
  85
+            }
  86
+
  87
+            return name;
  88
+        }
  89
+        #endregion
  90
+
  91
+        #region Bonjour browse routines to keep track of Players
  92
+        /// <summary>
  93
+        ///