OSDN Git Service

リポジトリの中間ファイルをすべて削除し、再構築。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / 全体 / Program.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using System.Threading;\r
6 using System.Diagnostics;\r
7 using System.Windows.Forms;\r
8 \r
9 namespace DTXMania\r
10 {\r
11         internal class Program\r
12         {\r
13                 #region [ 二重機動チェック、DLL存在チェック ]\r
14                 //-----------------------------\r
15                 private static Mutex mutex二重起動防止用;\r
16 \r
17                 private static bool tDLLの存在チェック( string strDll名, string str存在しないときに表示するエラー文字列 )\r
18                 {\r
19                         IntPtr hModule = LoadLibrary( strDll名 );\r
20                         if( hModule == IntPtr.Zero )\r
21                         {\r
22                                 MessageBox.Show( str存在しないときに表示するエラー文字列, "DTXMania runtime error", MessageBoxButtons.OK, MessageBoxIcon.Hand );\r
23                                 return false;\r
24                         }\r
25                         FreeLibrary( hModule );\r
26                         return true;\r
27                 }\r
28 \r
29                 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]\r
30                 internal static extern void FreeLibrary( IntPtr hModule );\r
31 \r
32                 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]\r
33                 internal static extern IntPtr LoadLibrary( string lpFileName );\r
34                 //-----------------------------\r
35                 #endregion\r
36 \r
37                 [STAThread]\r
38                 private static void Main()\r
39                 {\r
40                         mutex二重起動防止用 = new Mutex( false, "DTXManiaMutex" );\r
41 \r
42                         if( mutex二重起動防止用.WaitOne( 0, false ) )\r
43                         {\r
44                                 string newLine = Environment.NewLine;\r
45                                 bool flag = false;\r
46 \r
47                                 if( !tDLLの存在チェック( "FDK.dll", "FDK.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。" ) ) flag = true;\r
48                                 if( !tDLLの存在チェック( "SlimDX" + CDTXMania.SLIMDXDLL, "SlimDX" + CDTXMania.SLIMDXDLL + ".dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。" ) ) flag = true;\r
49                                 if( !tDLLの存在チェック( "xadec.dll", "xadec.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。" ) ) flag = true;\r
50                                 if( !tDLLの存在チェック( "SoundDecoder.dll", "SoundDecoder.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。" ) ) flag = true;\r
51                                 if( !tDLLの存在チェック( CDTXMania.D3DXDLL, CDTXMania.D3DXDLL + " が存在しません。" + newLine + "Direct Regist フォルダの DXSETUP.exe を実行し、" + newLine + "必要な DirectX ランタイムをインストールしてください。" ) ) flag = true;\r
52                                 if( !flag )\r
53                                 {\r
54                                         using( var mania = new CDTXMania() )\r
55                                                 mania.Run();\r
56 \r
57                                         Trace.WriteLine( "" );\r
58                                         Trace.WriteLine( "遊んでくれてありがとう!" );\r
59                                         \r
60                                         if( Trace.Listeners.Count > 1 )\r
61                                                 Trace.Listeners.RemoveAt( 1 );\r
62                                 }\r
63                         }\r
64                 }\r
65         }\r
66 }\r