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);
}
Пример #2
0
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;
}
Пример #3
0
	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;
	}
Пример #4
0
// 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;
}
Пример #5
0
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;
}
Пример #6
0
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;
}
Пример #7
0
///////////////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;
}
Пример #8
0
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
}
Пример #9
0
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;
}
Пример #10
0
int
plat_dir_create(wchar_t *path)
{
    // return((int)CreateDirectory(path, NULL));
    return((int)SHCreateDirectory(hwndMain, path));
}
Пример #11
0
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;
}
Пример #12
0
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;
}