本文整理汇总了C++中IDispatch_Release函数的典型用法代码示例。如果您正苦于以下问题:C++ IDispatch_Release函数的具体用法?C++ IDispatch_Release怎么用?C++ IDispatch_Release使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IDispatch_Release函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: invoke_builtin_prop
static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD flags, DISPPARAMS *dp,
VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
{
dispex_data_t *data;
func_info_t *func;
HRESULT hres;
data = get_dispex_data(This);
if(!data)
return E_FAIL;
hres = get_builtin_func(data, id, &func);
if(id == DISPID_VALUE && hres == DISP_E_UNKNOWNNAME)
return dispex_value(This, lcid, flags, dp, res, ei, caller);
if(FAILED(hres))
return hres;
if(func->func_disp_idx != -1)
return function_invoke(This, func, flags, dp, res, ei);
switch(flags) {
case DISPATCH_PROPERTYPUT:
if(res)
V_VT(res) = VT_EMPTY;
hres = builtin_propput(This, func, dp, caller);
break;
case DISPATCH_PROPERTYGET:
hres = builtin_propget(This, func, dp, res);
break;
default:
if(!func->get_vtbl_off) {
hres = typeinfo_invoke(This, func, flags, dp, res, ei);
}else {
VARIANT v;
hres = builtin_propget(This, func, NULL, &v);
if(FAILED(hres))
return hres;
if(flags != (DISPATCH_PROPERTYGET|DISPATCH_METHOD)) {
if(V_VT(&v) != VT_DISPATCH) {
FIXME("Not a function %s\n", debugstr_variant(&v));
VariantClear(&v);
return E_FAIL;
}
hres = invoke_disp_value(This, V_DISPATCH(&v), lcid, flags, dp, res, ei, caller);
IDispatch_Release(V_DISPATCH(&v));
}else if(res) {
*res = v;
}else {
IDispatch_Release(V_DISPATCH(&v));
}
}
}
return hres;
}
开发者ID:bpowers,项目名称:wine,代码行数:58,代码来源:dispex.c
示例2: JScript_AddNamedItem
static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
LPCOLESTR pstrName, DWORD dwFlags)
{
JScript *This = impl_from_IActiveScript(iface);
named_item_t *item;
IDispatch *disp = NULL;
HRESULT hres;
TRACE("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
if(This->thread_id != GetCurrentThreadId() || !This->ctx || This->ctx->state == SCRIPTSTATE_CLOSED)
return E_UNEXPECTED;
if(dwFlags & SCRIPTITEM_GLOBALMEMBERS) {
IUnknown *unk;
hres = IActiveScriptSite_GetItemInfo(This->site, pstrName, SCRIPTINFO_IUNKNOWN, &unk, NULL);
if(FAILED(hres)) {
WARN("GetItemInfo failed: %08x\n", hres);
return hres;
}
hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&disp);
IUnknown_Release(unk);
if(FAILED(hres)) {
WARN("object does not implement IDispatch\n");
return hres;
}
if(This->ctx->host_global)
IDispatch_Release(This->ctx->host_global);
IDispatch_AddRef(disp);
This->ctx->host_global = disp;
}
item = heap_alloc(sizeof(*item));
if(!item) {
if(disp)
IDispatch_Release(disp);
return E_OUTOFMEMORY;
}
item->disp = disp;
item->flags = dwFlags;
item->name = heap_strdupW(pstrName);
if(!item->name) {
if(disp)
IDispatch_Release(disp);
heap_free(item);
return E_OUTOFMEMORY;
}
item->next = This->ctx->named_items;
This->ctx->named_items = item;
return S_OK;
}
开发者ID:AndreRH,项目名称:wine,代码行数:57,代码来源:jscript.c
示例3: RegisterWindowMessageW
static
IDispatch *get_ie_target(HWND hwnd, int x, int y)
{
IDispatch *top_doc, *elem, *target;
UINT getobj_msg;
LRESULT lres, res;
HRESULT hres;
getobj_msg = RegisterWindowMessageW(L"WM_HTML_GETOBJECT");
if(getobj_msg == 0) {
spr->log_lasterror(
LOG_LEVEL_NOTIFY,
L"ie-scroll: Failed to call "
L"RegisterWindowMessage(\"WM_HTML_GETOBJECT\")", 1);
return NULL;
}
lres = SendMessageTimeout(hwnd, getobj_msg, 0, 0,
SMTO_ABORTIFHUNG, 1000,
(PDWORD_PTR)&res);
if(lres == 0) {
spr->log_lasterror(
LOG_LEVEL_NOTIFY,
L"ie-scroll: Failed to call SendMessageTimeout()", 1);
return NULL;
}
hres = ObjectFromLresult(res, &IID_IDispatch, 0,
(void **)(void *)&top_doc);
if(FAILED(hres)) {
spr->log_hresult(
LOG_LEVEL_NOTIFY,
L"ie-scroll: Failed to call ObjectFromLresult()",
hres, 1);
return NULL;
}
hres = get_ie_elem_at(top_doc, x, y, &elem);
IDispatch_Release(top_doc);
if(FAILED(hres)) {
return NULL;
}
hres = get_scrollable_parent(elem, &target);
IDispatch_Release(elem);
if(FAILED(hres)) {
return NULL;
}
return target;
}
开发者ID:lllllT,项目名称:mouse-processor,代码行数:51,代码来源:scroll_op_ie.c
示例4: release_event_target
void release_event_target(event_target_t *event_target)
{
int i, j;
for(i=0; i < EVENTID_LAST; i++) {
if(event_target->event_table[i]) {
if(event_target->event_table[i]->handler_prop)
IDispatch_Release(event_target->event_table[i]->handler_prop);
for(j=0; j < event_target->event_table[i]->handler_cnt; j++)
IDispatch_Release(event_target->event_table[i]->handlers[j]);
}
}
heap_free(event_target);
}
开发者ID:mikekap,项目名称:wine,代码行数:15,代码来源:htmlevent.c
示例5: run_scripts
static void run_scripts(void)
{
IActiveScriptParse *parser;
HRESULT hres;
parser = create_script();
hres = IActiveScriptParse64_QueryInterface(parser, &IID_IVariantChangeType, (void**)&script_change_type);
ok(hres == S_OK, "Could not get IVariantChangeType iface: %08x\n", hres);
SET_EXPECT(testArgConv);
parse_script_a(parser,
"var obj = {"
" toString: function() { return 'strval'; },"
" valueOf: function() { return 10; }"
"};"
"testArgConv(obj);");
CHECK_CALLED(testArgConv);
test_change_types(script_change_type, stored_obj);
IDispatch_Release(stored_obj);
IVariantChangeType_Release(script_change_type);
IUnknown_Release(parser);
}
开发者ID:AmesianX,项目名称:RosWine,代码行数:25,代码来源:caller.c
示例6: navigate_complete
static void navigate_complete(DocHost *This)
{
IDispatch *disp = NULL;
DISPPARAMS dispparams;
VARIANTARG params[2];
VARIANT url;
HRESULT hres;
hres = IUnknown_QueryInterface(This->document, &IID_IDispatch, (void**)&disp);
if(FAILED(hres))
FIXME("Could not get IDispatch interface\n");
dispparams.cArgs = 2;
dispparams.cNamedArgs = 0;
dispparams.rgdispidNamedArgs = NULL;
dispparams.rgvarg = params;
V_VT(params) = (VT_BYREF|VT_VARIANT);
V_BYREF(params) = &url;
V_VT(params+1) = VT_DISPATCH;
V_DISPATCH(params+1) = disp;
V_VT(&url) = VT_BSTR;
V_BSTR(&url) = SysAllocString(This->url);
call_sink(This->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dispparams);
call_sink(This->cps.wbe2, DISPID_DOCUMENTCOMPLETE, &dispparams);
SysFreeString(V_BSTR(&url));
if(disp)
IDispatch_Release(disp);
This->busy = VARIANT_FALSE;
}
开发者ID:WASSUM,项目名称:longene_travel,代码行数:34,代码来源:dochost.c
示例7: OleObject_SetClientSite
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
{
WindowsMediaPlayer *This = impl_from_IOleObject(iface);
IOleControlSite *control_site;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, pClientSite);
release_client_site(This);
if(!pClientSite)
return S_OK;
IOleClientSite_AddRef(pClientSite);
This->client_site = pClientSite;
hres = IOleClientSite_QueryInterface(pClientSite, &IID_IOleControlSite, (void**)&control_site);
if(SUCCEEDED(hres)) {
IDispatch *disp;
hres = IOleControlSite_GetExtendedControl(control_site, &disp);
if(SUCCEEDED(hres) && disp) {
FIXME("Use extended control\n");
IDispatch_Release(disp);
}
IOleControlSite_Release(control_site);
}
return S_OK;
}
开发者ID:AlexSteel,项目名称:wine,代码行数:30,代码来源:oleobj.c
示例8: php_com_object_free_storage
void php_com_object_free_storage(zend_object *object)
{
php_com_dotnet_object *obj = (php_com_dotnet_object*)object;
if (obj->typeinfo) {
ITypeInfo_Release(obj->typeinfo);
obj->typeinfo = NULL;
}
if (obj->sink_dispatch) {
php_com_object_enable_event_sink(obj, FALSE);
IDispatch_Release(obj->sink_dispatch);
obj->sink_dispatch = NULL;
}
VariantClear(&obj->v);
if (obj->method_cache) {
zend_hash_destroy(obj->method_cache);
FREE_HASHTABLE(obj->method_cache);
}
if (obj->id_of_name_cache) {
zend_hash_destroy(obj->id_of_name_cache);
FREE_HASHTABLE(obj->id_of_name_cache);
}
}
开发者ID:PeeHaa,项目名称:php-src,代码行数:26,代码来源:com_handlers.c
示例9: update_readystate
static void update_readystate(PluginHost *host)
{
DISPPARAMS params = {NULL,NULL,0,0};
IDispatchEx *dispex;
IDispatch *disp;
ULONG err = 0;
VARIANT v;
HRESULT hres;
hres = IUnknown_QueryInterface(host->plugin_unk, &IID_IDispatchEx, (void**)&dispex);
if(SUCCEEDED(hres)) {
FIXME("Use IDispatchEx\n");
IDispatchEx_Release(dispex);
}
hres = IUnknown_QueryInterface(host->plugin_unk, &IID_IDispatch, (void**)&disp);
if(FAILED(hres))
return;
hres = IDispatch_Invoke(disp, DISPID_READYSTATE, &IID_NULL, 0, DISPATCH_PROPERTYGET, ¶ms, &v, NULL, &err);
IDispatch_Release(disp);
if(SUCCEEDED(hres)) {
/* FIXME: make plugin readystate affect document readystate */
TRACE("readystate = %s\n", debugstr_variant(&v));
VariantClear(&v);
}
}
开发者ID:miurahr,项目名称:wine,代码行数:27,代码来源:pluginhost.c
示例10: release_dispex
void release_dispex(DispatchEx *This)
{
dynamic_prop_t *prop;
if(!This->dynamic_data)
return;
for(prop = This->dynamic_data->props; prop < This->dynamic_data->props + This->dynamic_data->prop_cnt; prop++) {
VariantClear(&prop->var);
heap_free(prop->name);
}
heap_free(This->dynamic_data->props);
if(This->dynamic_data->func_disps) {
func_obj_entry_t *iter;
for(iter = This->dynamic_data->func_disps; iter < This->dynamic_data->func_disps+This->data->data->func_disp_cnt; iter++) {
if(iter->func_obj) {
iter->func_obj->obj = NULL;
IDispatchEx_Release(&iter->func_obj->dispex.IDispatchEx_iface);
}
if(iter->val)
IDispatch_Release(iter->val);
}
heap_free(This->dynamic_data->func_disps);
}
heap_free(This->dynamic_data);
}
开发者ID:bpowers,项目名称:wine,代码行数:31,代码来源:dispex.c
示例11: detach_event
HRESULT detach_event(EventTarget *event_target, BSTR name, IDispatch *disp)
{
event_target_t *data;
eventid_t eid;
DWORD i = 0;
eid = attr_to_eid(name);
if(eid == EVENTID_LAST) {
WARN("Unknown event\n");
return S_OK;
}
data = get_event_target_data(event_target, FALSE);
if(!data)
return S_OK;
if(!data->event_table[eid])
return S_OK;
while(i < data->event_table[eid]->handler_cnt) {
if(data->event_table[eid]->handlers[i] == disp) {
IDispatch_Release(data->event_table[eid]->handlers[i]);
data->event_table[eid]->handlers[i] = NULL;
}
i++;
}
return S_OK;
}
开发者ID:Crobin83,项目名称:wine,代码行数:29,代码来源:htmlevent.c
示例12: get_doc_ready_state
static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret)
{
DISPPARAMS dp = {NULL,NULL,0,0};
IDispatch *disp;
EXCEPINFO ei;
VARIANT var;
HRESULT hres;
hres = IUnknown_QueryInterface(This->document, &IID_IDispatch, (void**)&disp);
if(FAILED(hres))
return hres;
hres = IDispatch_Invoke(disp, DISPID_READYSTATE, &IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET,
&dp, &var, &ei, NULL);
IDispatch_Release(disp);
if(FAILED(hres)) {
WARN("Invoke(DISPID_READYSTATE failed: %08x\n", hres);
return hres;
}
if(V_VT(&var) != VT_I4) {
WARN("V_VT(var) = %d\n", V_VT(&var));
VariantClear(&var);
return E_FAIL;
}
*ret = V_I4(&var);
return S_OK;
}
开发者ID:mikekap,项目名称:wine,代码行数:29,代码来源:dochost.c
示例13: check_event_attr
void check_event_attr(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
const PRUnichar *attr_value;
nsAString attr_value_str;
IDispatch *disp;
HTMLDOMNode *node;
int i;
nsresult nsres;
HRESULT hres;
for(i=0; i < EVENTID_LAST; i++) {
nsres = get_elem_attr_value(nselem, event_info[i].attr_name, &attr_value_str, &attr_value);
if(NS_SUCCEEDED(nsres)) {
if(!*attr_value)
continue;
TRACE("%p.%s = %s\n", nselem, debugstr_w(event_info[i].attr_name), debugstr_w(attr_value));
disp = script_parse_event(doc->window, attr_value);
if(disp) {
hres = get_node(doc, (nsIDOMNode*)nselem, TRUE, &node);
if(SUCCEEDED(hres)) {
set_event_handler_disp(get_node_event_target(node), node->doc, i, disp);
node_release(node);
}
IDispatch_Release(disp);
}
nsAString_Finish(&attr_value_str);
}
}
}
开发者ID:PigFlyGames,项目名称:wine,代码行数:31,代码来源:htmlevent.c
示例14: httprequest_Release
static ULONG WINAPI httprequest_Release(IXMLHTTPRequest *iface)
{
httprequest *This = impl_from_IXMLHTTPRequest( iface );
ULONG ref = InterlockedDecrement( &This->ref );
TRACE("(%p)->(%u)\n", This, ref );
if ( ref == 0 )
{
struct reqheader *header, *header2;
SysFreeString(This->url);
SysFreeString(This->user);
SysFreeString(This->password);
/* request headers */
LIST_FOR_EACH_ENTRY_SAFE(header, header2, &This->reqheaders, struct reqheader, entry)
{
list_remove(&header->entry);
SysFreeString(header->header);
SysFreeString(header->value);
}
/* detach callback object */
BindStatusCallback_Detach(This->bsc);
if (This->sink) IDispatch_Release(This->sink);
heap_free( This );
}
return ref;
}
开发者ID:r6144,项目名称:wine,代码行数:33,代码来源:httprequest.c
示例15: Function_call
static HRESULT Function_call(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
jsval_t *r)
{
FunctionInstance *function;
IDispatch *this_obj = NULL;
unsigned cnt = 0;
HRESULT hres;
TRACE("\n");
if(!(function = function_this(jsthis)))
return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL);
if(argc) {
if(!is_undefined(argv[0]) && !is_null(argv[0])) {
hres = to_object(ctx, argv[0], &this_obj);
if(FAILED(hres))
return hres;
}
cnt = argc-1;
}
hres = call_function(ctx, function, this_obj, cnt, argv+1, r);
if(this_obj)
IDispatch_Release(this_obj);
return hres;
}
开发者ID:340211173,项目名称:wine,代码行数:29,代码来源:function.c
示例16: detach_event
HRESULT detach_event(event_target_t *event_target, HTMLDocument *doc, BSTR name, IDispatch *disp)
{
eventid_t eid;
DWORD i = 0;
if(!event_target)
return S_OK;
eid = attr_to_eid(name);
if(eid == EVENTID_LAST) {
WARN("Unknown event\n");
return S_OK;
}
if(!event_target->event_table[eid])
return S_OK;
while(i < event_target->event_table[eid]->handler_cnt) {
if(event_target->event_table[eid]->handlers[i] == disp) {
IDispatch_Release(event_target->event_table[eid]->handlers[i]);
event_target->event_table[eid]->handlers[i] = NULL;
}
i++;
}
return S_OK;
}
开发者ID:PigFlyGames,项目名称:wine,代码行数:27,代码来源:htmlevent.c
示例17: test_responseXML
static void test_responseXML(const char *expect_text)
{
IDispatch *disp;
IXMLDOMDocument *xmldom;
IObjectSafety *safety;
DWORD enabled = 0, supported = 0;
HRESULT hres;
disp = NULL;
hres = IHTMLXMLHttpRequest_get_responseXML(xhr, &disp);
ok(hres == S_OK, "get_responseXML failed: %08x\n", hres);
ok(disp != NULL, "disp == NULL\n");
xmldom = NULL;
hres = IDispatch_QueryInterface(disp, &IID_IXMLDOMDocument, (void**)&xmldom);
ok(hres == S_OK, "QueryInterface(IXMLDOMDocument) failed: %08x\n", hres);
ok(xmldom != NULL, "xmldom == NULL\n");
hres = IXMLDOMDocument_QueryInterface(xmldom, &IID_IObjectSafety, (void**)&safety);
ok(hres == S_OK, "QueryInterface IObjectSafety failed: %08x\n", hres);
hres = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled);
ok(hres == S_OK, "GetInterfaceSafetyOptions failed: %08x\n", hres);
ok(broken(supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA)) ||
supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER) /* msxml3 SP8+ */,
"Expected supported: (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER), got %08x\n", supported);
ok(enabled == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER),
"Expected enabled: (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER), got 0x%08x\n", enabled);
IObjectSafety_Release(safety);
if(!expect_text)
test_illegal_xml(xmldom);
IXMLDOMDocument_Release(xmldom);
IDispatch_Release(disp);
}
开发者ID:Crobin83,项目名称:wine,代码行数:35,代码来源:xmlhttprequest.c
示例18: WebBrowser_get_Document
static HRESULT WINAPI WebBrowser_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp)
{
WebBrowser *This = impl_from_IWebBrowser2(iface);
IDispatch *disp = NULL;
TRACE("(%p)->(%p)\n", This, ppDisp);
if(This->doc_host.document) {
HRESULT hres;
hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IDispatch, (void**)&disp);
if(SUCCEEDED(hres)) {
IDispatch *html_doc;
/* Some broken apps cast returned IDispatch to IHTMLDocument2
* without QueryInterface call */
hres = IDispatch_QueryInterface(disp, &IID_IHTMLDocument2, (void**)&html_doc);
if(SUCCEEDED(hres)) {
IDispatch_Release(disp);
disp = html_doc;
}
}
}
*ppDisp = disp;
return S_OK;
}
开发者ID:DusteDdk,项目名称:wine-multimedia,代码行数:27,代码来源:webbrowser.c
示例19: WindowFromAccessibleObject
HRESULT WINAPI WindowFromAccessibleObject(IAccessible *acc, HWND *phwnd)
{
IDispatch *parent;
IOleWindow *ow;
HRESULT hres;
TRACE("%p %p\n", acc, phwnd);
IAccessible_AddRef(acc);
while(1) {
hres = IAccessible_QueryInterface(acc, &IID_IOleWindow, (void**)&ow);
if(SUCCEEDED(hres)) {
hres = IOleWindow_GetWindow(ow, phwnd);
IOleWindow_Release(ow);
IAccessible_Release(acc);
return hres;
}
hres = IAccessible_get_accParent(acc, &parent);
IAccessible_Release(acc);
if(FAILED(hres))
return hres;
if(hres!=S_OK || !parent) {
*phwnd = NULL;
return hres;
}
hres = IDispatch_QueryInterface(parent, &IID_IAccessible, (void**)&acc);
IDispatch_Release(parent);
if(FAILED(hres))
return hres;
}
}
开发者ID:GYGit,项目名称:reactos,代码行数:33,代码来源:main.c
示例20: remove_event_handler
static HRESULT remove_event_handler(event_target_t **event_target, eventid_t eid)
{
if(*event_target && (*event_target)->event_table[eid] && (*event_target)->event_table[eid]->handler_prop) {
IDispatch_Release((*event_target)->event_table[eid]->handler_prop);
(*event_target)->event_table[eid]->handler_prop = NULL;
}
return S_OK;
}
开发者ID:PigFlyGames,项目名称:wine,代码行数:9,代码来源:htmlevent.c
注:本文中的IDispatch_Release函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论