/********************************************************************** * OpenURL (ieframe.@) */ void WINAPI OpenURL(HWND hWnd, HINSTANCE hInst, LPCSTR lpcstrUrl, int nShowCmd) { InternetShortcut *shortcut; WCHAR* urlfilepath = NULL; int len; shortcut = create_shortcut(); if(!shortcut) return; len = MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, NULL, 0); urlfilepath = heap_alloc(len * sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, urlfilepath, len); if(SUCCEEDED(IPersistFile_Load(&shortcut->IPersistFile_iface, urlfilepath, 0))) { URLINVOKECOMMANDINFOW ici; memset( &ici, 0, sizeof ici ); ici.dwcbSize = sizeof ici; ici.dwFlags = IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB; ici.hwndParent = hWnd; if(FAILED(UniformResourceLocatorW_InvokeCommand(&shortcut->IUniformResourceLocatorW_iface, (PURLINVOKECOMMANDINFOW) &ici))) TRACE("failed to open URL: %s\n", debugstr_a(lpcstrUrl)); } heap_free(urlfilepath); Unknown_Release(shortcut); }
HRESULT WINAPI InternetShortcut_Create(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv) { InternetShortcut *This; HRESULT hres; TRACE("(%p, %s, %p)\n", outer, debugstr_guid(riid), ppv); *ppv = NULL; if(outer) return CLASS_E_NOAGGREGATION; This = create_shortcut(); if(!This) return E_OUTOFMEMORY; hres = Unknown_QueryInterface(This, riid, ppv); Unknown_Release(This); return hres; }
static ULONG WINAPI PersistFile_Release(IPersistFile *pFile) { InternetShortcut *This = impl_from_IPersistFile(pFile); TRACE("(%p)\n", pFile); return Unknown_Release(This); }
static ULONG WINAPI UniformResourceLocatorA_Release(IUniformResourceLocatorA *url) { InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); TRACE("(%p)\n", url); return Unknown_Release(This); }
static ULONG WINAPI PropertySetStorage_Release(IPropertySetStorage *iface) { InternetShortcut *This = impl_from_IPropertySetStorage(iface); TRACE("(%p)\n", iface); return Unknown_Release(This); }