mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Need to remove existing files before doing vendor import
svn path=/trunk/; revision=12602
This commit is contained in:
parent
038eebbf4e
commit
dc540e8946
17 changed files with 0 additions and 3238 deletions
|
@ -1,9 +0,0 @@
|
|||
# $Id: Makefile,v 1.1 2004/12/23 08:55:00 gvg Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
TARGET_TYPE = winedll
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
|
@ -1,25 +0,0 @@
|
|||
EXTRADEFS = -D_SHDOCVW_
|
||||
TOPSRCDIR = @top_srcdir@
|
||||
TOPOBJDIR = ../..
|
||||
SRCDIR = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
MODULE = shdocvw.dll
|
||||
IMPORTS = urlmon ole32 user32 advapi32 kernel32
|
||||
EXTRALIBS = -luuid
|
||||
|
||||
C_SRCS = \
|
||||
classinfo.c \
|
||||
events.c \
|
||||
factory.c \
|
||||
misc.c \
|
||||
oleobject.c \
|
||||
persist.c \
|
||||
regsvr.c \
|
||||
shdocvw_main.c \
|
||||
webbrowser.c
|
||||
|
||||
RC_SRCS = shdocvw.rc
|
||||
|
||||
@MAKE_DLL_RULES@
|
||||
|
||||
### Dependencies:
|
|
@ -1,19 +0,0 @@
|
|||
# $Id: Makefile.ros-template,v 1.1 2004/12/23 08:55:00 gvg Exp $
|
||||
|
||||
TARGET_NAME = shdocvw
|
||||
|
||||
TARGET_OBJECTS = @C_SRCS@
|
||||
|
||||
TARGET_CFLAGS = @EXTRADEFS@
|
||||
|
||||
TARGET_SDKLIBS = @IMPORTS@ wine.a wine_uuid.a ntdll.a
|
||||
|
||||
TARGET_BASE = $(TARGET_BASE_LIB_SHDOCVW)
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
default: all
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
|
@ -1,170 +0,0 @@
|
|||
/*
|
||||
* Implementation of IProvideClassInfo interfaces for IE Web Browser control
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "shdocvw.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IProvideClassInfo interface
|
||||
*
|
||||
* FIXME: Should we just pass in the IProvideClassInfo2 methods rather
|
||||
* reimplementing them here?
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBPCI_QueryInterface(LPPROVIDECLASSINFO iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPCI_AddRef(LPPROVIDECLASSINFO iface)
|
||||
{
|
||||
IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPCI_Release(LPPROVIDECLASSINFO iface)
|
||||
{
|
||||
IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/* Return an ITypeInfo interface to retrieve type library info about
|
||||
* this control.
|
||||
*/
|
||||
static HRESULT WINAPI WBPCI_GetClassInfo(LPPROVIDECLASSINFO iface, LPTYPEINFO *ppTI)
|
||||
{
|
||||
FIXME("stub: LPTYPEINFO = %p\n", *ppTI);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IProvideClassInfo virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IProvideClassInfoVtbl WBPCI_Vtbl =
|
||||
{
|
||||
WBPCI_QueryInterface,
|
||||
WBPCI_AddRef,
|
||||
WBPCI_Release,
|
||||
WBPCI_GetClassInfo
|
||||
};
|
||||
|
||||
IProvideClassInfoImpl SHDOCVW_ProvideClassInfo = { &WBPCI_Vtbl, 1 };
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IProvideClassInfo2 interface (inherits from
|
||||
* IProvideClassInfo).
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBPCI2_QueryInterface(LPPROVIDECLASSINFO2 iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPCI2_AddRef(LPPROVIDECLASSINFO2 iface)
|
||||
{
|
||||
IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPCI2_Release(LPPROVIDECLASSINFO2 iface)
|
||||
{
|
||||
IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/* Return an ITypeInfo interface to retrieve type library info about
|
||||
* this control.
|
||||
*/
|
||||
static HRESULT WINAPI WBPCI2_GetClassInfo(LPPROVIDECLASSINFO2 iface, LPTYPEINFO *ppTI)
|
||||
{
|
||||
FIXME("stub: LPTYPEINFO = %p\n", *ppTI);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Get the IID for generic default event callbacks. This IID will
|
||||
* in theory be used to later query for an IConnectionPoint to connect
|
||||
* an event sink (callback implementation in the OLE control site)
|
||||
* to this control.
|
||||
*/
|
||||
static HRESULT WINAPI WBPCI2_GetGUID(LPPROVIDECLASSINFO2 iface,
|
||||
DWORD dwGuidKind, GUID *pGUID)
|
||||
{
|
||||
FIXME("stub: dwGuidKind = %ld, pGUID = %s\n", dwGuidKind, debugstr_guid(pGUID));
|
||||
|
||||
if (dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID)
|
||||
{
|
||||
FIXME ("Requested unsupported GUID type: %ld\n", dwGuidKind);
|
||||
return E_FAIL; /* Is there a better return type here? */
|
||||
}
|
||||
|
||||
/* FIXME: Returning IPropertyNotifySink interface, but should really
|
||||
* return a more generic event set (???) dispinterface.
|
||||
* However, this hack, allows a control site to return with success
|
||||
* (MFC's COleControlSite falls back to older IProvideClassInfo interface
|
||||
* if GetGUID() fails to return a non-NULL GUID).
|
||||
*/
|
||||
memcpy(pGUID, &IID_IPropertyNotifySink, sizeof(GUID));
|
||||
FIXME("Wrongly returning IPropertyNotifySink interface %s\n",
|
||||
debugstr_guid(pGUID));
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IProvideClassInfo virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IProvideClassInfo2Vtbl WBPCI2_Vtbl =
|
||||
{
|
||||
WBPCI2_QueryInterface,
|
||||
WBPCI2_AddRef,
|
||||
WBPCI2_Release,
|
||||
WBPCI2_GetClassInfo,
|
||||
WBPCI2_GetGUID
|
||||
};
|
||||
|
||||
IProvideClassInfo2Impl SHDOCVW_ProvideClassInfo2 = { &WBPCI2_Vtbl, 1 };
|
|
@ -1,212 +0,0 @@
|
|||
/*
|
||||
* Implementation of event-related interfaces for IE Web Browser control:
|
||||
*
|
||||
* - IConnectionPointContainer
|
||||
* - IConnectionPoint
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
|
||||
static const GUID IID_INotifyDBEvents =
|
||||
{ 0xdb526cc0, 0xd188, 0x11cd, { 0xad, 0x48, 0x00, 0xaa, 0x00, 0x3c, 0x9c, 0xb6 } };
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IConnectionPointContainer interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBCPC_QueryInterface(LPCONNECTIONPOINTCONTAINER iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBCPC_AddRef(LPCONNECTIONPOINTCONTAINER iface)
|
||||
{
|
||||
IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBCPC_Release(LPCONNECTIONPOINTCONTAINER iface)
|
||||
{
|
||||
IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/* Get a list of connection points inside this container. */
|
||||
static HRESULT WINAPI WBCPC_EnumConnectionPoints(LPCONNECTIONPOINTCONTAINER iface,
|
||||
LPENUMCONNECTIONPOINTS *ppEnum)
|
||||
{
|
||||
FIXME("stub: IEnumConnectionPoints = %p\n", *ppEnum);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Retrieve the connection point in this container associated with the
|
||||
* riid interface. When events occur in the control, the control can
|
||||
* call backwards into its embedding site, through these interfaces.
|
||||
*/
|
||||
static HRESULT WINAPI WBCPC_FindConnectionPoint(LPCONNECTIONPOINTCONTAINER iface,
|
||||
REFIID riid, LPCONNECTIONPOINT *ppCP)
|
||||
{
|
||||
TRACE(": IID = %s, IConnectionPoint = %p\n", debugstr_guid(riid), *ppCP);
|
||||
|
||||
/* For now, return the same IConnectionPoint object for both
|
||||
* event interface requests.
|
||||
*/
|
||||
if (IsEqualGUID (&IID_INotifyDBEvents, riid))
|
||||
{
|
||||
TRACE("Returning connection point %p for IID_INotifyDBEvents\n",
|
||||
&SHDOCVW_ConnectionPoint);
|
||||
*ppCP = (LPCONNECTIONPOINT)&SHDOCVW_ConnectionPoint;
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IPropertyNotifySink, riid))
|
||||
{
|
||||
TRACE("Returning connection point %p for IID_IPropertyNotifySink\n",
|
||||
&SHDOCVW_ConnectionPoint);
|
||||
*ppCP = (LPCONNECTIONPOINT)&SHDOCVW_ConnectionPoint;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IConnectionPointContainer virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IConnectionPointContainerVtbl WBCPC_Vtbl =
|
||||
{
|
||||
WBCPC_QueryInterface,
|
||||
WBCPC_AddRef,
|
||||
WBCPC_Release,
|
||||
WBCPC_EnumConnectionPoints,
|
||||
WBCPC_FindConnectionPoint
|
||||
};
|
||||
|
||||
IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer = { &WBCPC_Vtbl, 1 };
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IConnectionPoint interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBCP_QueryInterface(LPCONNECTIONPOINT iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBCP_AddRef(LPCONNECTIONPOINT iface)
|
||||
{
|
||||
IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBCP_Release(LPCONNECTIONPOINT iface)
|
||||
{
|
||||
IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBCP_GetConnectionInterface(LPCONNECTIONPOINT iface, IID* pIId)
|
||||
{
|
||||
FIXME("stub: %s\n", debugstr_guid(pIId));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Get this connection point's owning container */
|
||||
static HRESULT WINAPI
|
||||
WBCP_GetConnectionPointContainer(LPCONNECTIONPOINT iface,
|
||||
LPCONNECTIONPOINTCONTAINER *ppCPC)
|
||||
{
|
||||
FIXME("stub: IConnectionPointContainer = %p\n", *ppCPC);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Connect the pUnkSink event-handling implementation (in the control site)
|
||||
* to this connection point. Return a handle to this connection in
|
||||
* pdwCookie (for later use in Unadvise()).
|
||||
*/
|
||||
static HRESULT WINAPI WBCP_Advise(LPCONNECTIONPOINT iface,
|
||||
LPUNKNOWN pUnkSink, DWORD *pdwCookie)
|
||||
{
|
||||
static int new_cookie;
|
||||
|
||||
FIXME("stub: IUnknown = %p, connection cookie = %ld\n", pUnkSink, *pdwCookie);
|
||||
|
||||
*pdwCookie = ++new_cookie;
|
||||
TRACE ("Returning cookie = %ld\n", *pdwCookie);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Disconnect this implementation from the connection point. */
|
||||
static HRESULT WINAPI WBCP_Unadvise(LPCONNECTIONPOINT iface,
|
||||
DWORD dwCookie)
|
||||
{
|
||||
FIXME("stub: cookie to disconnect = %lx\n", dwCookie);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* Get a list of connections in this connection point. */
|
||||
static HRESULT WINAPI WBCP_EnumConnections(LPCONNECTIONPOINT iface,
|
||||
LPENUMCONNECTIONS *ppEnum)
|
||||
{
|
||||
FIXME("stub: IEnumConnections = %p\n", *ppEnum);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IConnectionPoint virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IConnectionPointVtbl WBCP_Vtbl =
|
||||
{
|
||||
WBCP_QueryInterface,
|
||||
WBCP_AddRef,
|
||||
WBCP_Release,
|
||||
WBCP_GetConnectionInterface,
|
||||
WBCP_GetConnectionPointContainer,
|
||||
WBCP_Advise,
|
||||
WBCP_Unadvise,
|
||||
WBCP_EnumConnections
|
||||
};
|
||||
|
||||
IConnectionPointImpl SHDOCVW_ConnectionPoint = { &WBCP_Vtbl, 1 };
|
|
@ -1,121 +0,0 @@
|
|||
/*
|
||||
* Implementation of class factory for IE Web Browser
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IWebBrowser class factory
|
||||
*
|
||||
* (Based on implementation in ddraw/main.c)
|
||||
*/
|
||||
|
||||
/**********************************************************************
|
||||
* WBCF_QueryInterface (IUnknown)
|
||||
*/
|
||||
static HRESULT WINAPI WBCF_QueryInterface(LPCLASSFACTORY iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
TRACE ("\n");
|
||||
|
||||
/*
|
||||
* Perform a sanity check on the parameters.
|
||||
*/
|
||||
if ((This == NULL) || (ppobj == NULL) )
|
||||
return E_INVALIDARG;
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBCF_AddRef (IUnknown)
|
||||
*/
|
||||
static ULONG WINAPI WBCF_AddRef(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBCF_Release (IUnknown)
|
||||
*/
|
||||
static ULONG WINAPI WBCF_Release(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBCF_CreateInstance (IClassFactory)
|
||||
*/
|
||||
static HRESULT WINAPI WBCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
/* Don't support aggregation (yet?) */
|
||||
if (pOuter)
|
||||
{
|
||||
TRACE ("Failed attempt to aggregate IWebBrowser\n");
|
||||
return CLASS_E_NOAGGREGATION;
|
||||
}
|
||||
|
||||
TRACE("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
|
||||
|
||||
if ((IsEqualGUID (&IID_IOleObject, riid)))
|
||||
{
|
||||
TRACE ("Instantiating IOleObject component\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_OleObject;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBCF_LockServer (IClassFactory)
|
||||
*/
|
||||
static HRESULT WINAPI WBCF_LockServer(LPCLASSFACTORY iface, BOOL dolock)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
FIXME("(%p)->(%d),stub!\n", This, dolock);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static IClassFactoryVtbl WBCF_Vtbl =
|
||||
{
|
||||
WBCF_QueryInterface,
|
||||
WBCF_AddRef,
|
||||
WBCF_Release,
|
||||
WBCF_CreateInstance,
|
||||
WBCF_LockServer
|
||||
};
|
||||
|
||||
IClassFactoryImpl SHDOCVW_ClassFactory = { &WBCF_Vtbl, 1 };
|
|
@ -1,93 +0,0 @@
|
|||
/*
|
||||
* Implementation of miscellaneous interfaces for IE Web Browser control:
|
||||
*
|
||||
* - IQuickActivate
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IQuickActivate interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBQA_QueryInterface(LPQUICKACTIVATE iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBQA_AddRef(LPQUICKACTIVATE iface)
|
||||
{
|
||||
IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBQA_Release(LPQUICKACTIVATE iface)
|
||||
{
|
||||
IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/* Alternative interface for quicker, easier activation of a control. */
|
||||
static HRESULT WINAPI WBQA_QuickActivate(LPQUICKACTIVATE iface,
|
||||
QACONTAINER *pQaContainer,
|
||||
QACONTROL *pQaControl)
|
||||
{
|
||||
FIXME("stub: QACONTAINER = %p, QACONTROL = %p\n", pQaContainer, pQaControl);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBQA_SetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
|
||||
{
|
||||
FIXME("stub: LPSIZEL = %p\n", pSizel);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBQA_GetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
|
||||
{
|
||||
FIXME("stub: LPSIZEL = %p\n", pSizel);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IQuickActivate virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IQuickActivateVtbl WBQA_Vtbl =
|
||||
{
|
||||
WBQA_QueryInterface,
|
||||
WBQA_AddRef,
|
||||
WBQA_Release,
|
||||
WBQA_QuickActivate,
|
||||
WBQA_SetContentExtent,
|
||||
WBQA_GetContentExtent
|
||||
};
|
||||
|
||||
IQuickActivateImpl SHDOCVW_QuickActivate = { &WBQA_Vtbl, 1 };
|
|
@ -1,615 +0,0 @@
|
|||
/*
|
||||
* Implementation of IOleObject interfaces for IE Web Browser
|
||||
*
|
||||
* - IOleObject
|
||||
* - IOleInPlaceObject
|
||||
* - IOleControl
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
#include "ole2.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IOleObject interface for the web browser component
|
||||
*
|
||||
* Based on DefaultHandler code in dlls/ole32/defaulthandler.c.
|
||||
*/
|
||||
|
||||
static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface);
|
||||
static ULONG WINAPI WBOOBJ_Release(LPOLEOBJECT iface);
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_QueryInterface (IUnknown)
|
||||
*
|
||||
* Interfaces we need to (at least pretend to) retrieve:
|
||||
*
|
||||
* a6bc3ac0-dbaa-11ce-9de3-00aa004bb851 IID_IProvideClassInfo2
|
||||
* b196b283-bab4-101a-b69c-00aa00341d07 IID_IProvideClassInfo
|
||||
* cf51ed10-62fe-11cf-bf86-00a0c9034836 IID_IQuickActivate
|
||||
* 7fd52380-4e07-101b-ae2d-08002b2ec713 IID_IPersistStreamInit
|
||||
* 0000010a-0000-0000-c000-000000000046 IID_IPersistStorage
|
||||
* b196b284-bab4-101a-b69c-00aa00341d07 IID_IConnectionPointContainer
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_QueryInterface(LPOLEOBJECT iface,
|
||||
REFIID riid, void** ppobj)
|
||||
{
|
||||
IOleObjectImpl *This = (IOleObjectImpl *)iface;
|
||||
|
||||
/*
|
||||
* Perform a sanity check on the parameters.
|
||||
*/
|
||||
if ((This == NULL) || (ppobj == NULL) )
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (IsEqualGUID (&IID_IPersistStorage, riid))
|
||||
{
|
||||
TRACE("Returning IID_IPersistStorage interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_PersistStorage;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IPersistStreamInit, riid))
|
||||
{
|
||||
TRACE("Returning IID_IPersistStreamInit interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_PersistStreamInit;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IProvideClassInfo, riid))
|
||||
{
|
||||
TRACE("Returning IID_IProvideClassInfo interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_ProvideClassInfo;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IProvideClassInfo2, riid))
|
||||
{
|
||||
TRACE("Returning IID_IProvideClassInfo2 interface %p\n",
|
||||
&SHDOCVW_ProvideClassInfo2);
|
||||
*ppobj = (LPVOID)&SHDOCVW_ProvideClassInfo2;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IQuickActivate, riid))
|
||||
{
|
||||
TRACE("Returning IID_IQuickActivate interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_QuickActivate;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IConnectionPointContainer, riid))
|
||||
{
|
||||
TRACE("Returning IID_IConnectionPointContainer interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_ConnectionPointContainer;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IOleInPlaceObject, riid))
|
||||
{
|
||||
TRACE("Returning IID_IOleInPlaceObject interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_OleInPlaceObject;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IOleControl, riid))
|
||||
{
|
||||
TRACE("Returning IID_IOleControl interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_OleControl;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IWebBrowser, riid))
|
||||
{
|
||||
TRACE("Returning IID_IWebBrowser interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_WebBrowser;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
else if (IsEqualGUID (&IID_IDispatch, riid))
|
||||
{
|
||||
TRACE("Returning IID_IDispatch interface\n");
|
||||
*ppobj = (LPVOID)&SHDOCVW_WebBrowser;
|
||||
WBOOBJ_AddRef (iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
TRACE ("Failed to find iid = %s\n", debugstr_guid(riid));
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_AddRef (IUnknown)
|
||||
*/
|
||||
static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface)
|
||||
{
|
||||
IOleObjectImpl *This = (IOleObjectImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_Release (IUnknown)
|
||||
*/
|
||||
static ULONG WINAPI WBOOBJ_Release(LPOLEOBJECT iface)
|
||||
{
|
||||
IOleObjectImpl *This = (IOleObjectImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_SetClientSite (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_SetClientSite(LPOLEOBJECT iface,
|
||||
LPOLECLIENTSITE pClientSite)
|
||||
{
|
||||
FIXME("stub: (%p, %p)\n", iface, pClientSite);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetClientSite (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetClientSite(LPOLEOBJECT iface,
|
||||
LPOLECLIENTSITE* ppClientSite)
|
||||
{
|
||||
FIXME("stub: (%p)\n", *ppClientSite);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_SetHostNames (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_SetHostNames(LPOLEOBJECT iface, LPCOLESTR szContainerApp,
|
||||
LPCOLESTR szContainerObj)
|
||||
{
|
||||
FIXME("stub: (%p, %s, %s)\n", iface, debugstr_w(szContainerApp),
|
||||
debugstr_w(szContainerObj));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_Close (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_Close(LPOLEOBJECT iface, DWORD dwSaveOption)
|
||||
{
|
||||
FIXME("stub: ()\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_SetMoniker (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_SetMoniker(LPOLEOBJECT iface,
|
||||
DWORD dwWhichMoniker, IMoniker* pmk)
|
||||
{
|
||||
FIXME("stub: (%p, %ld, %p)\n", iface, dwWhichMoniker, pmk);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetMoniker (IOleObject)
|
||||
*
|
||||
* Delegate this request to the client site if we have one.
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetMoniker(LPOLEOBJECT iface, DWORD dwAssign,
|
||||
DWORD dwWhichMoniker, LPMONIKER *ppmk)
|
||||
{
|
||||
FIXME("stub (%p, %ld, %ld, %p)\n", iface, dwAssign, dwWhichMoniker, ppmk);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_InitFromData (IOleObject)
|
||||
*
|
||||
* This method is meaningless if the server is not running
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_InitFromData(LPOLEOBJECT iface, LPDATAOBJECT pDataObject,
|
||||
BOOL fCreation, DWORD dwReserved)
|
||||
{
|
||||
FIXME("stub: (%p, %p, %d, %ld)\n", iface, pDataObject, fCreation, dwReserved);
|
||||
return OLE_E_NOTRUNNING;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetClipboardData (IOleObject)
|
||||
*
|
||||
* This method is meaningless if the server is not running
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetClipboardData(LPOLEOBJECT iface, DWORD dwReserved,
|
||||
LPDATAOBJECT *ppDataObject)
|
||||
{
|
||||
FIXME("stub: (%p, %ld, %p)\n", iface, dwReserved, ppDataObject);
|
||||
return OLE_E_NOTRUNNING;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_DoVerb (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_DoVerb(LPOLEOBJECT iface, LONG iVerb, struct tagMSG* lpmsg,
|
||||
LPOLECLIENTSITE pActiveSite, LONG lindex,
|
||||
HWND hwndParent, LPCRECT lprcPosRect)
|
||||
{
|
||||
FIXME(": stub iVerb = %ld\n", iVerb);
|
||||
switch (iVerb)
|
||||
{
|
||||
case OLEIVERB_INPLACEACTIVATE:
|
||||
FIXME ("stub for OLEIVERB_INPLACEACTIVATE\n");
|
||||
break;
|
||||
case OLEIVERB_HIDE:
|
||||
FIXME ("stub for OLEIVERB_HIDE\n");
|
||||
break;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_EnumVerbs (IOleObject)
|
||||
*
|
||||
* Delegate to OleRegEnumVerbs.
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_EnumVerbs(LPOLEOBJECT iface,
|
||||
IEnumOLEVERB** ppEnumOleVerb)
|
||||
{
|
||||
TRACE("(%p, %p)\n", iface, ppEnumOleVerb);
|
||||
|
||||
return OleRegEnumVerbs(&CLSID_WebBrowser, ppEnumOleVerb);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_EnumVerbs (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_Update(LPOLEOBJECT iface)
|
||||
{
|
||||
FIXME(": Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_IsUpToDate (IOleObject)
|
||||
*
|
||||
* This method is meaningless if the server is not running
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_IsUpToDate(LPOLEOBJECT iface)
|
||||
{
|
||||
FIXME("(%p)\n", iface);
|
||||
return OLE_E_NOTRUNNING;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetUserClassID (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetUserClassID(LPOLEOBJECT iface, CLSID* pClsid)
|
||||
{
|
||||
FIXME("stub: (%p, %p)\n", iface, pClsid);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetUserType (IOleObject)
|
||||
*
|
||||
* Delegate to OleRegGetUserType.
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetUserType(LPOLEOBJECT iface, DWORD dwFormOfType,
|
||||
LPOLESTR* pszUserType)
|
||||
{
|
||||
TRACE("(%p, %ld, %p)\n", iface, dwFormOfType, pszUserType);
|
||||
|
||||
return OleRegGetUserType(&CLSID_WebBrowser, dwFormOfType, pszUserType);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_SetExtent (IOleObject)
|
||||
*
|
||||
* This method is meaningless if the server is not running
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_SetExtent(LPOLEOBJECT iface, DWORD dwDrawAspect,
|
||||
SIZEL* psizel)
|
||||
{
|
||||
FIXME("stub: (%p, %lx, (%ld x %ld))\n", iface, dwDrawAspect,
|
||||
psizel->cx, psizel->cy);
|
||||
return OLE_E_NOTRUNNING;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetExtent (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetExtent(LPOLEOBJECT iface, DWORD dwDrawAspect,
|
||||
SIZEL* psizel)
|
||||
{
|
||||
FIXME("stub: (%p, %lx, %p)\n", iface, dwDrawAspect, psizel);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_Advise (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_Advise(LPOLEOBJECT iface, IAdviseSink* pAdvSink,
|
||||
DWORD* pdwConnection)
|
||||
{
|
||||
FIXME("stub: (%p, %p, %p)\n", iface, pAdvSink, pdwConnection);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_Unadvise (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_Unadvise(LPOLEOBJECT iface, DWORD dwConnection)
|
||||
{
|
||||
FIXME("stub: (%p, %ld)\n", iface, dwConnection);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_EnumAdvise (IOleObject)
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_EnumAdvise(LPOLEOBJECT iface, IEnumSTATDATA** ppenumAdvise)
|
||||
{
|
||||
FIXME("stub: (%p, %p)\n", iface, ppenumAdvise);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_GetMiscStatus (IOleObject)
|
||||
*
|
||||
* Delegate to OleRegGetMiscStatus.
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_GetMiscStatus(LPOLEOBJECT iface, DWORD dwAspect,
|
||||
DWORD* pdwStatus)
|
||||
{
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p, %lx, %p)\n", iface, dwAspect, pdwStatus);
|
||||
|
||||
hres = OleRegGetMiscStatus(&CLSID_WebBrowser, dwAspect, pdwStatus);
|
||||
|
||||
if (FAILED(hres))
|
||||
*pdwStatus = 0;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* WBOOBJ_SetColorScheme (IOleObject)
|
||||
*
|
||||
* This method is meaningless if the server is not running
|
||||
*/
|
||||
static HRESULT WINAPI WBOOBJ_SetColorScheme(LPOLEOBJECT iface,
|
||||
struct tagLOGPALETTE* pLogpal)
|
||||
{
|
||||
FIXME("stub: (%p, %p))\n", iface, pLogpal);
|
||||
return OLE_E_NOTRUNNING;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IOleObject virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IOleObjectVtbl WBOOBJ_Vtbl =
|
||||
{
|
||||
WBOOBJ_QueryInterface,
|
||||
WBOOBJ_AddRef,
|
||||
WBOOBJ_Release,
|
||||
WBOOBJ_SetClientSite,
|
||||
WBOOBJ_GetClientSite,
|
||||
WBOOBJ_SetHostNames,
|
||||
WBOOBJ_Close,
|
||||
WBOOBJ_SetMoniker,
|
||||
WBOOBJ_GetMoniker,
|
||||
WBOOBJ_InitFromData,
|
||||
WBOOBJ_GetClipboardData,
|
||||
WBOOBJ_DoVerb,
|
||||
WBOOBJ_EnumVerbs,
|
||||
WBOOBJ_Update,
|
||||
WBOOBJ_IsUpToDate,
|
||||
WBOOBJ_GetUserClassID,
|
||||
WBOOBJ_GetUserType,
|
||||
WBOOBJ_SetExtent,
|
||||
WBOOBJ_GetExtent,
|
||||
WBOOBJ_Advise,
|
||||
WBOOBJ_Unadvise,
|
||||
WBOOBJ_EnumAdvise,
|
||||
WBOOBJ_GetMiscStatus,
|
||||
WBOOBJ_SetColorScheme
|
||||
};
|
||||
|
||||
IOleObjectImpl SHDOCVW_OleObject = { &WBOOBJ_Vtbl, 1 };
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IOleInPlaceObject interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBOIPO_QueryInterface(LPOLEINPLACEOBJECT iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBOIPO_AddRef(LPOLEINPLACEOBJECT iface)
|
||||
{
|
||||
IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBOIPO_Release(LPOLEINPLACEOBJECT iface)
|
||||
{
|
||||
IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_GetWindow(LPOLEINPLACEOBJECT iface, HWND* phwnd)
|
||||
{
|
||||
#if 0
|
||||
/* Create a fake window to fool MFC into believing that we actually
|
||||
* have an implemented browser control. Avoids the assertion.
|
||||
*/
|
||||
HWND hwnd;
|
||||
hwnd = CreateWindowA("BUTTON", "Web Control",
|
||||
WS_HSCROLL | WS_VSCROLL | WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, 600,
|
||||
400, NULL, NULL, NULL, NULL);
|
||||
|
||||
*phwnd = hwnd;
|
||||
TRACE ("Returning hwnd = %d\n", hwnd);
|
||||
#endif
|
||||
|
||||
FIXME("stub HWND* = %p\n", phwnd);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_ContextSensitiveHelp(LPOLEINPLACEOBJECT iface,
|
||||
BOOL fEnterMode)
|
||||
{
|
||||
FIXME("stub fEnterMode = %d\n", fEnterMode);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_InPlaceDeactivate(LPOLEINPLACEOBJECT iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_UIDeactivate(LPOLEINPLACEOBJECT iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_SetObjectRects(LPOLEINPLACEOBJECT iface,
|
||||
LPCRECT lprcPosRect, LPCRECT lprcClipRect)
|
||||
{
|
||||
FIXME("stub PosRect = %p, ClipRect = %p\n", lprcPosRect, lprcClipRect);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOIPO_ReactivateAndUndo(LPOLEINPLACEOBJECT iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IOleInPlaceObject virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IOleInPlaceObjectVtbl WBOIPO_Vtbl =
|
||||
{
|
||||
WBOIPO_QueryInterface,
|
||||
WBOIPO_AddRef,
|
||||
WBOIPO_Release,
|
||||
WBOIPO_GetWindow,
|
||||
WBOIPO_ContextSensitiveHelp,
|
||||
WBOIPO_InPlaceDeactivate,
|
||||
WBOIPO_UIDeactivate,
|
||||
WBOIPO_SetObjectRects,
|
||||
WBOIPO_ReactivateAndUndo
|
||||
};
|
||||
|
||||
IOleInPlaceObjectImpl SHDOCVW_OleInPlaceObject = { &WBOIPO_Vtbl, 1 };
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IOleControl interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBOC_QueryInterface(LPOLECONTROL iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IOleControlImpl *This = (IOleControlImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBOC_AddRef(LPOLECONTROL iface)
|
||||
{
|
||||
IOleControlImpl *This = (IOleControlImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBOC_Release(LPOLECONTROL iface)
|
||||
{
|
||||
IOleControlImpl *This = (IOleControlImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOC_GetControlInfo(LPOLECONTROL iface, LPCONTROLINFO pCI)
|
||||
{
|
||||
FIXME("stub: LPCONTROLINFO = %p\n", pCI);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOC_OnMnemonic(LPOLECONTROL iface, struct tagMSG *pMsg)
|
||||
{
|
||||
FIXME("stub: MSG* = %p\n", pMsg);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOC_OnAmbientPropertyChange(LPOLECONTROL iface, DISPID dispID)
|
||||
{
|
||||
FIXME("stub: DISPID = %ld\n", dispID);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBOC_FreezeEvents(LPOLECONTROL iface, BOOL bFreeze)
|
||||
{
|
||||
FIXME("stub: bFreeze = %d\n", bFreeze);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IOleControl virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IOleControlVtbl WBOC_Vtbl =
|
||||
{
|
||||
WBOC_QueryInterface,
|
||||
WBOC_AddRef,
|
||||
WBOC_Release,
|
||||
WBOC_GetControlInfo,
|
||||
WBOC_OnMnemonic,
|
||||
WBOC_OnAmbientPropertyChange,
|
||||
WBOC_FreezeEvents
|
||||
};
|
||||
|
||||
IOleControlImpl SHDOCVW_OleControl = { &WBOC_Vtbl, 1 };
|
|
@ -1,198 +0,0 @@
|
|||
/*
|
||||
* Implementation of IPersist interfaces for IE Web Browser control
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IPersistStorage interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBPS_QueryInterface(LPPERSISTSTORAGE iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IPersistStorageImpl *This = (IPersistStorageImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPS_AddRef(LPPERSISTSTORAGE iface)
|
||||
{
|
||||
IPersistStorageImpl *This = (IPersistStorageImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPS_Release(LPPERSISTSTORAGE iface)
|
||||
{
|
||||
IPersistStorageImpl *This = (IPersistStorageImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_GetClassID(LPPERSISTSTORAGE iface, CLSID *pClassID)
|
||||
{
|
||||
FIXME("stub: CLSID = %s\n", debugstr_guid(pClassID));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_IsDirty(LPPERSISTSTORAGE iface)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_InitNew(LPPERSISTSTORAGE iface, LPSTORAGE pStg)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p\n", pStg);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_Load(LPPERSISTSTORAGE iface, LPSTORAGE pStg)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p\n", pStg);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_Save(LPPERSISTSTORAGE iface, LPSTORAGE pStg,
|
||||
BOOL fSameAsLoad)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p, fSameAsLoad = %d\n", pStg, fSameAsLoad);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPS_SaveCompleted(LPPERSISTSTORAGE iface, LPSTORAGE pStgNew)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p\n", pStgNew);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IPersistStorage virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IPersistStorageVtbl WBPS_Vtbl =
|
||||
{
|
||||
WBPS_QueryInterface,
|
||||
WBPS_AddRef,
|
||||
WBPS_Release,
|
||||
WBPS_GetClassID,
|
||||
WBPS_IsDirty,
|
||||
WBPS_InitNew,
|
||||
WBPS_Load,
|
||||
WBPS_Save,
|
||||
WBPS_SaveCompleted
|
||||
};
|
||||
|
||||
IPersistStorageImpl SHDOCVW_PersistStorage = { &WBPS_Vtbl, 1 };
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IPersistStreamInit interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WBPSI_QueryInterface(LPPERSISTSTREAMINIT iface,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPSI_AddRef(LPPERSISTSTREAMINIT iface)
|
||||
{
|
||||
IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WBPSI_Release(LPPERSISTSTREAMINIT iface)
|
||||
{
|
||||
IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_GetClassID(LPPERSISTSTREAMINIT iface, CLSID *pClassID)
|
||||
{
|
||||
FIXME("stub: CLSID = %s\n", debugstr_guid(pClassID));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_IsDirty(LPPERSISTSTREAMINIT iface)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_Load(LPPERSISTSTREAMINIT iface, LPSTREAM pStg)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p\n", pStg);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_Save(LPPERSISTSTREAMINIT iface, LPSTREAM pStg,
|
||||
BOOL fSameAsLoad)
|
||||
{
|
||||
FIXME("stub: LPSTORAGE = %p, fSameAsLoad = %d\n", pStg, fSameAsLoad);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_GetSizeMax(LPPERSISTSTREAMINIT iface,
|
||||
ULARGE_INTEGER *pcbSize)
|
||||
{
|
||||
FIXME("stub: ULARGE_INTEGER = %p\n", pcbSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WBPSI_InitNew(LPPERSISTSTREAMINIT iface)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IPersistStreamInit virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IPersistStreamInitVtbl WBPSI_Vtbl =
|
||||
{
|
||||
WBPSI_QueryInterface,
|
||||
WBPSI_AddRef,
|
||||
WBPSI_Release,
|
||||
WBPSI_GetClassID,
|
||||
WBPSI_IsDirty,
|
||||
WBPSI_Load,
|
||||
WBPSI_Save,
|
||||
WBPSI_GetSizeMax,
|
||||
WBPSI_InitNew
|
||||
};
|
||||
|
||||
IPersistStreamInitImpl SHDOCVW_PersistStreamInit = { &WBPSI_Vtbl, 1 };
|
|
@ -1,551 +0,0 @@
|
|||
/*
|
||||
* self-registerable dll functions for shdocvw.dll
|
||||
*
|
||||
* Copyright (C) 2003 John K. Hohm
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winuser.h"
|
||||
#include "winreg.h"
|
||||
#include "winerror.h"
|
||||
|
||||
#include "shdocvw.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/*
|
||||
* Near the bottom of this file are the exported DllRegisterServer and
|
||||
* DllUnregisterServer, which make all this worthwhile.
|
||||
*/
|
||||
|
||||
/***********************************************************************
|
||||
* interface for self-registering
|
||||
*/
|
||||
struct regsvr_interface
|
||||
{
|
||||
IID const *iid; /* NULL for end of list */
|
||||
LPCSTR name; /* can be NULL to omit */
|
||||
IID const *base_iid; /* can be NULL to omit */
|
||||
int num_methods; /* can be <0 to omit */
|
||||
CLSID const *ps_clsid; /* can be NULL to omit */
|
||||
CLSID const *ps_clsid32; /* can be NULL to omit */
|
||||
};
|
||||
|
||||
static HRESULT register_interfaces(struct regsvr_interface const *list);
|
||||
static HRESULT unregister_interfaces(struct regsvr_interface const *list);
|
||||
|
||||
struct regsvr_coclass
|
||||
{
|
||||
CLSID const *clsid; /* NULL for end of list */
|
||||
LPCSTR name; /* can be NULL to omit */
|
||||
LPCSTR ips; /* can be NULL to omit */
|
||||
LPCSTR ips32; /* can be NULL to omit */
|
||||
LPCSTR ips32_tmodel; /* can be NULL to omit */
|
||||
LPCSTR progid; /* can be NULL to omit */
|
||||
LPCSTR viprogid; /* can be NULL to omit */
|
||||
LPCSTR progid_extra; /* can be NULL to omit */
|
||||
};
|
||||
|
||||
static HRESULT register_coclasses(struct regsvr_coclass const *list);
|
||||
static HRESULT unregister_coclasses(struct regsvr_coclass const *list);
|
||||
|
||||
/***********************************************************************
|
||||
* static string constants
|
||||
*/
|
||||
static WCHAR const interface_keyname[10] = {
|
||||
'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 };
|
||||
static WCHAR const base_ifa_keyname[14] = {
|
||||
'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c',
|
||||
'e', 0 };
|
||||
static WCHAR const num_methods_keyname[11] = {
|
||||
'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 };
|
||||
static WCHAR const ps_clsid_keyname[15] = {
|
||||
'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's',
|
||||
'i', 'd', 0 };
|
||||
static WCHAR const ps_clsid32_keyname[17] = {
|
||||
'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's',
|
||||
'i', 'd', '3', '2', 0 };
|
||||
static WCHAR const clsid_keyname[6] = {
|
||||
'C', 'L', 'S', 'I', 'D', 0 };
|
||||
static WCHAR const curver_keyname[7] = {
|
||||
'C', 'u', 'r', 'V', 'e', 'r', 0 };
|
||||
static WCHAR const ips_keyname[13] = {
|
||||
'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r',
|
||||
0 };
|
||||
static WCHAR const ips32_keyname[15] = {
|
||||
'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r',
|
||||
'3', '2', 0 };
|
||||
static WCHAR const progid_keyname[7] = {
|
||||
'P', 'r', 'o', 'g', 'I', 'D', 0 };
|
||||
static WCHAR const viprogid_keyname[25] = {
|
||||
'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'd', 'e', 'p',
|
||||
'e', 'n', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'I', 'D',
|
||||
0 };
|
||||
static char const tmodel_valuename[] = "ThreadingModel";
|
||||
|
||||
/***********************************************************************
|
||||
* static helper functions
|
||||
*/
|
||||
static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid);
|
||||
static LONG register_key_defvalueW(HKEY base, WCHAR const *name,
|
||||
WCHAR const *value);
|
||||
static LONG register_key_defvalueA(HKEY base, WCHAR const *name,
|
||||
char const *value);
|
||||
static LONG register_progid(WCHAR const *clsid,
|
||||
char const *progid, char const *curver_progid,
|
||||
char const *name, char const *extra);
|
||||
static LONG recursive_delete_key(HKEY key);
|
||||
static LONG recursive_delete_keyA(HKEY base, char const *name);
|
||||
static LONG recursive_delete_keyW(HKEY base, WCHAR const *name);
|
||||
|
||||
/***********************************************************************
|
||||
* register_interfaces
|
||||
*/
|
||||
static HRESULT register_interfaces(struct regsvr_interface const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY interface_key;
|
||||
|
||||
res = RegCreateKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &interface_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->iid; ++list) {
|
||||
WCHAR buf[39];
|
||||
HKEY iid_key;
|
||||
|
||||
StringFromGUID2(list->iid, buf, 39);
|
||||
res = RegCreateKeyExW(interface_key, buf, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &iid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_interface_key;
|
||||
|
||||
if (list->name) {
|
||||
res = RegSetValueExA(iid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)(list->name),
|
||||
strlen(list->name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->base_iid) {
|
||||
register_key_guid(iid_key, base_ifa_keyname, list->base_iid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (0 <= list->num_methods) {
|
||||
static WCHAR const fmt[3] = { '%', 'd', 0 };
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(iid_key, num_methods_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
|
||||
wsprintfW(buf, fmt, list->num_methods);
|
||||
res = RegSetValueExW(key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)buf,
|
||||
(lstrlenW(buf) + 1) * sizeof(WCHAR));
|
||||
RegCloseKey(key);
|
||||
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->ps_clsid) {
|
||||
register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->ps_clsid32) {
|
||||
register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
error_close_iid_key:
|
||||
RegCloseKey(iid_key);
|
||||
}
|
||||
|
||||
error_close_interface_key:
|
||||
RegCloseKey(interface_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* unregister_interfaces
|
||||
*/
|
||||
static HRESULT unregister_interfaces(struct regsvr_interface const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY interface_key;
|
||||
|
||||
res = RegOpenKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0,
|
||||
KEY_READ | KEY_WRITE, &interface_key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return S_OK;
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->iid; ++list) {
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->iid, buf, 39);
|
||||
res = recursive_delete_keyW(interface_key, buf);
|
||||
}
|
||||
|
||||
RegCloseKey(interface_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* register_coclasses
|
||||
*/
|
||||
static HRESULT register_coclasses(struct regsvr_coclass const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY coclass_key;
|
||||
|
||||
res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->clsid; ++list) {
|
||||
WCHAR buf[39];
|
||||
HKEY clsid_key;
|
||||
|
||||
StringFromGUID2(list->clsid, buf, 39);
|
||||
res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
|
||||
if (list->name) {
|
||||
res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)(list->name),
|
||||
strlen(list->name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->ips) {
|
||||
res = register_key_defvalueA(clsid_key, ips_keyname, list->ips);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->ips32) {
|
||||
HKEY ips32_key;
|
||||
|
||||
res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL,
|
||||
&ips32_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)list->ips32,
|
||||
lstrlenA(list->ips32) + 1);
|
||||
if (res == ERROR_SUCCESS && list->ips32_tmodel)
|
||||
res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ,
|
||||
(CONST BYTE*)list->ips32_tmodel,
|
||||
strlen(list->ips32_tmodel) + 1);
|
||||
RegCloseKey(ips32_key);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->progid) {
|
||||
res = register_key_defvalueA(clsid_key, progid_keyname,
|
||||
list->progid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = register_progid(buf, list->progid, NULL,
|
||||
list->name, list->progid_extra);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->viprogid) {
|
||||
res = register_key_defvalueA(clsid_key, viprogid_keyname,
|
||||
list->viprogid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = register_progid(buf, list->viprogid, list->progid,
|
||||
list->name, list->progid_extra);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
error_close_clsid_key:
|
||||
RegCloseKey(clsid_key);
|
||||
}
|
||||
|
||||
error_close_coclass_key:
|
||||
RegCloseKey(coclass_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* unregister_coclasses
|
||||
*/
|
||||
static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY coclass_key;
|
||||
|
||||
res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0,
|
||||
KEY_READ | KEY_WRITE, &coclass_key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return S_OK;
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->clsid; ++list) {
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->clsid, buf, 39);
|
||||
res = recursive_delete_keyW(coclass_key, buf);
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
|
||||
if (list->progid) {
|
||||
res = recursive_delete_keyA(HKEY_CLASSES_ROOT, list->progid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
}
|
||||
|
||||
if (list->viprogid) {
|
||||
res = recursive_delete_keyA(HKEY_CLASSES_ROOT, list->viprogid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
}
|
||||
}
|
||||
|
||||
error_close_coclass_key:
|
||||
RegCloseKey(coclass_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_guid
|
||||
*/
|
||||
static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid)
|
||||
{
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(guid, buf, 39);
|
||||
return register_key_defvalueW(base, name, buf);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_defvalueW
|
||||
*/
|
||||
static LONG register_key_defvalueW(
|
||||
HKEY base,
|
||||
WCHAR const *name,
|
||||
WCHAR const *value)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(base, name, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value,
|
||||
(lstrlenW(value) + 1) * sizeof(WCHAR));
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_defvalueA
|
||||
*/
|
||||
static LONG register_key_defvalueA(
|
||||
HKEY base,
|
||||
WCHAR const *name,
|
||||
char const *value)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(base, name, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value,
|
||||
lstrlenA(value) + 1);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_progid
|
||||
*/
|
||||
static LONG register_progid(
|
||||
WCHAR const *clsid,
|
||||
char const *progid,
|
||||
char const *curver_progid,
|
||||
char const *name,
|
||||
char const *extra)
|
||||
{
|
||||
LONG res;
|
||||
HKEY progid_key;
|
||||
|
||||
res = RegCreateKeyExA(HKEY_CLASSES_ROOT, progid, 0,
|
||||
NULL, 0, KEY_READ | KEY_WRITE, NULL,
|
||||
&progid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
|
||||
if (name) {
|
||||
res = RegSetValueExA(progid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)name, strlen(name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (clsid) {
|
||||
res = register_key_defvalueW(progid_key, clsid_keyname, clsid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (curver_progid) {
|
||||
res = register_key_defvalueA(progid_key, curver_keyname,
|
||||
curver_progid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (extra) {
|
||||
HKEY extra_key;
|
||||
|
||||
res = RegCreateKeyExA(progid_key, extra, 0,
|
||||
NULL, 0, KEY_READ | KEY_WRITE, NULL,
|
||||
&extra_key, NULL);
|
||||
if (res == ERROR_SUCCESS)
|
||||
RegCloseKey(extra_key);
|
||||
}
|
||||
|
||||
error_close_progid_key:
|
||||
RegCloseKey(progid_key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_key
|
||||
*/
|
||||
static LONG recursive_delete_key(HKEY key)
|
||||
{
|
||||
LONG res;
|
||||
WCHAR subkey_name[MAX_PATH];
|
||||
DWORD cName;
|
||||
HKEY subkey;
|
||||
|
||||
for (;;) {
|
||||
cName = sizeof(subkey_name) / sizeof(WCHAR);
|
||||
res = RegEnumKeyExW(key, 0, subkey_name, &cName,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA) {
|
||||
res = ERROR_SUCCESS; /* presumably we're done enumerating */
|
||||
break;
|
||||
}
|
||||
res = RegOpenKeyExW(key, subkey_name, 0,
|
||||
KEY_READ | KEY_WRITE, &subkey);
|
||||
if (res == ERROR_FILE_NOT_FOUND) continue;
|
||||
if (res != ERROR_SUCCESS) break;
|
||||
|
||||
res = recursive_delete_key(subkey);
|
||||
RegCloseKey(subkey);
|
||||
if (res != ERROR_SUCCESS) break;
|
||||
}
|
||||
|
||||
if (res == ERROR_SUCCESS) res = RegDeleteKeyW(key, 0);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_keyA
|
||||
*/
|
||||
static LONG recursive_delete_keyA(HKEY base, char const *name)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegOpenKeyExA(base, name, 0, KEY_READ | KEY_WRITE, &key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = recursive_delete_key(key);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_keyW
|
||||
*/
|
||||
static LONG recursive_delete_keyW(HKEY base, WCHAR const *name)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegOpenKeyExW(base, name, 0, KEY_READ | KEY_WRITE, &key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = recursive_delete_key(key);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* coclass list
|
||||
*/
|
||||
static struct regsvr_coclass const coclass_list[] = {
|
||||
{ &CLSID_WebBrowser,
|
||||
"Microsoft Web Browser",
|
||||
NULL,
|
||||
"shdocvw.dll",
|
||||
"Apartment",
|
||||
"Shell.Explorer.2",
|
||||
"Shell.Explorer"
|
||||
},
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* interface list
|
||||
*/
|
||||
|
||||
static struct regsvr_interface const interface_list[] = {
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* DllRegisterServer (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllRegisterServer(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
hr = register_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = register_interfaces(interface_list);
|
||||
return hr;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllUnregisterServer (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllUnregisterServer(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
hr = unregister_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = unregister_interfaces(interface_list);
|
||||
return hr;
|
||||
}
|
|
@ -1,193 +0,0 @@
|
|||
/*
|
||||
* Header includes for shdocvw.dll
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_SHDOCVW_H
|
||||
#define __WINE_SHDOCVW_H
|
||||
|
||||
#define COM_NO_WINDOWS_H
|
||||
/* FIXME: Is there a better way to deal with all these includes? */
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
|
||||
#include "ole2.h"
|
||||
#include "olectl.h"
|
||||
#include "shlobj.h"
|
||||
#include "exdisp.h"
|
||||
|
||||
/**********************************************************************
|
||||
* IClassFactory declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IClassFactoryVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IClassFactoryImpl;
|
||||
|
||||
extern IClassFactoryImpl SHDOCVW_ClassFactory;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IOleObject declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IOleObjectVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IOleObjectImpl;
|
||||
|
||||
extern IOleObjectImpl SHDOCVW_OleObject;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IOleInPlaceObject declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IOleInPlaceObjectVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IOleInPlaceObjectImpl;
|
||||
|
||||
extern IOleInPlaceObjectImpl SHDOCVW_OleInPlaceObject;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IOleControl declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IOleControlVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IOleControlImpl;
|
||||
|
||||
extern IOleControlImpl SHDOCVW_OleControl;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IWebBrowser declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IWebBrowserVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IWebBrowserImpl;
|
||||
|
||||
extern IWebBrowserImpl SHDOCVW_WebBrowser;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IProvideClassInfo declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IProvideClassInfoVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IProvideClassInfoImpl;
|
||||
|
||||
extern IProvideClassInfoImpl SHDOCVW_ProvideClassInfo;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IProvideClassInfo2 declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IProvideClassInfo2Vtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IProvideClassInfo2Impl;
|
||||
|
||||
extern IProvideClassInfo2Impl SHDOCVW_ProvideClassInfo2;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IPersistStorage declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IPersistStorageVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IPersistStorageImpl;
|
||||
|
||||
extern IPersistStorageImpl SHDOCVW_PersistStorage;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IPersistStreamInit declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IPersistStreamInitVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IPersistStreamInitImpl;
|
||||
|
||||
extern IPersistStreamInitImpl SHDOCVW_PersistStreamInit;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IQuickActivate declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IQuickActivateVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IQuickActivateImpl;
|
||||
|
||||
extern IQuickActivateImpl SHDOCVW_QuickActivate;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IConnectionPointContainer declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IConnectionPointContainerVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IConnectionPointContainerImpl;
|
||||
|
||||
extern IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* IConnectionPoint declaration for SHDOCVW.DLL
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
IConnectionPointVtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
} IConnectionPointImpl;
|
||||
|
||||
extern IConnectionPointImpl SHDOCVW_ConnectionPoint;
|
||||
|
||||
#endif /* __WINE_SHDOCVW_H */
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright 2004 Mike McCormack for CodeWeavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "windef.h"
|
||||
#include "winuser.h"
|
||||
#include "winnls.h"
|
||||
#include "commctrl.h"
|
||||
|
||||
#include "version.rc"
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||
|
||||
100 DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 62
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Downloading the Mozilla Active X control"
|
||||
FONT 8, "Helv"
|
||||
{
|
||||
CONTROL "Progress1",1000,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", 104, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 85, 44, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
}
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1001 "This application is requesting an ActiveX browser object\n" \
|
||||
"but the Mozilla Active X control is currently not installed." \
|
||||
"Do you wish to download and install it?"
|
||||
END
|
|
@ -1,129 +0,0 @@
|
|||
# ordinal exports
|
||||
101 stub -noname IEWinMain
|
||||
102 stub -noname CreateShortcutInDirA
|
||||
103 stub -noname CreateShortcutInDirW
|
||||
104 stub -noname WhichPlatformFORWARD
|
||||
105 stub -noname CreateShortcutInDirEx
|
||||
106 stub HlinkFindFrame
|
||||
107 stub SetShellOfflineState
|
||||
108 stub AddUrlToFavorites
|
||||
110 stdcall -noname WinList_Init()
|
||||
111 stub -noname WinList_Terminate
|
||||
115 stub -noname CreateFromDesktop
|
||||
116 stub -noname DDECreatePostNotify
|
||||
117 stub -noname DDEHandleViewFolderNotify
|
||||
@ stub IEAboutBox
|
||||
118 stdcall -noname ShellDDEInit(long)
|
||||
119 stub -noname SHCreateDesktop
|
||||
120 stub -noname SHDesktopMessageLoop
|
||||
121 stub -noname StopWatchModeFORWARD
|
||||
122 stub -noname StopWatchFlushFORWARD
|
||||
123 stub -noname StopWatchFORWARD
|
||||
125 stdcall -noname RunInstallUninstallStubs()
|
||||
130 stub -noname RunInstallUninstallStubs2
|
||||
131 stub -noname SHCreateSplashScreen
|
||||
135 stub -noname IsFileUrl
|
||||
136 stub -noname IsFileUrlW
|
||||
137 stub -noname PathIsFilePath
|
||||
138 stub -noname URLSubLoadString
|
||||
139 stub -noname OpenPidlOrderStream
|
||||
140 stub -noname DragDrop
|
||||
141 stub -noname IEInvalidateImageList
|
||||
142 stub -noname IEMapPIDLToSystemImageListIndex
|
||||
143 stub -noname ILIsWeb
|
||||
145 stub -noname IEGetAttributesOf
|
||||
146 stub -noname IEBindToObject
|
||||
147 stub -noname IEGetNameAndFlags
|
||||
148 stub -noname IEGetDisplayName
|
||||
149 stub -noname IEBindToObjectEx
|
||||
150 stub -noname _GetStdLocation
|
||||
151 stub -noname URLSubRegQueryA
|
||||
152 stub -noname CShellUIHelper_CreateInstance2
|
||||
153 stub -noname IsURLChild
|
||||
158 stub -noname SHRestricted2A
|
||||
159 stub -noname SHRestricted2W
|
||||
160 stub -noname SHIsRestricted2W
|
||||
161 stub @ # CSearchAssistantOC::OnDraw
|
||||
162 stub -noname CDDEAuto_Navigate
|
||||
163 stub SHAddSubscribeFavorite
|
||||
164 stub -noname ResetProfileSharing
|
||||
165 stub -noname URLSubstitution
|
||||
167 stub -noname IsIEDefaultBrowser
|
||||
169 stub -noname ParseURLFromOutsideSourceA
|
||||
170 stub -noname ParseURLFromOutsideSourceW
|
||||
171 stub -noname _DeletePidlDPA
|
||||
172 stub -noname IURLQualify
|
||||
173 stub -noname SHIsRestricted
|
||||
174 stub -noname SHIsGlobalOffline
|
||||
175 stub -noname DetectAndFixAssociations
|
||||
176 stub -noname EnsureWebViewRegSettings
|
||||
177 stub -noname WinList_NotifyNewLocation
|
||||
178 stub -noname WinList_FindFolderWindow
|
||||
179 stub -noname WinList_GetShellWindows
|
||||
180 stub -noname WinList_RegisterPending
|
||||
181 stub -noname WinList_Revoke
|
||||
183 stub -noname SHMapNbspToSp
|
||||
185 stub -noname FireEvent_Quit
|
||||
187 stub -noname SHDGetPageLocation
|
||||
188 stub -noname SHIEErrorMsgBox
|
||||
189 stub -noname IEGetDisplayName
|
||||
190 stub -noname SHRunIndirectRegClientCommandForward
|
||||
191 stub -noname SHIsRegisteredClient
|
||||
192 stub -noname SHGetHistoryPIDL
|
||||
194 stub -noname IECleanUpAutomationObject
|
||||
195 stub -noname IEOnFirstBrowserCreation
|
||||
196 stub -noname IEDDE_WindowDestroyed
|
||||
197 stub -noname IEDDE_NewWindow
|
||||
198 stub -noname IsErrorUrl
|
||||
199 stub @
|
||||
200 stub -noname SHGetViewStream
|
||||
203 stub -noname NavToUrlUsingIEA
|
||||
204 stub -noname NavToUrlUsingIEW
|
||||
208 stub -noname SearchForElementInHead
|
||||
209 stub -noname JITCoCreateInstance
|
||||
210 stub -noname UrlHitsNetW
|
||||
211 stub -noname ClearAutoSuggestForForms
|
||||
212 stub -noname GetLinkInfo
|
||||
213 stub -noname UseCustomInternetSearch
|
||||
214 stub -noname GetSearchAssistantUrlW
|
||||
215 stub -noname GetSearchAssistantUrlA
|
||||
216 stub -noname GetDefaultInternetSearchUrlW
|
||||
217 stub -noname GetDefaultInternetSearchUrlA
|
||||
218 stub -noname IEParseDisplayNameWithBCW
|
||||
219 stub -noname IEILIsEqual
|
||||
220 stub @
|
||||
221 stub -noname IECreateFromPathCPWithBCA
|
||||
222 stub -noname IECreateFromPathCPWithBCW
|
||||
223 stub -noname ResetWebSettings
|
||||
224 stub -noname IsResetWebSettingsRequired
|
||||
225 stub -noname PrepareURLForDisplayUTF8W
|
||||
226 stub -noname IEIsLinkSafe
|
||||
227 stub -noname SHUseClassicToolbarGlyphs
|
||||
228 stub -noname SafeOpenPromptForShellExec
|
||||
229 stub -noname SafeOpenPromptForPackager
|
||||
|
||||
@ stdcall -private DllCanUnloadNow() SHDOCVW_DllCanUnloadNow
|
||||
@ stdcall -private DllGetClassObject(long long ptr) SHDOCVW_DllGetClassObject
|
||||
@ stdcall DllGetVersion(ptr) SHDOCVW_DllGetVersion
|
||||
@ stdcall DllInstall(long wstr) SHDOCVW_DllInstall
|
||||
@ stdcall -private DllRegisterServer() SHDOCVW_DllRegisterServer
|
||||
@ stdcall -private DllUnregisterServer() SHDOCVW_DllUnregisterServer
|
||||
@ stub DllRegisterWindowClasses
|
||||
@ stub DoAddToFavDlg
|
||||
@ stub DoAddToFavDlgW
|
||||
@ stub DoFileDownload
|
||||
@ stub DoFileDownloadEx
|
||||
@ stub DoOrganizeFavDlg
|
||||
@ stub DoOrganizeFavDlgW
|
||||
@ stub DoPrivacyDlg
|
||||
@ stub HlinkFrameNavigate
|
||||
@ stub HlinkFrameNavigateNHL
|
||||
@ stub ImportPrivacySettings
|
||||
@ stub InstallReg_RunDLL
|
||||
@ stub IEWriteErrorLog
|
||||
@ stub OpenURL
|
||||
@ stub SHGetIDispatchForFolder
|
||||
@ stdcall SetQueryNetSessionCount(long)
|
||||
@ stub SoftwareUpdateMessageBox
|
||||
@ stub URLQualifyA
|
||||
@ stub URLQualifyW
|
|
@ -1,553 +0,0 @@
|
|||
/*
|
||||
* SHDOCVW - Internet Explorer Web Control
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
* Copyright 2004 Mike McCormack (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define COBJMACROS
|
||||
#define COM_NO_WINDOWS_H
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winreg.h"
|
||||
#include "winuser.h"
|
||||
#include "winnls.h"
|
||||
#include "ole2.h"
|
||||
#include "shlwapi.h"
|
||||
|
||||
#include "shdocvw.h"
|
||||
#include "uuids.h"
|
||||
#include "urlmon.h"
|
||||
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
#include "initguid.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
static const WCHAR szMozDlPath[] = {
|
||||
'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
|
||||
's','h','d','o','c','v','w',0
|
||||
};
|
||||
|
||||
DEFINE_GUID( CLSID_MozillaBrowser, 0x1339B54C,0x3453,0x11D2,0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00);
|
||||
|
||||
typedef HRESULT (WINAPI *fnGetClassObject)(REFCLSID rclsid, REFIID iid, LPVOID *ppv);
|
||||
|
||||
HINSTANCE shdocvw_hinstance = 0;
|
||||
static HMODULE SHDOCVW_hshell32 = 0;
|
||||
static HMODULE hMozCtl = (HMODULE)~0UL;
|
||||
|
||||
|
||||
/* convert a guid to a wide character string */
|
||||
static void SHDOCVW_guid2wstr( const GUID *guid, LPWSTR wstr )
|
||||
{
|
||||
char str[40];
|
||||
|
||||
sprintf(str, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
|
||||
guid->Data1, guid->Data2, guid->Data3,
|
||||
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
|
||||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
|
||||
MultiByteToWideChar( CP_ACP, 0, str, -1, wstr, 40 );
|
||||
}
|
||||
|
||||
static BOOL SHDOCVW_GetMozctlPath( LPWSTR szPath, DWORD sz )
|
||||
{
|
||||
DWORD r, type;
|
||||
BOOL ret = FALSE;
|
||||
HKEY hkey;
|
||||
static const WCHAR szPre[] = {
|
||||
'S','o','f','t','w','a','r','e','\\',
|
||||
'C','l','a','s','s','e','s','\\',
|
||||
'C','L','S','I','D','\\',0 };
|
||||
static const WCHAR szPost[] = {
|
||||
'\\','I','n','p','r','o','c','S','e','r','v','e','r','3','2',0 };
|
||||
WCHAR szRegPath[(sizeof(szPre)+sizeof(szPost))/sizeof(WCHAR)+40];
|
||||
|
||||
strcpyW( szRegPath, szPre );
|
||||
SHDOCVW_guid2wstr( &CLSID_MozillaBrowser, &szRegPath[strlenW(szRegPath)] );
|
||||
strcatW( szRegPath, szPost );
|
||||
|
||||
TRACE("key = %s\n", debugstr_w( szRegPath ) );
|
||||
|
||||
r = RegOpenKeyW( HKEY_LOCAL_MACHINE, szRegPath, &hkey );
|
||||
if( r != ERROR_SUCCESS )
|
||||
return FALSE;
|
||||
|
||||
r = RegQueryValueExW( hkey, NULL, NULL, &type, (LPBYTE)szPath, &sz );
|
||||
ret = ( r == ERROR_SUCCESS ) && ( type == REG_SZ );
|
||||
RegCloseKey( hkey );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHDOCVW DllMain
|
||||
*/
|
||||
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad)
|
||||
{
|
||||
TRACE("%p 0x%lx %p\n", hinst, fdwReason, fImpLoad);
|
||||
switch (fdwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
shdocvw_hinstance = hinst;
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
if (SHDOCVW_hshell32) FreeLibrary(SHDOCVW_hshell32);
|
||||
if (hMozCtl && hMozCtl != (HMODULE)~0UL) FreeLibrary(hMozCtl);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* DllCanUnloadNow (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllCanUnloadNow(void)
|
||||
{
|
||||
FIXME("(void): stub\n");
|
||||
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHDOCVW_TryDownloadMozillaControl
|
||||
*/
|
||||
typedef struct _IBindStatusCallbackImpl {
|
||||
IBindStatusCallbackVtbl *vtbl;
|
||||
DWORD ref;
|
||||
HWND hDialog;
|
||||
BOOL *pbCancelled;
|
||||
} IBindStatusCallbackImpl;
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlQueryInterface( IBindStatusCallback* This, REFIID riid, void** ppvObject )
|
||||
{
|
||||
if( IsEqualIID(riid, &IID_IUnknown) ||
|
||||
IsEqualIID(riid, &IID_IBindStatusCallback))
|
||||
{
|
||||
IBindStatusCallback_AddRef( This );
|
||||
*ppvObject = This;
|
||||
return S_OK;
|
||||
}
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI dlAddRef( IBindStatusCallback* iface )
|
||||
{
|
||||
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||
return InterlockedIncrement( &This->ref );
|
||||
}
|
||||
|
||||
static ULONG WINAPI dlRelease( IBindStatusCallback* iface )
|
||||
{
|
||||
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||
DWORD ref = InterlockedDecrement( &This->ref );
|
||||
if( !ref )
|
||||
{
|
||||
DestroyWindow( This->hDialog );
|
||||
HeapFree( GetProcessHeap(), 0, This );
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnStartBinding( IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlGetPriority( IBindStatusCallback* iface, LONG* pnPriority)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnLowResource( IBindStatusCallback* iface, DWORD reserved)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnProgress( IBindStatusCallback* iface, ULONG ulProgress,
|
||||
ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
|
||||
{
|
||||
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||
HWND hItem;
|
||||
LONG r;
|
||||
|
||||
hItem = GetDlgItem( This->hDialog, 1000 );
|
||||
if( hItem && ulProgressMax )
|
||||
SendMessageW(hItem,PBM_SETPOS,(ulProgress*100)/ulProgressMax,0);
|
||||
|
||||
hItem = GetDlgItem(This->hDialog, 104);
|
||||
if( hItem )
|
||||
SendMessageW(hItem,WM_SETTEXT, 0, (LPARAM) szStatusText);
|
||||
|
||||
SetLastError(0);
|
||||
r = GetWindowLongPtrW( This->hDialog, GWLP_USERDATA );
|
||||
if( r || GetLastError() )
|
||||
{
|
||||
*This->pbCancelled = TRUE;
|
||||
ERR("Cancelled\n");
|
||||
return E_ABORT;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnStopBinding( IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlGetBindInfo( IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnDataAvailable( IBindStatusCallback* iface, DWORD grfBSCF,
|
||||
DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI
|
||||
dlOnObjectAvailable( IBindStatusCallback* iface, REFIID riid, IUnknown* punk)
|
||||
{
|
||||
ERR("\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
struct IBindStatusCallbackVtbl dlVtbl =
|
||||
{
|
||||
dlQueryInterface,
|
||||
dlAddRef,
|
||||
dlRelease,
|
||||
dlOnStartBinding,
|
||||
dlGetPriority,
|
||||
dlOnLowResource,
|
||||
dlOnProgress,
|
||||
dlOnStopBinding,
|
||||
dlGetBindInfo,
|
||||
dlOnDataAvailable,
|
||||
dlOnObjectAvailable
|
||||
};
|
||||
|
||||
static IBindStatusCallback* create_dl(HWND dlg, BOOL *pbCancelled)
|
||||
{
|
||||
IBindStatusCallbackImpl *This;
|
||||
|
||||
This = HeapAlloc( GetProcessHeap(), 0, sizeof *This );
|
||||
This->vtbl = &dlVtbl;
|
||||
This->ref = 1;
|
||||
This->hDialog = dlg;
|
||||
This->pbCancelled = pbCancelled;
|
||||
|
||||
return (IBindStatusCallback*) This;
|
||||
}
|
||||
|
||||
static DWORD WINAPI ThreadFunc( LPVOID info )
|
||||
{
|
||||
IBindStatusCallback *dl;
|
||||
static const WCHAR szUrlVal[] = {'M','o','z','i','l','l','a','U','r','l',0};
|
||||
WCHAR path[MAX_PATH], szUrl[MAX_PATH];
|
||||
LPWSTR p;
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
HWND hDlg = info;
|
||||
DWORD r, sz, type;
|
||||
HKEY hkey;
|
||||
BOOL bCancelled = FALSE;
|
||||
|
||||
/* find the name of the thing to download */
|
||||
szUrl[0] = 0;
|
||||
r = RegOpenKeyW( HKEY_LOCAL_MACHINE, szMozDlPath, &hkey );
|
||||
if( r == ERROR_SUCCESS )
|
||||
{
|
||||
sz = MAX_PATH;
|
||||
r = RegQueryValueExW( hkey, szUrlVal, NULL, &type, (LPBYTE)szUrl, &sz );
|
||||
RegCloseKey( hkey );
|
||||
}
|
||||
if( r != ERROR_SUCCESS )
|
||||
goto end;
|
||||
|
||||
/* built the path for the download */
|
||||
p = strrchrW( szUrl, '/' );
|
||||
if (!p)
|
||||
goto end;
|
||||
if (!GetTempPathW( MAX_PATH, path ))
|
||||
goto end;
|
||||
strcatW( path, p+1 );
|
||||
|
||||
/* download it */
|
||||
dl = create_dl(info, &bCancelled);
|
||||
r = URLDownloadToFileW( NULL, szUrl, path, 0, dl );
|
||||
if( dl )
|
||||
IBindStatusCallback_Release( dl );
|
||||
if( (r != S_OK) || bCancelled )
|
||||
goto end;
|
||||
|
||||
/* run it */
|
||||
memset( &si, 0, sizeof si );
|
||||
si.cb = sizeof si;
|
||||
r = CreateProcessW( path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi );
|
||||
if( !r )
|
||||
goto end;
|
||||
WaitForSingleObject( pi.hProcess, INFINITE );
|
||||
|
||||
end:
|
||||
EndDialog( hDlg, 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
static INT_PTR CALLBACK
|
||||
dlProc ( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HANDLE hThread;
|
||||
DWORD ThreadId;
|
||||
HWND hItem;
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
SetWindowLongPtrW( hwndDlg, GWLP_USERDATA, 0 );
|
||||
hItem = GetDlgItem(hwndDlg, 1000);
|
||||
if( hItem )
|
||||
{
|
||||
SendMessageW(hItem,PBM_SETRANGE,0,MAKELPARAM(0,100));
|
||||
SendMessageW(hItem,PBM_SETPOS,0,0);
|
||||
}
|
||||
hThread = CreateThread(NULL,0,ThreadFunc,hwndDlg,0,&ThreadId);
|
||||
if (!hThread)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
case WM_COMMAND:
|
||||
if( wParam == IDCANCEL )
|
||||
SetWindowLongPtrW( hwndDlg, GWLP_USERDATA, 1 );
|
||||
return FALSE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL SHDOCVW_TryDownloadMozillaControl()
|
||||
{
|
||||
DWORD r;
|
||||
WCHAR buf[0x100];
|
||||
static const WCHAR szWine[] = { 'W','i','n','e',0 };
|
||||
HANDLE hsem;
|
||||
|
||||
SetLastError( ERROR_SUCCESS );
|
||||
hsem = CreateSemaphoreA( NULL, 0, 1, "mozctl_install_semaphore");
|
||||
if( GetLastError() != ERROR_ALREADY_EXISTS )
|
||||
{
|
||||
LoadStringW( shdocvw_hinstance, 1001, buf, sizeof buf/sizeof(WCHAR) );
|
||||
r = MessageBoxW(NULL, buf, szWine, MB_YESNO | MB_ICONQUESTION);
|
||||
if( r != IDYES )
|
||||
return FALSE;
|
||||
|
||||
DialogBoxW(shdocvw_hinstance, MAKEINTRESOURCEW(100), 0, dlProc);
|
||||
}
|
||||
else
|
||||
WaitForSingleObject( hsem, INFINITE );
|
||||
ReleaseSemaphore( hsem, 1, NULL );
|
||||
CloseHandle( hsem );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL SHDOCVW_TryLoadMozillaControl()
|
||||
{
|
||||
WCHAR szPath[MAX_PATH];
|
||||
BOOL bTried = FALSE;
|
||||
|
||||
if( hMozCtl != (HMODULE)~0UL )
|
||||
return hMozCtl ? TRUE : FALSE;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
if( SHDOCVW_GetMozctlPath( szPath, sizeof szPath ) )
|
||||
{
|
||||
hMozCtl = LoadLibraryExW(szPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if( hMozCtl )
|
||||
return TRUE;
|
||||
}
|
||||
if( bTried )
|
||||
{
|
||||
MESSAGE("You need to install the Mozilla ActiveX control to\n");
|
||||
MESSAGE("use Wine's builtin CLSID_WebBrowser from SHDOCVW.DLL\n");
|
||||
return FALSE;
|
||||
}
|
||||
SHDOCVW_TryDownloadMozillaControl();
|
||||
bTried = TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* DllGetClassObject (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
TRACE("\n");
|
||||
|
||||
if( IsEqualGUID( &CLSID_WebBrowser, rclsid ) &&
|
||||
SHDOCVW_TryLoadMozillaControl() )
|
||||
{
|
||||
HRESULT r;
|
||||
fnGetClassObject pGetClassObject;
|
||||
|
||||
TRACE("WebBrowser class %s\n", debugstr_guid(rclsid) );
|
||||
|
||||
pGetClassObject = (fnGetClassObject)
|
||||
GetProcAddress( hMozCtl, "DllGetClassObject" );
|
||||
|
||||
if( !pGetClassObject )
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
r = pGetClassObject( &CLSID_MozillaBrowser, riid, ppv );
|
||||
|
||||
TRACE("r = %08lx *ppv = %p\n", r, *ppv );
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
if (IsEqualGUID(&IID_IClassFactory, riid))
|
||||
{
|
||||
/* Pass back our shdocvw class factory */
|
||||
*ppv = (LPVOID)&SHDOCVW_ClassFactory;
|
||||
IClassFactory_AddRef((IClassFactory*)&SHDOCVW_ClassFactory);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllGetVersion (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllGetVersion(DLLVERSIONINFO *info)
|
||||
{
|
||||
if (info->cbSize != sizeof(DLLVERSIONINFO)) FIXME("support DLLVERSIONINFO2\n");
|
||||
|
||||
/* this is what IE6 on Windows 98 reports */
|
||||
info->dwMajorVersion = 6;
|
||||
info->dwMinorVersion = 0;
|
||||
info->dwBuildNumber = 2600;
|
||||
info->dwPlatformID = DLLVER_PLATFORM_WINDOWS;
|
||||
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* DllInstall (SHDOCVW.@)
|
||||
*/
|
||||
HRESULT WINAPI SHDOCVW_DllInstall(BOOL bInstall, LPCWSTR cmdline)
|
||||
{
|
||||
FIXME("(%s, %s): stub!\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline));
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHDOCVW_LoadShell32
|
||||
*
|
||||
* makes sure the handle to shell32 is valid
|
||||
*/
|
||||
BOOL SHDOCVW_LoadShell32(void)
|
||||
{
|
||||
if (SHDOCVW_hshell32)
|
||||
return TRUE;
|
||||
return ((SHDOCVW_hshell32 = LoadLibraryA("shell32.dll")) != NULL);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* @ (SHDOCVW.110)
|
||||
*
|
||||
* Called by Win98 explorer.exe main binary, definitely has 0
|
||||
* parameters.
|
||||
*/
|
||||
DWORD WINAPI WinList_Init(void)
|
||||
{
|
||||
FIXME("(), stub!\n");
|
||||
return 0x0deadfeed;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* @ (SHDOCVW.118)
|
||||
*
|
||||
* Called by Win98 explorer.exe main binary, definitely has only one
|
||||
* parameter.
|
||||
*/
|
||||
static BOOL (WINAPI *pShellDDEInit)(BOOL start) = NULL;
|
||||
|
||||
BOOL WINAPI ShellDDEInit(BOOL start)
|
||||
{
|
||||
TRACE("(%d)\n", start);
|
||||
|
||||
if (!pShellDDEInit)
|
||||
{
|
||||
if (!SHDOCVW_LoadShell32())
|
||||
return FALSE;
|
||||
pShellDDEInit = GetProcAddress(SHDOCVW_hshell32, (LPCSTR)188);
|
||||
}
|
||||
|
||||
if (pShellDDEInit)
|
||||
return pShellDDEInit(start);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* @ (SHDOCVW.125)
|
||||
*
|
||||
* Called by Win98 explorer.exe main binary, definitely has 0
|
||||
* parameters.
|
||||
*/
|
||||
DWORD WINAPI RunInstallUninstallStubs(void)
|
||||
{
|
||||
FIXME("(), stub!\n");
|
||||
return 0x0deadbee;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SetQueryNetSessionCount (SHDOCVW.@)
|
||||
*/
|
||||
DWORD WINAPI SetQueryNetSessionCount(DWORD arg)
|
||||
{
|
||||
FIXME("(%lu), stub!\n", arg);
|
||||
return 0;
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Copyright 2003 Francois Gouget (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define WINE_OLESELFREGISTER
|
||||
#define WINE_FILEDESCRIPTION_STR "Wine core dll"
|
||||
#define WINE_FILENAME_STR "shdocvw.dll"
|
||||
#define WINE_FILEVERSION 5,50,0,0
|
||||
#define WINE_FILEVERSION_STR "5.50.0.0"
|
||||
#define WINE_PRODUCTVERSION 5,50,0,0
|
||||
#define WINE_PRODUCTVERSION_STR "5.50"
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
|
@ -1,280 +0,0 @@
|
|||
/*
|
||||
* Implementation of IWebBrowser interface for IE Web Browser control
|
||||
*
|
||||
* Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "shdocvw.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
|
||||
|
||||
/**********************************************************************
|
||||
* Implement the IWebBrowser interface
|
||||
*/
|
||||
|
||||
static HRESULT WINAPI WB_QueryInterface(IWebBrowser *iface, REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IWebBrowserImpl *This = (IWebBrowserImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI WB_AddRef(IWebBrowser *iface)
|
||||
{
|
||||
IWebBrowserImpl *This = (IWebBrowserImpl *)iface;
|
||||
|
||||
TRACE("\n");
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI WB_Release(IWebBrowser *iface)
|
||||
{
|
||||
IWebBrowserImpl *This = (IWebBrowserImpl *)iface;
|
||||
|
||||
/* static class, won't be freed */
|
||||
TRACE("\n");
|
||||
return --(This->ref);
|
||||
}
|
||||
|
||||
/* IDispatch methods */
|
||||
static HRESULT WINAPI WB_GetTypeInfoCount(IWebBrowser *iface, UINT *pctinfo)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_GetTypeInfo(IWebBrowser *iface, UINT iTInfo, LCID lcid,
|
||||
LPTYPEINFO *ppTInfo)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_GetIDsOfNames(IWebBrowser *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames,
|
||||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_Invoke(IWebBrowser *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags,
|
||||
DISPPARAMS *pDispParams, VARIANT *pVarResult,
|
||||
EXCEPINFO *pExepInfo, UINT *puArgErr)
|
||||
{
|
||||
FIXME("stub dispIdMember = %d, IID = %s\n", (int)dispIdMember, debugstr_guid(riid));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* IWebBrowser methods */
|
||||
static HRESULT WINAPI WB_GoBack(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_GoForward(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_GoHome(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_GoSearch(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_Navigate(IWebBrowser *iface, BSTR URL,
|
||||
VARIANT *Flags, VARIANT *TargetFrameName,
|
||||
VARIANT *PostData, VARIANT *Headers)
|
||||
{
|
||||
FIXME("stub: URL = %p (%p, %p, %p, %p)\n", URL, Flags, TargetFrameName,
|
||||
PostData, Headers);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_Refresh(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_Refresh2(IWebBrowser *iface, VARIANT *Level)
|
||||
{
|
||||
FIXME("stub: %p\n", Level);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_Stop(IWebBrowser *iface)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Application(IWebBrowser *iface, IDispatch **ppDisp)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Parent(IWebBrowser *iface, IDispatch **ppDisp)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Container(IWebBrowser *iface, IDispatch **ppDisp)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Document(IWebBrowser *iface, IDispatch **ppDisp)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_TopLevelContainer(IWebBrowser *iface, VARIANT_BOOL *pBool)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Type(IWebBrowser *iface, BSTR *Type)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Left(IWebBrowser *iface, long *pl)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_put_Left(IWebBrowser *iface, long Left)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Top(IWebBrowser *iface, long *pl)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_put_Top(IWebBrowser *iface, long Top)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Width(IWebBrowser *iface, long *pl)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_put_Width(IWebBrowser *iface, long Width)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Height(IWebBrowser *iface, long *pl)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_put_Height(IWebBrowser *iface, long Height)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_LocationName(IWebBrowser *iface, BSTR *LocationName)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_LocationURL(IWebBrowser *iface, BSTR *LocationURL)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WB_get_Busy(IWebBrowser *iface, VARIANT_BOOL *pBool)
|
||||
{
|
||||
FIXME("stub \n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* IWebBrowser virtual function table for IE Web Browser component
|
||||
*/
|
||||
|
||||
static IWebBrowserVtbl WB_Vtbl =
|
||||
{
|
||||
WB_QueryInterface,
|
||||
WB_AddRef,
|
||||
WB_Release,
|
||||
WB_GetTypeInfoCount,
|
||||
WB_GetTypeInfo,
|
||||
WB_GetIDsOfNames,
|
||||
WB_Invoke,
|
||||
WB_GoBack,
|
||||
WB_GoForward,
|
||||
WB_GoHome,
|
||||
WB_GoSearch,
|
||||
WB_Navigate,
|
||||
WB_Refresh,
|
||||
WB_Refresh2,
|
||||
WB_Stop,
|
||||
WB_get_Application,
|
||||
WB_get_Parent,
|
||||
WB_get_Container,
|
||||
WB_get_Document,
|
||||
WB_get_TopLevelContainer,
|
||||
WB_get_Type,
|
||||
WB_get_Left,
|
||||
WB_put_Left,
|
||||
WB_get_Top,
|
||||
WB_put_Top,
|
||||
WB_get_Width,
|
||||
WB_put_Width,
|
||||
WB_get_Height,
|
||||
WB_put_Height,
|
||||
WB_get_LocationName,
|
||||
WB_get_LocationURL,
|
||||
WB_get_Busy
|
||||
};
|
||||
|
||||
IWebBrowserImpl SHDOCVW_WebBrowser = { &WB_Vtbl, 1 };
|
Loading…
Reference in a new issue