1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #include "main.h"
- #include "./forceUrl.h"
- typedef struct __FORCEURLDATA
- {
- UINT serviceId;
- LPWSTR url;
- } FORCEURLDATA;
- #define FORCEURLPROP L"MLWEBDEV_FORCEURL"
- void ForceUrl_Remove()
- {
- HWND hLibrary = Plugin_GetLibrary();
- if (NULL == hLibrary) return;
- FORCEURLDATA *data = (FORCEURLDATA*)GetProp(hLibrary, FORCEURLPROP);
- RemoveProp(hLibrary, FORCEURLPROP);
- if (NULL != data)
- {
- Plugin_FreeString(data->url);
- free(data);
- }
- }
- HRESULT ForceUrl_Set(UINT serviceId, LPCWSTR pszUrl)
- {
- if (NULL == pszUrl) return E_INVALIDARG;
- HWND hLibrary = Plugin_GetLibrary();
- if (NULL == hLibrary) return E_FAIL;
- FORCEURLDATA *data = (FORCEURLDATA*)GetProp(hLibrary, FORCEURLPROP);
- if (NULL != data)
- {
- Plugin_FreeString(data->url);
- if (data->serviceId != serviceId)
- {
- free(data);
- data = NULL;
- }
- }
- if (NULL == data)
- {
- data = (FORCEURLDATA*)malloc(sizeof(FORCEURLDATA));
- if (NULL == data) return E_OUTOFMEMORY;
- data->serviceId = serviceId;
- }
-
- data->url = Plugin_CopyString(pszUrl);
- if (NULL == data->url || FALSE == SetProp(hLibrary, FORCEURLPROP, data))
- {
- ForceUrl_Remove();
- return E_FAIL;
- }
- return S_OK;
- }
- HRESULT ForceUrl_Get(UINT serviceId, const wchar_t **ppszUrl)
- {
- if (NULL == ppszUrl) return E_POINTER;
- *ppszUrl = NULL;
- HWND hLibrary = Plugin_GetLibrary();
- if (NULL == hLibrary) return E_FAIL;
- FORCEURLDATA *data = (FORCEURLDATA*)GetProp(hLibrary, FORCEURLPROP);
- if (NULL == data || data->serviceId != serviceId)
- return E_NOINTERFACE;
- *ppszUrl = data->url;
- return S_OK;
- }
|