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
12 internal class Program
\r
14 #region [ 二重機動チェック、DLL存在チェック ]
\r
15 //-----------------------------
\r
16 private static Mutex mutex二重起動防止用;
\r
18 private static bool tDLLの存在チェック( string strDll名, string str存在しないときに表示するエラー文字列jp, string str存在しないときに表示するエラー文字列en )
\r
20 string str存在しないときに表示するエラー文字列 = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ?
\r
21 str存在しないときに表示するエラー文字列jp : str存在しないときに表示するエラー文字列en;
\r
22 IntPtr hModule = LoadLibrary( strDll名 );
\r
23 if( hModule == IntPtr.Zero )
\r
25 MessageBox.Show( str存在しないときに表示するエラー文字列, "DTXMania runtime error", MessageBoxButtons.OK, MessageBoxIcon.Hand );
\r
28 FreeLibrary( hModule );
\r
33 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
34 internal static extern void FreeLibrary( IntPtr hModule );
\r
36 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
37 internal static extern IntPtr LoadLibrary( string lpFileName );
\r
39 // [DllImport("dwmapi.dll", PreserveSig = false)]
\r
40 // public static extern int DwmEnableComposition(bool fEnable);
\r
42 //-----------------------------
\r
46 private static void Main()
\r
48 mutex二重起動防止用 = new Mutex( false, "DTXManiaMutex" );
\r
50 if( mutex二重起動防止用.WaitOne( 0, false ) )
\r
52 string newLine = Environment.NewLine;
\r
55 #region [DLLの存在チェック]
\r
56 if (!tDLLの存在チェック("SlimDX" + CDTXMania.SLIMDXDLL,
\r
57 "SlimDX" + CDTXMania.SLIMDXDLL + ".dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
58 "SlimDX" + CDTXMania.SLIMDXDLL + ".dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
60 if (!tDLLの存在チェック("FDK.dll",
\r
61 "FDK.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
62 "FDK.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
64 if( !tDLLの存在チェック( "xadec.dll",
\r
65 "xadec.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
66 "xadec.dll is not found." + newLine + "Please download DTXMania again."
\r
68 if( !tDLLの存在チェック( "SoundDecoder.dll",
\r
69 "SoundDecoder.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",
\r
70 "SoundDecoder.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."
\r
72 if (!tDLLの存在チェック(CDTXMania.D3DXDLL,
\r
73 CDTXMania.D3DXDLL + " が存在しません。" + newLine + "DirectX Redist フォルダの DXSETUP.exe を実行し、" + newLine + "必要な DirectX ランタイムをインストールしてください。",
\r
74 CDTXMania.D3DXDLL + " is not found." + newLine + "Please execute DXSETUP.exe in \"DirectX Redist\" folder, to install DirectX runtimes required for DTXMania."
\r
79 #if DEBUG && TEST_ENGLISH
\r
80 Thread.CurrentThread.CurrentCulture = new CultureInfo( "en-US" );
\r
83 // turn off Aero Glass
\r
86 // DwmEnableComposition( false );
\r
88 // catch ( DllNotFoundException )
\r
90 // // DLLがなければXP以下とみなし何もしない
\r
93 // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。
\r
94 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。
\r
99 using( var mania = new CDTXMania() )
\r
102 Trace.WriteLine( "" );
\r
103 Trace.WriteLine( "遊んでくれてありがとう!" );
\r
106 catch( Exception e )
\r
108 Trace.WriteLine( "" );
\r
109 Trace.Write( e.ToString() );
\r
110 Trace.WriteLine( "" );
\r
111 Trace.WriteLine( "エラーだゴメン!(涙" );
\r
112 MessageBox.Show( e.ToString(), "DTXMania Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); // #23670 2011.2.28 yyagi to show error dialog
\r
115 // END #24606 2011.03.08 from
\r
116 // END #23670 2010.11.13 from
\r
118 if( Trace.Listeners.Count > 1 )
\r
119 Trace.Listeners.RemoveAt( 1 );
\r
122 // BEGIN #24615 2011.03.09 from: Mutex.WaitOne() が true を返した場合は、Mutex のリリースが必要である。
\r
124 mutex二重起動防止用.ReleaseMutex();
\r
125 mutex二重起動防止用 = null;
\r
127 // END #24615 2011.03.09 from
\r