⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup_c.cpp

📁 This software performs code conversion of Chinese characters, including GB2312/GBK and BIG5. It a
💻 CPP
📖 第 1 页 / 共 5 页
字号:

               if ( IsNT () ) SetPathSeparatorW ( szInstallFolderW, REMOVE_SEPARATOR_ALWAYS ) ;
               else           SetPathSeparatorA ( szInstallFolderA, REMOVE_SEPARATOR_ALWAYS ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDCANCEL, GetStringW ( IDS_CANCEL ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDCANCEL, GetStringA ( IDS_CANCEL ) ) ;

               // 僼僅儖僟傪嶌惉
               int IsFailedMakeDir = 0 ;
               if ( IsNT () ) IsFailedMakeDir += ( ! IsFolderExistW ( szInstallFolderW ) ) && MakeDirectoryW ( szInstallFolderW, 0 ) ;
               else           IsFailedMakeDir += ( ! IsFolderExistA ( szInstallFolderA ) ) && MakeDirectoryA ( szInstallFolderA, 0 ) ;

               // 昞帵尵岅梡偺僼僅儖僟傪嶌惉
               if ( IsNT () ) {
                  wchar_t szTmp [ MAX_PATH ] ;
                  wcscpy ( szTmp, szInstallFolderW ) ;
                  wcscat ( szTmp, LangDllFolder.W ) ;
                  IsFailedMakeDir += ( ! IsFolderExistW ( szTmp ) ) && MakeDirectoryW ( szTmp, 0 ) ;
               }
               else {
                  char szTmp [ MAX_PATH ] ;
                  strcpy ( szTmp, szInstallFolderA ) ;
                  strcat ( szTmp, LangDllFolder.A ) ;
                  IsFailedMakeDir += ( ! IsFolderExistA ( szTmp ) ) && MakeDirectoryA ( szTmp, 0 ) ;
               }

               if ( IsFailedMakeDir ) {
                  nStep = -1 ;
                  if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_FAIL_MKDIR ) ) ;
                  else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_FAIL_MKDIR ) ) ;
                  Dlg_EnableWindow ( hWnd, IDCANCEL, FALSE ) ;
                  Dlg_Button_SetStyle ( hWnd, IDOK, BS_DEFPUSHBUTTON, TRUE ) ;
                  Dlg_SetFocus ( hWnd, IDOK ) ;
                  MessageBeep ( MB_OK ) ;
                  return TRUE ;
               }

               nStep = -1 ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_COPYING ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_COPYING ) ) ;

               // 媽僶乕僕儑儞偑偁傞偐偳偆偐傪妋擣
               if ( IsNT () ) {
                  swprintf ( FileName.W, L"%s\\%s", szInstallFolderW, ( InstallFileName [ 2 ] ).W ) ;
                  if ( IsFileExistW ( FileName.W ) ) nOldVersion = GetDllVersionW ( FileName.W ) ;
               }
               else {
                  sprintf ( FileName.A, "%s\\%s", szInstallFolderA, ( InstallFileName [ 2 ] ).A ) ;
                  if ( IsFileExistA ( FileName.A ) ) nOldVersion = GetDllVersionA ( FileName.A ) ;
               }
               if ( ! nOldVersion ) nOldVersion = 300 ;

               // 僼傽僀儖傪僀儞僗僩乕儖
               if ( IsNT () ) {
                  for ( int nCount = 0 ; ( InstallFileName [ nCount ] ).W ; nCount ++ ) {
                     if ( InstallFileW ( hWnd, ( InstallFileName [ nCount ] ).W, szInstallFolderW ) ) return TRUE ;
                  }
               }
               else {
                  for ( int nCount = 0 ; ( InstallFileName [ nCount ] ).A ; nCount ++ ) {
                     if ( InstallFileA ( hWnd, ( InstallFileName [ nCount ] ).A, szInstallFolderA ) ) return TRUE ;
                  }
               }

               // 屆偄僼傽僀儖傪嶍彍
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_DELETE_OLD ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_DELETE_OLD ) ) ;
               if ( IsNT () ) {
                  for ( int nCount = 0 ; ( OldFileName [ nCount ] ).W ; nCount ++ ) {
                     if ( DeleteOldFileW ( hWnd, ( OldFileName [ nCount ] ).W, szInstallFolderW ) ) return TRUE ;
                  }
               }
               else {
                  for ( int nCount = 0 ; ( OldFileName [ nCount ] ).A ; nCount ++ ) {
                     if ( DeleteOldFileA ( hWnd, ( OldFileName [ nCount ] ).A, szInstallFolderA ) ) return TRUE ;
                  }
               }
               // 慡偰偺僔儑乕僩僇僢僩傪嶍彍
               if ( IsNT () ) DeleteShortcutW () ;
               else           DeleteShortcutA () ;

               // 僶僢僠僼傽僀儖傪嶌惉
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_CREATING ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_CREATING ) ) ;

               if ( IsNT () ) MakeBatchFileW ( szInstallFolderW, 0 ) ;
               else           MakeBatchFileA ( szInstallFolderA, 0 ) ;
               if ( IsNT () ) MakeBatchFileW ( szInstallFolderW, 1 ) ;
               else           MakeBatchFileA ( szInstallFolderA, 1 ) ;

               // 僼傽僀儖偺僐僺乕傪廔椆
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;

               // 屆偄僶乕僕儑儞偺僆僾僔儑儞傪堏摦
               MoveOldConfigFile ( hWnd, nOldVersion ) ;

               // 屆偄僶乕僕儑儞偺僆僾僔儑儞傪廋惓
               UpdateConfigFile ( hWnd, nOldVersion ) ;

               // 傾僀僐儞僉儍僢僔儏僼傽僀儖傪嶍彍
               if ( IsNT () ) DeleteIconCacheW () ;
               else           DeleteIconCacheA () ;

               // 僗僞乕僩儊僯儏乕偵僔儑乕僩僇僢僩傪嶌惉
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_STARTMENU ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_STARTMENU ) ) ;

               if ( IsNT () ) GetSpecialFolderPathW ( NULL, FileName.W, CSIDL_COMMON_PROGRAMS, 0 ) ;
               else           GetSpecialFolderPathA ( NULL, FileName.A, CSIDL_PROGRAMS, 0 ) ;
               if ( IsNT () ) swprintf ( wcsend ( FileName.W ), L"\\%s", GetStringW ( IDS_STARTMENU_FOLDER ) ) ;
               else           sprintf ( strend ( FileName.A ), "\\%s", GetStringA ( IDS_STARTMENU_FOLDER ) ) ;
               if ( IsNT () ) MakeDirectoryW ( FileName.W, 0 ) ;
               else           MakeDirectoryA ( FileName.A, 0 ) ;
               if ( IsNT () ) MakeShortcutW ( FileName.W, szInstallFolderW, 0 ) ;
               else           MakeShortcutA ( FileName.A, szInstallFolderA, 0 ) ;

               // 僨僗僋僩僢僾偵僔儑乕僩僇僢僩傪嶌惉偡傞偐妋擣
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDOK, GetStringW ( IDS_YES ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDOK, GetStringA ( IDS_YES ) ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDCANCEL, GetStringW ( IDS_NO ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDCANCEL, GetStringA ( IDS_NO ) ) ;

               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_ASK_DESKTOP ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_ASK_DESKTOP ) ) ;
               MessageBeep ( MB_OK ) ;
               nStep = 2 ;
               return TRUE ;
            }

            break ;
         }

         // 僗僥僢僾俀
         if ( nStep == 2 ) {

            if ( LOWORD ( wParam ) == IDOK || LOWORD ( wParam ) == IDCANCEL ) {

               // 僨僗僋僩僢僾偵僔儑乕僩僇僢僩傪嶌惉
               if ( LOWORD ( wParam ) == IDOK ) {

                  if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_DESKTOP ) ) ;
                  else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_DESKTOP ) ) ;

                  if ( IsNT () ) GetSpecialFolderPathW ( NULL, FileName.W, CSIDL_COMMON_DESKTOPDIRECTORY, 0 ) ;
                  else           GetSpecialFolderPathA ( NULL, FileName.A, CSIDL_DESKTOPDIRECTORY, 0 ) ;
                  if ( IsNT () ) MakeShortcutW ( FileName.W, szInstallFolderW, 1 ) ;
                  else           MakeShortcutA ( FileName.A, szInstallFolderA, 1 ) ;

                  if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
                  else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;
               }

               // 儗僕僗僩儕偵彂偒崬傒
               if ( IsNT () ) {
                  // 僷僗忣曬
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_W, L"Path", szInstallFolderW ) ;
                  // 傾儞僀儞僗僩乕儖忣曬
                  LoadStringExW ( IDS_SOFTWARENAME, FileName.W, MAX_PATH ) ;
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_W, L"DisplayName", FileName.W ) ;
                  swprintf ( FileName.W, L"\"%s\\%s\" /r", szInstallFolderW, L"setup.exe" ) ;
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_W, L"UninstallString", FileName.W ) ;
                  wcscpy ( FileName.W, HOMEPAGE_ADDRESS_W ) ;
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_W, L"HelpLink", FileName.W ) ;
                  wcscpy ( FileName.W, L"Harigaya Soichi" ) ;
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_W, L"Publisher", FileName.W ) ;
                  swprintf ( FileName.W, L"%s\\%s", szInstallFolderW, ( InstallFileName [ 0 ] ).W ) ;
                  SetRegStringW ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_W, L"DisplayIcon", FileName.W ) ;
               }
               else {
                  // 僷僗忣曬
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_A, "Path", szInstallFolderA ) ;
                  // 傾儞僀儞僗僩乕儖忣曬
                  LoadStringExA ( IDS_SOFTWARENAME, FileName.A, MAX_PATH ) ;
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_A, "DisplayName", FileName.A ) ;
                  sprintf ( FileName.A, "\"%s\\%s\" /r", szInstallFolderA, "setup.exe" ) ;
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_A, "UninstallString", FileName.A ) ;
                  strcpy ( FileName.A, HOMEPAGE_ADDRESS_A ) ;
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_A, "HelpLink", FileName.A ) ;
                  strcpy ( FileName.A, "Harigaya Soichi" ) ;
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_A, "Publisher", FileName.A ) ;
                  sprintf ( FileName.A, "%s\\%s", szInstallFolderA, ( InstallFileName [ 0 ] ).A ) ;
                  SetRegStringA ( HKEY_LOCAL_MACHINE, REG_SUBKEY_UNINSTALL_A, "DisplayIcon", FileName.A ) ;
               }

               Sleep ( 500 ) ;

               // 廔椆儊僢僙乕僕
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_MESSAGE, GetStringW ( IDS_STEP_SUCCESS ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_MESSAGE, GetStringA ( IDS_STEP_SUCCESS ) ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_STATIC_PROG, L"" ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDC_STATIC_PROG, "" ) ;

               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDOK, GetStringW ( IDS_OK ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDOK, GetStringA ( IDS_OK ) ) ;
               if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDCANCEL, GetStringW ( IDS_CANCEL ) ) ;
               else           Dlg_Wm_SetTextA ( hWnd, IDCANCEL, GetStringA ( IDS_CANCEL ) ) ;

               Dlg_EnableWindow ( hWnd, IDCANCEL, FALSE ) ;
               Dlg_Button_SetStyle ( hWnd, IDOK, BS_DEFPUSHBUTTON, TRUE ) ;
               Dlg_SetFocus ( hWnd, IDOK ) ;
               MessageBeep ( MB_OK ) ;
               nStep = -1 ;
               return TRUE ;
            }

            break ;
         }


         // 廔椆
         if ( nStep == -1 ) {
            if ( LOWORD ( wParam ) == IDOK || LOWORD ( wParam ) == IDCANCEL ) {
               EndDialog ( hWnd, 0 ) ;
               return TRUE ;
            }
            break ;
         }

         break ;

      default :
         break ;
   }

   return FALSE ;
}



