Ejemplo n.º 1
0
	bool start(ttstr const &target, const tjs_char *param=0, const tjs_char *folder=0) {
		if (hasError()) return false;

		ttstr cmd(L"\"");
		// 吉里吉里サーチパス上にある場合はそちらを優先
		if (TVPIsExistentStorage(target)) {
			ttstr tmp = TVPGetPlacedPath(target);
			TVPGetLocalName(tmp);
			/**/cmd += tmp    + L"\"";
		} else  cmd += target + L"\"";

		if (param && wcslen(param) > 0) cmd += L" " + ttstr(param);
		LPWSTR cmdline = (LPWSTR)cmd.c_str();

		// 子プロセス作成
		STARTUPINFO si;
		::ZeroMemory(&si, sizeof(si));
		si.cb = sizeof(si);
		si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
		si.hStdOutput = hOW;
		si.hStdInput  = hIR;
		si.hStdError  = hEW;
		si.wShowWindow = SW_HIDE;
		if (!::CreateProcessW(0, cmdline, 0, 0, TRUE, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, 0, folder, &si, &pi)) {
			error = ERR_PROC;
			return false;
		}
		return true;
	}
Ejemplo n.º 2
0
/**
 * PSD画像のロード
 * @param filename ファイル名
 * @return ロードに成功したら true
 */
bool
PSD::load(ttstr filename)
{
	ttstr file = TVPGetPlacedPath(filename);
	if (!file.length()) {
		// 見つからなかったのでローカルパスとみなして読み込む
		psd::PSDFile::load(NarrowString(filename));
	} else {
#ifdef LOAD_MEMORY
		if (!wcschr(file.c_str(), '>')) {
			// ローカルファイルなので直接読み込む
			TVPGetLocalName(file);
			psd::PSDFile::load(NarrowString(file));
		} else {
			// メモリに読み込んでロード
			loadMemory(file);
		}
#else
		// ストリームとしてロード
		loadStream(file);
#endif
	}
	if (isLoaded) {
		addToStorage(filename);
	}
	return isLoaded;
}
Ejemplo n.º 3
0
	/**
	 * プロセスの実行
	 * @param target ターゲット
	 * @praam param パラメータ
	 * @param folder フォルダ
	 */
	bool _execute(ttstr target, const tjs_char *param, const tjs_char *folder) {
		terminate();

		ttstr cmd(L"\"");
		// 吉里吉里サーチパス上にある場合はそちらを優先
		if (TVPIsExistentStorage(target)) {
			ttstr tmp = TVPGetPlacedPath(target);
			TVPGetLocalName(tmp);
			/**/cmd += tmp    + L"\"";
		} else  cmd += target + L"\"";

		SHELLEXECUTEINFO si;
		ZeroMemory(&si, sizeof(si));
		si.cbSize = sizeof(si);
		si.lpVerb = _T("open");
		si.lpFile       = cmd.c_str();
		si.lpParameters = param;
		si.lpDirectory  = folder;
		si.nShow = SW_SHOWNORMAL;
		si.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
		if (ShellExecuteEx(&si)) {
			if (_beginthread(waitExecute, 0, new ExecuteInfo(msgHWND, si.hProcess)) != -1L) {
				process = si.hProcess;
				return true;
			}
		}
		return false;
	}