OSDN Git Service

Change behavior of automatic IPv4/IPv6 selection.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index e14bf0e..b890086 100644 (file)
--- a/main.c
+++ b/main.c
@@ -84,7 +84,9 @@ static void CalcWinSize(void);
 static void CheckResizeFrame(WPARAM Keys, int x, int y);\r
 static void DispDirInfo(void);\r
 static void DeleteAlltempFile(void);\r
-static BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
 static int EnterMasterPasswordAndSet( int Res, HWND hWnd );\r
 \r
 /*===== ローカルなワーク =====*/\r
@@ -229,6 +231,11 @@ int FolderAttrNum = 777;
 // 暗号化通信対応\r
 BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];\r
 BYTE SSLRootCAFileHash[20];\r
+// ファイルアイコン表示対応\r
+int DispFileIcon = NO;\r
+// ディレクトリ自動作成\r
+int MakeAllDir = NO;\r
+\r
 \r
 \r
 \r
@@ -253,66 +260,68 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 \r
        // プロセス保護\r
 #ifdef ENABLE_PROCESS_PROTECTION\r
-       DWORD ProtectLevel;\r
-       char* pCommand;\r
-       char Option[FMAX_PATH+1];\r
-       ProtectLevel = PROCESS_PROTECTION_NONE;\r
-       pCommand = lpszCmdLine;\r
-       while(pCommand = GetToken(pCommand, Option))\r
        {\r
-               if(strcmp(Option, "--protect") == 0)\r
-               {\r
-                       ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
-                       break;\r
-               }\r
-               else if(strcmp(Option, "--protect-high") == 0)\r
-               {\r
-                       ProtectLevel = PROCESS_PROTECTION_HIGH;\r
-                       break;\r
-               }\r
-               else if(strcmp(Option, "--protect-medium") == 0)\r
-               {\r
-                       ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
-                       break;\r
-               }\r
-               else if(strcmp(Option, "--protect-low") == 0)\r
+               DWORD ProtectLevel;\r
+               char* pCommand;\r
+               char Option[FMAX_PATH+1];\r
+               ProtectLevel = PROCESS_PROTECTION_NONE;\r
+               pCommand = lpszCmdLine;\r
+               while(pCommand = GetToken(pCommand, Option))\r
                {\r
-                       ProtectLevel = PROCESS_PROTECTION_LOW;\r
-                       break;\r
+                       if(strcmp(Option, "--protect") == 0)\r
+                       {\r
+                               ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
+                               break;\r
+                       }\r
+                       else if(strcmp(Option, "--protect-high") == 0)\r
+                       {\r
+                               ProtectLevel = PROCESS_PROTECTION_HIGH;\r
+                               break;\r
+                       }\r
+                       else if(strcmp(Option, "--protect-medium") == 0)\r
+                       {\r
+                               ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
+                               break;\r
+                       }\r
+                       else if(strcmp(Option, "--protect-low") == 0)\r
+                       {\r
+                               ProtectLevel = PROCESS_PROTECTION_LOW;\r
+                               break;\r
+                       }\r
                }\r
-       }\r
-       if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
-       {\r
-               SetProcessProtectionLevel(ProtectLevel);\r
-               if(!InitializeLoadLibraryHook())\r
+               if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
                {\r
-                       MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
-                       return 0;\r
-               }\r
+                       SetProcessProtectionLevel(ProtectLevel);\r
+                       if(!InitializeLoadLibraryHook())\r
+                       {\r
+                               MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
 #ifndef _DEBUG\r
-               if(IsDebuggerPresent())\r
-               {\r
-                       MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
-                       return 0;\r
-               }\r
+                       if(IsDebuggerPresent())\r
+                       {\r
+                               MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
 #endif\r
-               if(!UnloadUntrustedModule())\r
-               {\r
-                       MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
-                       return 0;\r
-               }\r
+                       if(!UnloadUntrustedModule())\r
+                       {\r
+                               MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
 #ifndef _DEBUG\r
-               if(RestartProtectedProcess(" --restart"))\r
-                       return 0;\r
+                       if(RestartProtectedProcess(" --restart"))\r
+                               return 0;\r
 #endif\r
-               if(!EnableLoadLibraryHook(TRUE))\r
-               {\r
-                       MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
-                       return 0;\r
+                       if(!EnableLoadLibraryHook(TRUE))\r
+                       {\r
+                               MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
                }\r
+               else\r
+                       InitializeLoadLibraryHook();\r
        }\r
-       else\r
-               InitializeLoadLibraryHook();\r
 #endif\r
 \r
        // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
@@ -334,6 +343,9 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        LoadOpenSSL();\r
 #endif\r
 \r
+       // SFTP対応\r
+       LoadPuTTY();\r
+\r
        Ret = FALSE;\r
        hWndFtp = NULL;\r
        hInstFtp = hInstance;\r
@@ -345,7 +357,9 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                        if((Sts == 0) || (Sts == -1))\r
                                break;\r
 \r
-                       if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+                       // 64ビット対応\r
+//                     if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+                       if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD_PTR)&Msg))\r
                        { \r
                                /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */\r
                                /* コンボボックス内ではアクセラレータを無効にする */\r
@@ -367,6 +381,8 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 #ifdef USE_OPENSSL\r
        FreeOpenSSL();\r
 #endif\r
+       // SFTP対応\r
+       FreePuTTY();\r
        OleUninitialize();\r
        return(Ret);\r
 }\r
@@ -399,7 +415,9 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
        aes_init();\r
        srand(GetTickCount());\r
        \r
-       HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&dwCookie);\r
+       // 64ビット対応\r
+//     HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&dwCookie);\r
+       HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&dwCookie);\r
 \r
        SaveUpdateBellInfo();\r
 \r
@@ -409,7 +427,11 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
        {\r
                Accel = LoadAccelerators(hInstFtp, MAKEINTRESOURCE(ffftp_accel));\r
 \r
-               GetTempPath(FMAX_PATH, TmpPath);\r
+               // 環境依存の不具合対策\r
+//             GetTempPath(FMAX_PATH, TmpPath);\r
+               GetAppTempPath(TmpPath);\r
+               _mkdir(TmpPath);\r
+               SetYenTail(TmpPath);\r
 \r
                GetModuleFileName(NULL, HelpPath, FMAX_PATH);\r
                strcpy(GetFileName(HelpPath), "ffftp.chm");\r
@@ -430,7 +452,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                /* 2010.02.01 genta マスターパスワードを入力させる\r
                  -z オプションがあるときは最初だけスキップ\r
                  -z オプションがないときは,デフォルトパスワードをまず試す\r
-                 LoadRegistory()する\r
+                 LoadRegistry()する\r
                  パスワードが不一致なら再入力するか尋ねる.\r
                  (破損していた場合はさせない)\r
                */\r
@@ -475,7 +497,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                \r
                if(masterpass != 0)\r
                {\r
-                       LoadRegistory();\r
+                       LoadRegistry();\r
 \r
                        // 暗号化通信対応\r
                        SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
@@ -524,7 +546,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                                        DispWindowTitle();\r
                                        // SourceForge.JPによるフォーク\r
 //                                     SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.");\r
-                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192).");\r
+                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011-2012 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu).");\r
 \r
                                        if(ForceIni)\r
                                                SetTaskMsg("%s%s", MSGJPN283, IniPath);\r
@@ -632,13 +654,7 @@ static int MakeAllWindows(int cmdShow)
                WinPosX = CW_USEDEFAULT;\r
                WinPosY = 0;\r
        }\r
-       // UTF-8対応\r
-       // ユーザー定義のクラスはデフォルトのWNDPROCがShift_JIS専用のため\r
-//     hWndFtp = CreateWindow(FtpClassStr, "FFFTP",\r
-//                             WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,\r
-//                             WinPosX, WinPosY, WinWidth, WinHeight,\r
-//                             HWND_DESKTOP, 0, hInstFtp, NULL);\r
-       hWndFtp = CreateWindowA(FtpClassStr, "FFFTP",\r
+       hWndFtp = CreateWindow(FtpClassStr, "FFFTP",\r
                                WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,\r
                                WinPosX, WinPosY, WinWidth, WinHeight,\r
                                HWND_DESKTOP, 0, hInstFtp, NULL);\r
@@ -845,6 +861,8 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 {\r
        PAINTSTRUCT ps;\r
        LPTOOLTIPTEXT lpttt;\r
+       // UTF-8対応\r
+       LPTOOLTIPTEXTW wlpttt;\r
        RECT Rect;\r
 \r
        int TmpTransType;\r
@@ -965,6 +983,22 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
                                case MENU_DCLICK :\r
                                        if(hWndCurFocus == GetLocalHwnd())\r
+                                               // ローカルフォルダを開く\r
+//                                             DoubleClickProc(WIN_LOCAL, YES, -1);\r
+                                               DoubleClickProc(WIN_LOCAL, NO, -1);\r
+                                       else\r
+                                       {\r
+                                               SuppressRefresh = 1;\r
+                                               // ローカルフォルダを開く\r
+//                                             DoubleClickProc(WIN_REMOTE, YES, -1);\r
+                                               DoubleClickProc(WIN_REMOTE, NO, -1);\r
+                                               SuppressRefresh = 0;\r
+                                       }\r
+                                       break;\r
+\r
+                               // ローカルフォルダを開く\r
+                               case MENU_OPEN :\r
+                                       if(hWndCurFocus == GetLocalHwnd())\r
                                                DoubleClickProc(WIN_LOCAL, YES, -1);\r
                                        else\r
                                        {\r
@@ -1033,42 +1067,42 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
                                case MENU_DOWNLOAD :\r
                                        SetCurrentDirAsDirHist();\r
-                                       DownLoadProc(NO, NO, NO);\r
+                                       DownloadProc(NO, NO, NO);\r
                                        break;\r
 \r
                                case MENU_DOWNLOAD_AS :\r
                                        SetCurrentDirAsDirHist();\r
-                                       DownLoadProc(YES, NO, NO);\r
+                                       DownloadProc(YES, NO, NO);\r
                                        break;\r
 \r
                                case MENU_DOWNLOAD_AS_FILE :\r
                                        SetCurrentDirAsDirHist();\r
-                                       DownLoadProc(NO, YES, NO);\r
+                                       DownloadProc(NO, YES, NO);\r
                                        break;\r
 \r
                                case MENU_DOWNLOAD_ALL :\r
                                        SetCurrentDirAsDirHist();\r
-                                       DownLoadProc(NO, NO, YES);\r
+                                       DownloadProc(NO, NO, YES);\r
                                        break;\r
 \r
                                case MENU_DOWNLOAD_NAME :\r
                                        SetCurrentDirAsDirHist();\r
-                                       InputDownLoadProc();\r
+                                       InputDownloadProc();\r
                                        break;\r
 \r
                                case MENU_UPLOAD :\r
                                        SetCurrentDirAsDirHist();\r
-                                       UpLoadListProc(NO, NO);\r
+                                       UploadListProc(NO, NO);\r
                                        break;\r
 \r
                                case MENU_UPLOAD_AS :\r
                                        SetCurrentDirAsDirHist();\r
-                                       UpLoadListProc(YES, NO);\r
+                                       UploadListProc(YES, NO);\r
                                        break;\r
 \r
                                case MENU_UPLOAD_ALL :\r
                                        SetCurrentDirAsDirHist();\r
-                                       UpLoadListProc(NO, YES);\r
+                                       UploadListProc(NO, YES);\r
                                        break;\r
 \r
                                case MENU_MIRROR_UPLOAD :\r
@@ -1329,7 +1363,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
                                case MENU_REGSAVE :\r
                                        GetListTabWidth();\r
-                                       SaveRegistory();\r
+                                       SaveRegistry();\r
                                        SaveSettingsToFile();\r
                                        break;\r
 \r
@@ -1345,7 +1379,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                case MENU_REGINIT :\r
                                        if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)\r
                                        {\r
-                                               ClearRegistory();\r
+                                               ClearRegistry();\r
                                                SaveExit = NO;\r
                                                PostMessage(hWnd, WM_CLOSE, 0, 0L);\r
                                        }\r
@@ -1393,6 +1427,12 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                LocalRbuttonMenu(1);\r
                                        break;\r
 \r
+#if defined(HAVE_TANDEM)\r
+                               case MENU_SWITCH_OSS :\r
+                                       SwitchOSSProc();\r
+                                       break;\r
+#endif\r
+\r
                                default :\r
                                        if((LOWORD(wParam) >= MENU_BMARK_TOP) &&\r
                                           (LOWORD(wParam) < MENU_BMARK_TOP+100))\r
@@ -1410,8 +1450,13 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        switch(((LPNMHDR)lParam)->code)\r
                        {\r
                                /* ツールチップコントロールメッセージの処理 */\r
-                               case TTN_NEEDTEXT:\r
+                               // UTF-8対応\r
+//                             case TTN_NEEDTEXT:\r
+                               case TTN_NEEDTEXTW:\r
                                        lpttt = (LPTOOLTIPTEXT)lParam;\r
+                                       // UTF-8対応\r
+                                       // lptttは単なる警告回避用\r
+                                       wlpttt = (LPTOOLTIPTEXTW)lParam;\r
                                        lpttt->hinst = hInstFtp;\r
                                        switch(lpttt->hdr.idFrom)\r
                                        {\r
@@ -1430,7 +1475,15 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                case MENU_DOWNLOAD :\r
                                                        lpttt->lpszText = MSGJPN157;\r
                                                        break;\r
+#if defined(HAVE_TANDEM)\r
+                                               case MENU_DOWNLOAD_AS :\r
+                                                       lpttt->lpszText = MSGJPN065;\r
+                                                       break;\r
 \r
+                                               case MENU_UPLOAD_AS :\r
+                                                       lpttt->lpszText = MSGJPN064;\r
+                                                       break;\r
+#endif\r
                                                case MENU_UPLOAD :\r
                                                        lpttt->lpszText = MSGJPN158;\r
                                                        break;\r
@@ -1541,15 +1594,14 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                        lpttt->lpszText = MSGJPN176;\r
                                                        break;\r
                                        }\r
-                                       // UTF-8からShift_JISへ変換\r
+                                       // UTF-8対応\r
+                                       // UTF-8からUTF-16 LEへ変換\r
                                        {\r
                                                static wchar_t StringBufferUTF16[1024];\r
-                                               static char StringBufferSJIS[1024];\r
                                                if(lpttt->lpszText)\r
                                                {\r
                                                        MtoW(StringBufferUTF16, sizeof(StringBufferUTF16)/ sizeof(wchar_t), lpttt->lpszText, -1);\r
-                                                       WtoA(StringBufferSJIS, sizeof(StringBufferSJIS)/ sizeof(char), StringBufferUTF16, -1);\r
-                                                       lpttt->lpszText = StringBufferSJIS;\r
+                                                       wlpttt->lpszText = StringBufferUTF16;\r
                                                }\r
                                        }\r
                                        break;\r
@@ -2013,6 +2065,9 @@ static char *GetToken(char *Str, char *Buf)
 \r
 static void ExitProc(HWND hWnd)\r
 {\r
+       // 環境依存の不具合対策\r
+       char Tmp[FMAX_PATH+1];\r
+\r
        CancelFlg = YES;\r
 \r
        CloseTransferThread();\r
@@ -2031,7 +2086,7 @@ static void ExitProc(HWND hWnd)
        if(SaveExit == YES)\r
        {\r
                GetListTabWidth();\r
-               SaveRegistory();\r
+               SaveRegistry();\r
 \r
                if((CacheEntry > 0) && (CacheSave == YES))\r
                        SaveCache();\r
@@ -2041,6 +2096,14 @@ static void ExitProc(HWND hWnd)
        else\r
                DeleteCache();\r
 \r
+       // 環境依存の不具合対策\r
+       GetAppTempPath(Tmp);\r
+       SetYenTail(Tmp);\r
+       strcat(Tmp, "file");\r
+       _rmdir(Tmp);\r
+       GetAppTempPath(Tmp);\r
+       _rmdir(Tmp);\r
+\r
        if(RasClose == YES)\r
        {\r
                DisconnectRas(RasCloseNotify);\r
@@ -2084,7 +2147,9 @@ void DoubleClickProc(int Win, int Mode, int App)
 \r
                                if(Win == WIN_LOCAL)\r
                                {\r
-                                       if((App != -1) || (Type == NODE_FILE))\r
+                                       // ローカルフォルダを開く\r
+//                                     if((App != -1) || (Type == NODE_FILE))\r
+                                       if((App != -1) || (Type == NODE_FILE) || (Mode == YES))\r
                                        {\r
                                                if((DclickOpen == YES) || (Mode == YES))\r
                                                {\r
@@ -2114,6 +2179,10 @@ void DoubleClickProc(int Win, int Mode, int App)
 \r
                                                        strcpy(Remote, TmpPath);\r
                                                        SetYenTail(Remote);\r
+                                                       // 環境依存の不具合対策\r
+                                                       strcat(Remote, "file");\r
+                                                       _mkdir(Remote);\r
+                                                       SetYenTail(Remote);\r
                                                        if (UseDiffViewer == YES) {\r
                                                                strcat(Remote, "remote.");\r
                                                        }\r
@@ -2157,12 +2226,12 @@ void DoubleClickProc(int Win, int Mode, int App)
                                                        /* 不正なパスを検出 */\r
                                                        if(CheckPathViolation(&MainTransPkt) == NO)\r
                                                        {\r
-//                                                             if((Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)\r
+//                                                             if((Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)\r
 //                                                             {\r
 //                                                                     ReConnectCmdSkt();\r
                                                                        // 同時接続対応\r
                                                                        CancelFlg = NO;\r
-                                                                       Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);\r
+                                                                       Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);\r
 //                                                             }\r
                                                        }\r
 \r
@@ -2526,6 +2595,13 @@ void ExecViewer(char *Fname, int App)
                DoPrintf("ShellExecute - %s", Fname);\r
                ShellExecute(NULL, "open", Fname, NULL, CurDir, SW_SHOW);\r
        }\r
+       // ローカルフォルダを開く\r
+       else if((App == -1) && (GetFileAttributes(Fname) & FILE_ATTRIBUTE_DIRECTORY))\r
+       {\r
+               MakeDistinguishableFileName(ComLine, Fname);\r
+               DoPrintf("ShellExecute - %s", Fname);\r
+               ShellExecute(NULL, "open", ComLine, NULL, Fname, SW_SHOW);\r
+       }\r
        else\r
        {\r
                App = max1(0, App);\r
@@ -2707,7 +2783,9 @@ static void DeleteAlltempFile(void)
 *              BOOL TRUE/FALSE\r
 *----------------------------------------------------------------------------*/\r
 \r
-static BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
 {\r
        static char Tmp[80];\r
        int Ver;\r
@@ -2837,7 +2915,9 @@ int BackgrndMessageProc(void)
        {\r
                // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
 //             if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
-               if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+               // 64ビット対応\r
+//             if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+               if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD_PTR)&Msg))\r
                {\r
                        /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */\r
                        /* コンボボックス内ではアクセラレータを無効にする */\r
@@ -3039,4 +3119,11 @@ BOOL IsMainThread()
        if(GetCurrentThreadId() != MainThreadId)\r
                return FALSE;\r
        return TRUE;\r
-}
\ No newline at end of file
+}\r
+\r
+// ファイルアイコン表示対応\r
+int AskDispFileIcon(void)\r
+{\r
+       return(DispFileIcon);\r
+}\r
+\r