// 昞帵僐儞僩儘乕儖
// OK 側傜 0 偱丄CANCEL 側傜 1 偱廔椆
INT_PTR CALLBACK EditDialogProc ( HWND hWnd, unsigned int dwMessage, WPARAM wParam, LPARAM lParam ) {

   switch ( dwMessage ) {

      case WM_INITDIALOG :

         if ( IsNT () ) Dlg_Wm_SetTextW ( hWnd, IDC_EDIT, szInstallFolderW ) ;
         else           Dlg_Wm_SetTextA ( hWnd, IDC_EDIT, szInstallFolderA ) ;
         return TRUE ;

      case WM_COMMAND :

         if ( LOWORD ( wParam ) == IDCANCEL ) {
            EndDialog ( hWnd, 1 ) ;
            return TRUE ;
         }

         if ( LOWORD ( wParam ) == IDOK ) {

            if ( IsNT () ) {

               wchar_t szBuffer [ MAX_PATH ] ;

               Dlg_Wm_GetTextW ( hWnd, IDC_EDIT, szBuffer, MAX_PATH ) ;
               if ( wcslen ( szBuffer ) > MAX_PATH_FOLDER_PARENT ) {
                  MessageBoxW ( NULL, GetStringW ( IDS_PATH_TOO_LONG ), szCommandNameW, MB_OK ) ;
                  return TRUE ;
               }

               wcscpy ( szInstallFolderW, szBuffer ) ;
            }
            else {

               char szBuffer [ MAX_PATH ] ;

               Dlg_Wm_GetTextA ( hWnd, IDC_EDIT, szBuffer, MAX_PATH ) ;
               if ( strlen ( szBuffer ) > MAX_PATH_FOLDER_PARENT ) {
                  MessageBoxA ( NULL, GetStringA ( IDS_PATH_TOO_LONG ), szCommandNameA, MB_OK ) ;
                  return TRUE ;
               }

               strcpy ( szInstallFolderA, szBuffer ) ;
            }

            EndDialog ( hWnd, 0 ) ;
            return TRUE ;
         }

         if ( LOWORD ( wParam ) == IDC_BUTTON_REF ) {

            if ( IsNT () ) {

               wchar_t szBuffer [ MAX_PATH ] ;

               Dlg_Wm_GetTextW ( hWnd, IDC_EDIT, szBuffer, MAX_PATH ) ;
               SetPathSeparatorW ( szBuffer, ADD_SEPARATOR_ONLY_ROOT ) ;

               while ( GetFileAttributesW ( szBuffer ) == (unsigned long) -1 ) {
                  ChangeFileNameW ( szBuffer, NULL ) ;
                  SetPathSeparatorW ( szBuffer, ADD_SEPARATOR_ONLY_ROOT ) ;
                  if ( ! GetFileNameW ( szBuffer ) ) break ;
               }

               if ( ! BrowseForFolderW ( hWnd, szBuffer, szBuffer, szCommandNameW, GetStringW ( IDS_BROWSE_FOLDER ), 0 ) ) {
                  SetPathSeparatorW ( szBuffer, REMOVE_SEPARATOR_ALWAYS ) ;
                  if ( ! wcsstri ( szBuffer, FOLDER_NAME_W ) ) {
                     if ( ! wcsstri ( szBuffer, L"HARIGAYA" ) ) wcscat ( szBuffer, L"\\Harigaya\\" ) ;
                     else                                       wcscat ( szBuffer, L"\\" ) ;
                     wcscat ( szBuffer, FOLDER_NAME_W ) ;
                  }
                  Dlg_Wm_SetTextW ( hWnd, IDC_EDIT, szBuffer ) ;
                  return TRUE ;
               }
            }
            else {

               char szBuffer [ MAX_PATH ] ;

               Dlg_Wm_GetTextA ( hWnd, IDC_EDIT, szBuffer, MAX_PATH ) ;
               SetPathSeparatorA ( szBuffer, ADD_SEPARATOR_ONLY_ROOT ) ;

               while ( GetFileAttributesA ( szBuffer ) == (unsigned long) -1 ) {
                  ChangeFileNameA ( szBuffer, NULL ) ;
                  SetPathSeparatorA ( szBuffer, ADD_SEPARATOR_ONLY_ROOT ) ;
                  if ( ! GetFileNameA ( szBuffer ) ) break ;
               }

               if ( ! BrowseForFolderA ( hWnd, szBuffer, szBuffer, szCommandNameA, GetStringA ( IDS_BROWSE_FOLDER ), 0 ) ) {
                  SetPathSeparatorA ( szBuffer, REMOVE_SEPARATOR_ALWAYS ) ;
                  if ( ! strstri ( szBuffer, FOLDER_NAME_A ) ) {
                     if ( ! strstri ( szBuffer, "HARIGAYA" ) ) strcat ( szBuffer, "\\Harigaya\\" ) ;
                     else                                      strcat ( szBuffer, "\\" ) ;
                     strcat ( szBuffer, FOLDER_NAME_A ) ;
                  }
                  Dlg_Wm_SetTextA ( hWnd, IDC_EDIT, szBuffer ) ;
                  return TRUE ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -