private void Form1_Load(object sender, EventArgs e) { // スプラッシュ・スクリーンの表示開始 SplashScreen splash = new SplashScreen(); splash.ProgressMsg = "メールクライアントの初期化中です"; if (File.Exists(@"akanemail.png")) { try { splash.BackgroundImage = Image.FromFile(@"akanemail.png"); } catch { // 読み込めないときは通常画像を表示するため処理なし } } splash.Show(); splash.Refresh(); // 最大化の時スプラッシュスクリーンよりも先にフォームが出ることがあるので // それを防ぐために一時的にフォームを非表示にする。 this.Hide(); // 環境設定の読み込み LoadSettings(); try { // WinSockの初期化処理 nMail.Winsock.Initialize(); } catch (Exception exp) { // 64bit版OSで同梱の32bit版OS用のnMail.dllを使用して起動したときはエラーになるため差し替えのお願いメッセージを表示する if (exp.Message.Contains("間違ったフォーマットのプログラムを読み込もうとしました。")) { MessageBox.Show("64bit版OSで32bit版OS用のnMail.dllを使用して実行した場合\nこのエラーが表示されます。\n\nお手数をお掛け致しますが同梱のnMail.dllをnMail.dll.32、nMail.dll.64をnMail.dllに名前を変更してAkane Mailを起動\nしてください。", "Akane Mail", MessageBoxButtons.OK, MessageBoxIcon.Error); // 致命的なnMail.dllのエラーフラグをOn nMailError = true; Application.Exit(); return; } } // nMailのHTML添付ファイルの展開オプションをONにする Options.EnableSaveHtmlFile(); // ファイル展開用のテンポラリフォルダの作成 if (!Directory.Exists(Application.StartupPath + @"\tmp")) { Directory.CreateDirectory(Application.StartupPath + @"\tmp"); } // Threadオブジェクトを作成する var t = new System.Threading.Thread(new System.Threading.ThreadStart(MailDataLoad)); splash.ProgressMsg = "メールデータの読み込み作業中です"; // スレッドを開始する t.Start(); // スレッドが終了するまで待機 t.Join(); // メール自動受信が設定されている場合はタイマーを起動する if (AccountInfo.autoMailFlag) { // 取得間隔*60000(60000ミリ秒=1分)をタイマー実行間隔に設定する timer2.Interval = AccountInfo.getMailInterval * 60000; timer2.Enabled = true; } // ツリービューとリストビューの表示を更新する UpdateTreeView(); UpdateListView(); // ListViewItemComparerの作成と設定 // 受信or送信日時の降順で並べる listViewItemSorter = new ListViewItemComparer() { Column = 2, Order = SortOrder.Descending }; listViewItemSorter.ColumnModes = new ListViewItemComparer.ComparerMode[] { ListViewItemComparer.ComparerMode.String, ListViewItemComparer.ComparerMode.String, ListViewItemComparer.ComparerMode.DateTime, ListViewItemComparer.ComparerMode.Integer }; // ListViewItemSorterを指定する listView1.ListViewItemSorter = listViewItemSorter; // スプラッシュ・スクリーンの表示終了 splash.Close(); if (!splash.IsDisposed) splash.Dispose(); // 一時的に非表示にした画面を表示させる if (!(AccountInfo.minimizeTaskTray && WindowState == FormWindowState.Minimized)) { ShowInTaskbar = true; this.Show(); } // ツリービューを展開する treeView1.ExpandAll(); // メインとなるフォームをアクティブに戻す this.Activate(); }