CString CBase_AnalysisTemplate::GetDataFolder(enumPADATATYPENAME nDataType) { TCHAR szOut[MAX_PATH]; DWORD dwAttr; switch(nDataType) { case PA_DATATYPENAME_SAMPLE: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathSample); break; case PA_DATATYPENAME_TASK: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathTask); break; case PA_DATATYPENAME_COMPOUND: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathCompound); break; case PA_DATATYPENAME_METHOD: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathMethod); break; case PA_DATATYPENAME_CRYSTALREPORT: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathCrystalReport); break; case PA_DATATYPENAME_LOG: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathLog); break; case PA_DATATYPENAME_DATA: default: StrCpy(szOut, g_cConfigIni.CurrentSystem().m_szPathData); } dwAttr = GetFileAttributes(szOut); if (dwAttr == INVALID_FILE_ATTRIBUTES || !(dwAttr & FILE_ATTRIBUTE_DIRECTORY)) { SHCreateDirectory(NULL, szOut); } PathAddBackslash(szOut); return CString(szOut); }
BOOL GetBookmarkFileName(HWND hwndHexView, LPCTSTR szFileName, TCHAR *szBookPath) { TCHAR szBase[MAX_PATH] = {0}; TCHAR szAppData[MAX_PATH]; TCHAR *pszName; UINT64 bookid; if(szFileName == 0) { szFileName = szBase; if(!HexView_GetFileName(hwndHexView, szBase, MAX_PATH)) return FALSE; } // has this file got a bookmark id already?? if(LoadFileData(szFileName, TEXT("HexEdit.bookmark"), &bookid, sizeof(UINT64)) != sizeof(UINT64)) { //BY_HANDLE_FILE_INFORMATION bhfi; //HANDLE hFile = CreateFile(szBase, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); //if(hFile == INVALID_HANDLE_VALUE) // return FALSE; // generate one from the base NTFS fileid //GetFileInformationByHandle(hFile, &bhfi); //CloseHandle(hFile); bookid = GetTickCount();//(UINT64)bhfi.nFileIndexLow | ((UINT64)bhfi.nFileIndexHigh << 32); // only save if the file exists if(GetFileAttributes(szFileName) != INVALID_FILE_ATTRIBUTES) { SaveFileData(szFileName, TEXT("HexEdit.bookmark"), &bookid, sizeof(UINT64)); } } if((pszName = _tcsrchr(szFileName, '\\')) == 0) return FALSE; // get location of application data // // get/create the following directory: // // {ApplicationData}\Local\Catch22\Bookmarks // GetProgramDataPath(szAppData, MAX_PATH); lstrcat(szAppData, TEXT("\\Bookmarks")); SHCreateDirectory(NULL, szAppData); // // Formulate the bookmark filename // wsprintf(szBookPath, TEXT("%s\\%s-%08x-bookmark.xml"), szAppData, pszName+1, bookid); //lstrcat(szBookPath, pszName+1); //lstrcat(szBookPath, TEXT(".bookmark")); return TRUE; }
bool MoveAction::Act(const Archive & archive) { if (!dest_dir_.empty()) { int create_dir = SHCreateDirectory(NULL, dest_dir_.c_str()); if (create_dir != ERROR_SUCCESS) { std::wstring error = util::FormatErrorMessage(); return false; } } int ret = CopyFileEx(archive.FullName().c_str(), dest_path_.c_str(), (LPPROGRESS_ROUTINE)Callback, this, NULL, 0); if (!ret) { std::wstring errormessage = util::FormatErrorMessage(); return false; } if (!orignal_reserved_) { DeleteFile(archive.FullName().c_str()); } return true; }
// Code is duplicated in CDefaultContextMenu HRESULT CNewMenu::CreateNewFolder(LPCMINVOKECOMMANDINFO lpici) { WCHAR wszPath[MAX_PATH]; WCHAR wszName[MAX_PATH]; WCHAR wszNewFolder[25]; HRESULT hr; /* Get folder path */ hr = SHGetPathFromIDListW(m_pidlFolder, wszPath); if (FAILED_UNEXPECTEDLY(hr)) return hr; if (!LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, _countof(wszNewFolder))) return E_FAIL; /* Create the name of the new directory */ if (!PathYetAnotherMakeUniqueName(wszName, wszPath, NULL, wszNewFolder)) return E_FAIL; /* Create the new directory and show the appropriate dialog in case of error */ if (SHCreateDirectory (lpici->hwnd, wszName) != ERROR_SUCCESS) return E_FAIL; /* Show and select the new item in the def view */ SelectNewItem(lpici, SHCNE_MKDIR, SHCNF_PATHW, wszName); return S_OK; }
bool MakeDirectory(String path, bool recursive) { // TODO: revise: according to MSDN: // "[SHCreateDirectory is available for use in the operating systems // specified in the Requirements section. It may be altered or unavailable // in subsequent versions.]" int r = SHCreateDirectory(GetActiveWindow(), PCWSTR(path.c_str())); if (r == ERROR_SUCCESS) return true; return false; }
bool CAppreciation::Initialization(PVOID pData) { CHAR szTempPath[MAX_PATH+1] = {0}; WCHAR szTempPathW[MAX_PATH+1] = {0}; GetTempPathA(MAX_PATH,szTempPath); PathAddBackslashA(szTempPath); strcat_s(szTempPath,MAX_PATH,this->DoGetClassName()); PathAddBackslashA(szTempPath); strcat_s(szTempPath,MAX_PATH,"Download"); PathAddBackslashA(szTempPath); MbsToWcs(szTempPath,szTempPathW); SHCreateDirectory(NULL,szTempPathW); m_cAppreciationTaskList.Initialization("lpvoidray.lingpao8.com","00000000_00027C47",szTempPath,NULL); return true; }
///////////////Ajax OnStateChange实现部分 STDMETHODIMP LuaAsynUtil::OnStateChange(CAJAX* pSource, const bool bSucceeded, const int nHttpState, const BSTR /*bstrResponse*/, IDispatch* pDispath) { if(bSucceeded && (nHttpState >= 200 && nHttpState < 300 )) { if (pSource->m_bOutDOM) { g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILESUCCESS, pSource->m_nID, (LPARAM)pSource); } else //存成文件 { if ((AjaxTaskFlag)pSource->m_nID == AJAXTASKFLAG_SENDHTTPSTAT || (AjaxTaskFlag)pSource->m_nID == AJAXTASKFLAG_SENDHTTPSTATEX) { g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILESUCCESS, pSource->m_nID, (LPARAM)pSource); } else { CComBSTR bstrSavedPath = pSource->m_bstrSavedPath; MSXML::IXMLHttpRequestPtr pRequest(pDispath); if ((AjaxTaskFlag)pSource->m_nID == AJAXTASKFLAG_GETHTTPCONTENT) { //try //{ CComBSTR bstrContent; pRequest->get_responseText(&bstrContent); pSource->m_bstrSavedPath = L""; pSource->m_bstrSavedPath.AppendBSTR(bstrContent); g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILESUCCESS, pSource->m_nID, (LPARAM)pSource); //} //catch (...) //{ // g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILEFAILED, pSource->m_nID, (LPARAM)pSource); //} } else if ((AjaxTaskFlag)pSource->m_nID == AJAXTASKFLAG_GETHTTPFILE) { CComVariant varStream; pRequest->get_responseStream(&varStream); if (varStream.vt != VT_UNKNOWN && varStream.vt != VT_STREAM) { g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILEFAILED, pSource->m_nID, (LPARAM)pSource); } else { wchar_t szPath[_MAX_PATH] = {0}; wcsncpy(szPath, bstrSavedPath, _MAX_PATH); PathRemoveFileSpec(szPath); if(!PathFileExists(szPath)) SHCreateDirectory(NULL, szPath); //写文件 HANDLE hFile = ::CreateFile((LPCTSTR)bstrSavedPath,GENERIC_WRITE,0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // 可能目录只读, 存到programdata/temp下 if (hFile == INVALID_HANDLE_VALUE) { static CComBSTR bstrPath; if(bstrPath.Length() <= 0) { wchar_t szPath[MAX_PATH] = {0}; DWORD len = GetTempPath(MAX_PATH, szPath); bstrPath = szPath; } if(!PathFileExists(bstrPath)) SHCreateDirectory(NULL, bstrPath); CComBSTR bstrFileName = PathFindFileName(bstrSavedPath); CComBSTR bstrPath2(bstrPath); bstrPath2.AppendBSTR(bstrFileName); bstrSavedPath = bstrPath2; hFile = ::CreateFile((LPCTSTR)bstrSavedPath,GENERIC_WRITE,0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); } if (hFile != INVALID_HANDLE_VALUE) { DWORD cb, cbRead, cbWritten; BYTE bBuffer[4096]; cb = sizeof bBuffer; CComQIPtr<IStream> pStream(varStream.punkVal); HRESULT hr = pStream->Read(bBuffer, cb, &cbRead); while (SUCCEEDED(hr) && 0 != cbRead) { if (!WriteFile(hFile, bBuffer, cbRead, &cbWritten, NULL)) break; hr = pStream->Read(bBuffer, cb, &cbRead); } } CloseHandle(hFile); pSource->m_bstrSavedPath = bstrSavedPath; g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILESUCCESS, pSource->m_nID, (LPARAM)pSource); } } else { g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILESUCCESS, pSource->m_nID, (LPARAM)pSource); } } } } else { CComBSTR bstrSavedPath(L""); if(!pSource->m_bOutDOM) { bstrSavedPath = pSource->m_bstrSavedPath; } g_wndMsg.PostMessage(WM_AJAXDOWNLOADFILEFAILED, pSource->m_nID, (LPARAM)pSource); } return S_OK; }
void TTFoundationLoadExternalClasses() { #ifdef TT_PLATFORM_MAC OSErr err = noErr; FSRef ref; UInt8 path[4096]; TTString fullpath; // Look in ~/Library/Application Support/TTBlue/Extensions err = FSFindFolder(kLocalDomain, kApplicationSupportFolderType, kCreateFolder, &ref); if (!err) { FSRefMakePath(&ref, path, 4096); fullpath = (char*)path; fullpath += "/Jamoma/Extensions"; TTFoundationLoadExternalClassesFromFolder(fullpath); } // Look in /Library/Application Support/TTBlue/Extensions err = FSFindFolder(kUserDomain, kApplicationSupportFolderType, kCreateFolder, &ref); if (!err) { FSRefMakePath(&ref, path, 4096); fullpath = (char*)path; fullpath += "/Jamoma/Extensions"; TTFoundationLoadExternalClassesFromFolder(fullpath); } // Look in the folder of the host application CFBundleRef mainBundle = CFBundleGetMainBundle(); CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle); CFStringRef mainBundlePath = CFURLCopyFileSystemPath(mainBundleURL, kCFURLPOSIXPathStyle); char mainBundleStr[4096]; CFStringGetCString(mainBundlePath, mainBundleStr, 4096, kCFStringEncodingUTF8); strncat(mainBundleStr, "/Contents/Jamoma/Extensions", 4096); mainBundleStr[4095] = 0; TTFoundationLoadExternalClassesFromFolder(mainBundleStr); #elif TT_PLATFORM_WIN TTString fullpath; char temppath[4096]; // WCHAR wc[4096]; HKEY hKey = 0; LONG lRes; DWORD dwSize = sizeof(temppath); HRESULT hr; HINSTANCE hInstance = GetModuleHandle(NULL); // Look in C:\Program Files\Common Files\TTBlue\Extensions hr = SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES_COMMON, NULL, SHGFP_TYPE_CURRENT, (LPSTR)temppath); if (!FAILED(hr)) { fullpath = temppath; fullpath += "\\Jamoma\\Extensions\\"; lRes = SHCreateDirectory(NULL, (LPCWSTR)fullpath.c_str()); TTFoundationLoadExternalClassesFromFolder(fullpath); } // TODO: Look in some user-level directory like we do on the Mac? // Look in the support folder of the host application if (hInstance) { GetModuleFileName(hInstance, (LPSTR)temppath, 4096); if (temppath[0]) { char *s = strrchr(temppath, '\\'); if (s) *s = 0; fullpath = temppath; fullpath += "\\Jamoma\\Extensions\\"; lRes = SHCreateDirectory(NULL, (LPCWSTR)fullpath.c_str()); TTFoundationLoadExternalClassesFromFolder(fullpath); } } #else // Some other platform, like Linux #endif }
HANDLE GetFileHandle(_In_ OUTPUT_FILE_TYPE dwOutputFileType, _In_ OUTPUT_DIRECTORY_NAME tOutputDirectoryName, _In_ OUTPUT_FILE_NAME tOutputFileName) { PTCHAR tCurrentDirectory = NULL; HANDLE hOutputFile = INVALID_HANDLE_VALUE; PTCHAR tOutputFolder = pSyscrwlrOptions->tOutputFolderPath; LARGE_INTEGER liDistanceToMove; DWORD dwError = 0, dwFileSize = 0, dwRes = 0; tCurrentDirectory = (PTCHAR) HeapAlloc(hCrawlerHeap, HEAP_ZERO_MEMORY, sizeof (TCHAR) * MAX_PATH); if (!tCurrentDirectory) { DEBUG_LOG(D_ERROR, "Error during module current dir allocation\r\nExiting now..."); DoExit(D_ERROR); } if ((StringCchCat(tCurrentDirectory, MAX_PATH, tOutputFolder) != S_OK) || (StringCchCat(tCurrentDirectory, MAX_PATH, TEXT("\\")) != S_OK) || (StringCchCat(tCurrentDirectory, MAX_PATH, OUTPUT_FOLDER_NAME) != S_OK) || (StringCchCat(tCurrentDirectory, MAX_PATH, TEXT("\\")) != S_OK) || (StringCchCat(tCurrentDirectory, MAX_PATH, tOutputDirectoryName) != S_OK) || (StringCchCat(tCurrentDirectory, MAX_PATH, TEXT("\\")) != S_OK)) { DEBUG_LOG(D_WARNING, "Unable to create output path folder.\r\nExiting now..."); DoExit(D_ERROR); } dwRes = SHCreateDirectory(NULL, tCurrentDirectory); dwError = GetLastError(); // User put relative path, we cannot use SHCreateDirectory if ((dwRes != ERROR_SUCCESS) && (dwError == ERROR_BAD_PATHNAME)) { if (CreateFolderRecursively(tCurrentDirectory) != TRUE) { DEBUG_LOG(D_ERROR, "Unable to manually create directory architecture.\r\nExiting now..."); DoExit(D_ERROR); } } else if ((dwRes != ERROR_SUCCESS) && (dwError != ERROR_ALREADY_EXISTS)) { DEBUG_LOG(D_ERROR, "Unable to create output directory. Last error: %d.\r\nExiting now...", dwError); DoExit(D_ERROR); } if (StringCchCat(tCurrentDirectory, MAX_PATH, tOutputFileName) != S_OK) goto unableToBuildOutputFilename; switch (dwOutputFileType) { case OUTPUT_FILE_XML: if (StringCchCat(tCurrentDirectory, MAX_PATH, TEXT(".xml")) != S_OK) goto unableToBuildOutputFilename; break; case OUTPUT_FILE_CSV: if (StringCchCat(tCurrentDirectory, MAX_PATH, TEXT(".csv")) != S_OK) goto unableToBuildOutputFilename; break; default: DEBUG_LOG(D_ERROR, "File type unknown.\r\nExiting now..."); DoExit(D_ERROR); break; } hOutputFile = CreateFile_s(tCurrentDirectory, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hOutputFile == INVALID_HANDLE_VALUE) { DEBUG_LOG(D_WARNING, "Unable to create output file for format: %ws.\r\nExiting now...", tOutputFileName); DoExit(D_ERROR); } dwFileSize = GetFileSize(hOutputFile, NULL); if (dwFileSize == INVALID_FILE_SIZE) { DEBUG_LOG(D_ERROR, "Error during reading FileSize for %ws.\r\nExiting now...", tCurrentDirectory); DoExit(D_ERROR); } else if (dwFileSize == 0) { goto ReturnHandle; } ZeroMemory(&liDistanceToMove, sizeof(LARGE_INTEGER)); if (SetFilePointerEx(hOutputFile, liDistanceToMove, NULL, FILE_END) == INVALID_SET_FILE_POINTER) { dwError = GetLastError(); DEBUG_LOG(D_WARNING, "Unable to move file pointer to the end of the file for: %ws (err: %d).\r\nExiting now...", tOutputFileName, dwError); DoExit(D_ERROR); } ReturnHandle: HeapFree(hCrawlerHeap, NULL, tCurrentDirectory); return hOutputFile; unableToBuildOutputFilename: DEBUG_LOG(D_ERROR, "Unable to create out filename.\r\nExiting now..."); DoExit(D_ERROR); return NULL; }
int plat_dir_create(wchar_t *path) { // return((int)CreateDirectory(path, NULL)); return((int)SHCreateDirectory(hwndMain, path)); }
HRESULT CMainDlg::PCSoftRun(DISPID dispIdMember, DISPPARAMS *pDispParams, VARIANT *pVarResult) { CComVariant retVal; if(pDispParams->rgvarg[0].bstrVal == NULL || pDispParams->rgvarg[0].bstrVal[0] == L'\0') { retVal = false; } else { ShowWindow(FALSE); CString strOld; CString strNew; GetRegExtInfo(strOld); CString strStore; BKSafeConfig::GetStoreDir(strStore); SHCreateDirectory(NULL, strStore); strStore = _PathAddBackslash(strStore) + pDispParams->rgvarg[0].bstrVal; CString strCmd; strCmd = strStore; CreateProcessSyn(strCmd); GetRegExtInfo(strNew); if (strOld != strNew) { CBkSafeMsgBox2 msgbox; msgbox.AddButton(L"是", IDOK); msgbox.AddButton(L"否", IDCANCEL); CString strMsg; strMsg.Format(L"软件安装完成,是否立即打开文件“%s”", m_strFileName); UINT nRet = msgbox.ShowMutlLineMsg(strMsg, NULL, MB_BK_CUSTOM_BUTTON|MB_ICONQUESTION, NULL); if(nRet == IDOK) { ::ShellExecute(NULL, L"open", g_strCmd, L"", NULL, SW_SHOWNORMAL); } } else { CBkSafeMsgBox2 msgbox; msgbox.AddButton( TEXT("确定"), IDOK); CString strMsg; strMsg.Format(L"由于您已取消,将无法打开文件“%s”", m_strFileName); msgbox.ShowMutlLineMsg( strMsg, NULL, MB_BK_CUSTOM_BUTTON | MB_ICONWARNING ); } OnBkBtnClose(); //::PostMessage(m_hWnd, WM_CLOSE, 0, 0); retVal = true; } if(pVarResult != NULL) { retVal.Detach(pVarResult); } return S_OK; }
HRESULT CMainDlg::PCSoftStartDown(DISPID dispIdMember, DISPPARAMS *pDispParams, VARIANT *pVarResult) { CComVariant retVal = false; do { LONG id = safe_atol(pDispParams->rgvarg[4].bstrVal); if(id == 0) { break; } // // 若文件已存在,则直接返回 // CString strStore; BKSafeConfig::GetStoreDir(strStore); SHCreateDirectory(NULL, strStore); strStore = _PathAddBackslash(strStore) + pDispParams->rgvarg[1].bstrVal; if(::PathFileExists(strStore)) { retVal = true; break; } CriticalSectionScoped locker(m_csPhoneNess); // 若任务已经存在,则直接返回 { Id2PhoneSoftIter itSoft = m_id2PhoneSoft.Lookup(id); if(itSoft != NULL) { retVal = false; break; } } IDTManager *pDTMgr = GetDTMgrForPhone(); if(pDTMgr != NULL) { int curPos = 0; CString strUrl = pDispParams->rgvarg[3].bstrVal; CString token = strUrl.Tokenize(L" ", curPos); if(!token.IsEmpty()) { CAtlArray<CString> *pUrlArray = new CAtlArray<CString>(); do { pUrlArray->Add(token); token = strUrl.Tokenize(L" ", curPos); } while(!token.IsEmpty()); PhoneSoft ps; ps.speed = 0; ps.recved = 0; ps.state = PDS_INIT; ps.idDown = pDTMgr->NewTask(pUrlArray, pDispParams->rgvarg[2].bstrVal, strStore); m_id2PhoneSoft[id] = ps; m_dt2Id[ps.idDown] = id; retVal = true; } } } while(FALSE); if(pVarResult != NULL) { retVal.Detach(pVarResult); } return S_OK; }