2 using System.Collections.Generic;
\r
3 using System.Globalization;
\r
5 using System.Runtime.InteropServices;
\r
6 using System.Threading;
\r
7 using System.Diagnostics;
\r
8 using System.Windows.Forms;
\r
13 internal class Program
\r
15 #region [ 二重機動チェック、DLL存在チェック ]
\r
16 //-----------------------------
\r
17 private static Mutex mutex二重起動防止用;
\r
19 private static bool tDLLの存在チェック( string strDll名, string str存在しないときに表示するエラー文字列jp, string str存在しないときに表示するエラー文字列en )
\r
21 string str存在しないときに表示するエラー文字列 = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ?
\r
22 str存在しないときに表示するエラー文字列jp : str存在しないときに表示するエラー文字列en;
\r
23 IntPtr hModule = LoadLibrary( strDll名 );
\r
24 if( hModule == IntPtr.Zero )
\r
26 MessageBox.Show( str存在しないときに表示するエラー文字列, "DTXMania runtime error", MessageBoxButtons.OK, MessageBoxIcon.Hand );
\r
29 FreeLibrary( hModule );
\r
34 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
35 internal static extern void FreeLibrary( IntPtr hModule );
\r
37 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
38 internal static extern IntPtr LoadLibrary( string lpFileName );
\r
40 //-----------------------------
\r
44 private static void Main()
\r
46 mutex二重起動防止用 = new Mutex( false, "DTXManiaMutex" );
\r
48 if( mutex二重起動防止用.WaitOne( 0, false ) )
\r
50 string newLine = Environment.NewLine;
\r
53 #region [DLLの存在チェック]
\r
54 if (!tDLLの存在チェック("SlimDX" + CDTXMania.SLIMDXDLL,
\r
55 "SlimDX" + CDTXMania.SLIMDXDLL + ".dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
56 "SlimDX" + CDTXMania.SLIMDXDLL + ".dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
58 if (!tDLLの存在チェック("FDK.dll",
\r
59 "FDK.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
60 "FDK.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
62 if( !tDLLの存在チェック( "xadec.dll",
\r
63 "xadec.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
64 "xadec.dll is not found." + newLine + "Please download DTXMania again."
\r
66 if( !tDLLの存在チェック( "SoundDecoder.dll",
\r
67 "SoundDecoder.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
68 "SoundDecoder.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
70 if (!tDLLの存在チェック(CDTXMania.D3DXDLL,
\r
71 CDTXMania.D3DXDLL + " が存在しません。" + newLine + "DirectX Redist フォルダの DXSETUP.exe を実行し、" + newLine + "必要な DirectX ランタイムをインストールしてください。",
\r
72 CDTXMania.D3DXDLL + " is not found." + newLine + "Please execute DXSETUP.exe in \"DirectX Redist\" folder, to install DirectX runtimes required for DTXMania."
\r
77 #if DEBUG && TEST_ENGLISH
\r
78 Thread.CurrentThread.CurrentCulture = new CultureInfo( "en-US" );
\r
81 DWM.EnableComposition(false); // Disable AeroGrass temporally
\r
83 // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。
\r
84 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。
\r
89 using( var mania = new CDTXMania() )
\r
92 Trace.WriteLine( "" );
\r
93 Trace.WriteLine( "遊んでくれてありがとう!" );
\r
96 catch( Exception e )
\r
98 Trace.WriteLine( "" );
\r
99 Trace.Write( e.ToString() );
\r
100 Trace.WriteLine( "" );
\r
101 Trace.WriteLine( "エラーだゴメン!(涙" );
\r
102 MessageBox.Show( e.ToString(), "DTXMania Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); // #23670 2011.2.28 yyagi to show error dialog
\r
105 // END #24606 2011.03.08 from
\r
106 // END #23670 2010.11.13 from
\r
108 if( Trace.Listeners.Count > 1 )
\r
109 Trace.Listeners.RemoveAt( 1 );
\r
112 // BEGIN #24615 2011.03.09 from: Mutex.WaitOne() が true を返した場合は、Mutex のリリースが必要である。
\r
114 mutex二重起動防止用.ReleaseMutex();
\r
115 mutex二重起動防止用 = null;
\r
117 // END #24615 2011.03.09 from
\r