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
32 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
33 internal static extern void FreeLibrary( IntPtr hModule );
\r
35 [DllImport( "kernel32", CharSet = CharSet.Unicode, SetLastError = true )]
\r
36 internal static extern IntPtr LoadLibrary( string lpFileName );
\r
38 // [DllImport("dwmapi.dll", PreserveSig = false)]
\r
39 // public static extern int DwmEnableComposition(bool fEnable);
\r
41 //-----------------------------
\r
45 private static void Main()
\r
47 mutex二重起動防止用 = new Mutex( false, "DTXManiaMutex" );
\r
49 if( mutex二重起動防止用.WaitOne( 0, false ) )
\r
51 string newLine = Environment.NewLine;
\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
76 // turn off Aero Glass
\r
79 // DwmEnableComposition( false );
\r
81 // catch ( DllNotFoundException )
\r
83 // // DLLがなければXP以下とみなし何もしない
\r
86 // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。
\r
87 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。
\r
92 using( var mania = new CDTXMania() )
\r
95 Trace.WriteLine( "" );
\r
96 Trace.WriteLine( "遊んでくれてありがとう!" );
\r
99 catch( Exception e )
\r
101 Trace.WriteLine( "" );
\r
102 Trace.Write( e.ToString() );
\r
103 Trace.WriteLine( "" );
\r
104 Trace.WriteLine( "エラーだゴメン!(涙" );
\r
105 MessageBox.Show( e.ToString(), "DTXMania Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); // #23670 2011.2.28 yyagi to show error dialog
\r
108 // END #24606 2011.03.08 from
\r
109 // END #23670 2010.11.13 from
\r
111 if( Trace.Listeners.Count > 1 )
\r
112 Trace.Listeners.RemoveAt( 1 );
\r