'日付の比較 a = CDate("2020/1/1") b = CDate("2020/1/2") If a < b Then '大なり If a > b Then '小なり If a = b Then '等しい If a <> b Then '等しくない
MFC 転送URLの転送先を取得
変数urlに URLが入ってるとしての処理
szRedirectが!=""なら転送。ここに転送先URLが入ってる
// 転送URL先URL取得 CString Server_Host_Address; CString FileLocation; CString Referer; CString SaveDirectory; CString SaveName; CString tmpUrl = url; tmpUrl.Replace("http://", ""); tmpUrl.Replace("https://", ""); int pos = tmpUrl.Find("/"); Server_Host_Address = tmpUrl.Left(pos); FileLocation = tmpUrl.Mid(pos + 1); HINTERNET hInternet; HINTERNET hHttpSession; // WININET初期化 hInternet = InternetOpen( "Web_Downloader", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if(hInternet == NULL ) return 0; hHttpSession = InternetOpenUrl(hInternet, url, NULL, 0, INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_RELOAD, 0 ); if (hHttpSession == NULL) { InternetCloseHandle(hInternet); return 0; } TCHAR szRedirect[4096] = { 0 }; DWORD dwRedirect = sizeof(szRedirect); DWORD StatusCode, StatusCode_Size = sizeof(DWORD); BOOL bHttpQueryInfo_STATUS = HttpQueryInfo( //エラーコードを数値として返してくれる。 hHttpSession, HTTP_QUERY_LOCATION, (LPVOID)szRedirect, &dwRedirect, NULL); if ( szRedirect[0] != '\0' ) { // 転送! } InternetCloseHandle(hHttpSession); InternetCloseHandle(hInternet);
VBScriptで、32 ビットまたは 64 ビットの Windows OS を実行しているかどうかを判断
strOSArch = GetObject("winmgmts:root\cimv2:Win32_OperatingSystem=@").OSArchitecture If Instr(strOSArch,"64") <> 0 Then 'OSが64ビット MsgBox "64" Else 'OSが32ビット MsgBox "32" End if
以下は完璧じゃないっぽい
Dim WshShell Dim WshProcEnv Dim system_architecture Dim process_architecture Set WshShell = CreateObject("WScript.Shell") Set WshProcEnv = WshShell.Environment("Process") process_architecture= WshProcEnv("PROCESSOR_ARCHITECTURE") If process_architecture = "x86" Then system_architecture= WshProcEnv("PROCESSOR_ARCHITEW6432") If system_architecture = "" Then system_architecture = "x86" End if Else system_architecture = process_architecture End If
inno setup の インストーラーの64bit/32bit指定方法
1)x64対応アプリ、インストーラをx64環境で動かす。
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
2)x86対応アプリ、インストーラをx86環境で動かす。
;ArchitecturesInstallIn64BitModeは記述しない
ArchitecturesAllowed=x86
3)x86対応アプリ、インストーラをx64環境のWOW64で動かす。
;ArchitecturesInstallIn64BitModeは記述しない
ArchitecturesAllowed=x86 x64
バッチファイルで終了
exit /b
ネタ元
MFCで バージョン表記の文字列などから数値部分だけ抽出
CString csTempVer = "1.2.33"; CString csNum = ""; int pos; while (!csTempVer.IsEmpty()) { pos = csTempVer.SpanExcluding("0123456789").GetLength(); csTempVer = csTempVer.Mid(pos); pos = csTempVer.SpanIncluding("0123456789").GetLength(); csNum += csTempVer.Left(pos); csTempVer = csTempVer.Mid(pos); }
ネタ元
MFCでDoEvent
void DoEvents() { MSG msg; while(::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) { if (!AfxGetApp()->PumpMessage()) return; } }
MFC ファイルコピー 移動 削除 リネーム
CopyFile()
MoveFile()
DeleteFile()
CFile::Rename()