Exemple #1
0
Handle<Value> DispObject::set(LPOLESTR name, Local<Value> value)
{
	// Prepare disp
	if (!isPrepared()) Prepare();
	if (!disp) return DispError(E_NOTIMPL, __FUNCTIONW__);

	// Set value using dispatch
	DISPID dispid;
	CComVariant ret;
	VarArgumets vargs(value);
	HRESULT hrcode = DispInvoke(disp, name, 0, 0, &ret, DISPATCH_PROPERTYPUT, &dispid);
	if FAILED(hrcode) return DispError(hrcode, L"DispPropertyPut");
	return DispObject::NodeCreate(disp, name, dispid);
}
Exemple #2
0
Handle<Value> DispObject::call(const Arguments &args)
{
	CComVariant ret;
	VarArgumets vargs(args);
	IDispatch *pdisp = (disp) ? disp : owner_disp;
	DISPID dispid = (disp) ? DISPID_VALUE : owner_id;
	size_t argcnt = vargs.items.size();
	VARIANT *argptr = (argcnt > 0) ? &vargs.items.front() : 0;
	HRESULT hrcode = DispInvoke(pdisp, dispid, argcnt, argptr, &ret, DISPATCH_METHOD);
	if FAILED(hrcode) return DispError(hrcode, L"DispMethod");

	// Prepare result as object
	CComPtr<IDispatch> ret_disp;
	if (VariantDispGet(&ret, &ret_disp)) 
		return DispObject::NodeCreate(ret_disp, /*name.GetString()*/ L"Result");

	// Other result
	return Variant2Value(ret);
}
int _tmain(int argc, _TCHAR* argv[])
{
	const wchar_t* link = L"C:\\_tmp\\left2.json";
	const wchar_t* target = L"C:\\_tmp\\left.json";

	// lnhdrlink.exeパス.
	wchar_t path[_MAX_PATH];
	wcscpy(path, L"C:\\lnhdr\\vc10.0\\x64\\Release\\lnhdrlink.exe");

	// 引数.
	std::vector<wchar_t> vargs(wcslen(link) + wcslen(target) + 10);
	wchar_t* args = &vargs[0];
	swprintf(args, L"\"%ls\" \"%ls\"", link, target);

	// lnhdrlink.exe実行.
	::SHELLEXECUTEINFOW info = {0};
	info.cbSize = sizeof(info);
	info.lpVerb = L"open";
	info.lpFile = path;
	info.lpParameters = args;
	BOOL f = ::ShellExecuteExW(&info);
	printf("f = %d\n", f);
	return 0;
}