Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
02ceb943
Commit
02ceb943
authored
Jul 23, 2011
by
Jacek Caban
Committed by
Alexandre Julliard
Jul 25, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ieframe: Moved InternetShortcut implementation to ieframe.dll.
parent
c33c5830
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
233 additions
and
63 deletions
+233
-63
configure
configure
+1
-1
configure.ac
configure.ac
+1
-1
Makefile.in
dlls/ieframe/Makefile.in
+4
-1
ieframe.h
dlls/ieframe/ieframe.h
+90
-0
ieframe.spec
dlls/ieframe/ieframe.spec
+1
-0
ieframe_main.c
dlls/ieframe/ieframe_main.c
+60
-9
intshcut.c
dlls/ieframe/intshcut.c
+38
-43
Makefile.in
dlls/shdocvw/Makefile.in
+1
-2
factory.c
dlls/shdocvw/factory.c
+20
-2
shdocvw.h
dlls/shdocvw/shdocvw.h
+2
-3
shdocvw.spec
dlls/shdocvw/shdocvw.spec
+1
-1
shdocvw_main.c
dlls/shdocvw/shdocvw_main.c
+14
-0
No files found.
configure
View file @
02ceb943
...
...
@@ -14854,7 +14854,7 @@ wine_fn_config_dll hnetcfg enable_hnetcfg
wine_fn_config_dll httpapi enable_httpapi
wine_fn_config_dll iccvid enable_iccvid po
wine_fn_config_dll icmp enable_icmp
wine_fn_config_dll ieframe enable_ieframe
wine_fn_config_dll ieframe enable_ieframe
implib
wine_fn_config_dll ifsmgr.vxd enable_win16
wine_fn_config_dll imaadp32.acm enable_imaadp32_acm
wine_fn_config_dll imagehlp enable_imagehlp implib
...
...
configure.ac
View file @
02ceb943
...
...
@@ -2527,7 +2527,7 @@ WINE_CONFIG_DLL(hnetcfg)
WINE_CONFIG_DLL(httpapi)
WINE_CONFIG_DLL(iccvid,,[po])
WINE_CONFIG_DLL(icmp)
WINE_CONFIG_DLL(ieframe)
WINE_CONFIG_DLL(ieframe
,,[implib]
)
WINE_CONFIG_DLL(ifsmgr.vxd,enable_win16)
WINE_CONFIG_DLL(imaadp32.acm)
WINE_CONFIG_DLL(imagehlp,,[implib])
...
...
dlls/ieframe/Makefile.in
View file @
02ceb943
MODULE
=
ieframe.dll
IMPORTLIB
=
ieframe
IMPORTS
=
uuid urlmon shell32 ole32 advapi32
C_SRCS
=
\
ieframe_main.c
ieframe_main.c
\
intshcut.c
@MAKE_DLL_RULES@
dlls/ieframe/ieframe.h
0 → 100644
View file @
02ceb943
/*
* Header includes for shdocvw.dll
*
* Copyright 2011 Jacek Caban 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#define COBJMACROS
#define NONAMELESSUNION
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "ole2.h"
#include "wine/unicode.h"
HRESULT
WINAPI
InternetShortcut_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
);
extern
LONG
module_ref
DECLSPEC_HIDDEN
;
static
inline
void
lock_module
(
void
)
{
InterlockedIncrement
(
&
module_ref
);
}
static
inline
void
unlock_module
(
void
)
{
InterlockedDecrement
(
&
module_ref
);
}
static
inline
void
*
heap_alloc
(
size_t
len
)
{
return
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
}
static
inline
void
*
heap_alloc_zero
(
size_t
len
)
{
return
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
len
);
}
static
inline
BOOL
heap_free
(
void
*
mem
)
{
return
HeapFree
(
GetProcessHeap
(),
0
,
mem
);
}
static
inline
LPWSTR
co_strdupW
(
LPCWSTR
str
)
{
WCHAR
*
ret
=
CoTaskMemAlloc
((
strlenW
(
str
)
+
1
)
*
sizeof
(
WCHAR
));
if
(
ret
)
lstrcpyW
(
ret
,
str
);
return
ret
;
}
static
inline
LPWSTR
co_strdupAtoW
(
LPCSTR
str
)
{
INT
len
;
WCHAR
*
ret
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
ret
=
CoTaskMemAlloc
(
len
*
sizeof
(
WCHAR
));
if
(
ret
)
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
return
ret
;
}
static
inline
LPSTR
co_strdupWtoA
(
LPCWSTR
str
)
{
INT
len
;
CHAR
*
ret
;
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
,
0
,
0
);
ret
=
CoTaskMemAlloc
(
len
);
if
(
ret
)
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
,
0
,
0
);
return
ret
;
}
dlls/ieframe/ieframe.spec
View file @
02ceb943
...
...
@@ -2,3 +2,4 @@
@ stdcall -private DllGetClassObject(ptr ptr ptr)
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
@ stdcall OpenURL(long long str long)
dlls/ieframe/ieframe_main.c
View file @
02ceb943
...
...
@@ -16,19 +16,65 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "
config
.h"
#include "
ieframe
.h"
#include <stdarg.h>
#define COBJMACROS
#include "windef.h"
#include "winbase.h"
#include "isguids.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
ieframe
);
LONG
module_ref
=
0
;
static
HRESULT
WINAPI
ClassFactory_QueryInterface
(
IClassFactory
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
*
ppv
=
NULL
;
if
(
IsEqualGUID
(
&
IID_IUnknown
,
riid
))
{
TRACE
(
"(%p)->(IID_IUnknown %p)
\n
"
,
iface
,
ppv
);
*
ppv
=
iface
;
}
else
if
(
IsEqualGUID
(
&
IID_IClassFactory
,
riid
))
{
TRACE
(
"(%p)->(IID_IClassFactory %p)
\n
"
,
iface
,
ppv
);
*
ppv
=
iface
;
}
if
(
*
ppv
)
{
IUnknown_AddRef
((
IUnknown
*
)
*
ppv
);
return
S_OK
;
}
FIXME
(
"(%p)->(%s %p)
\n
"
,
iface
,
debugstr_guid
(
riid
),
ppv
);
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
ClassFactory_AddRef
(
IClassFactory
*
iface
)
{
TRACE
(
"(%p)
\n
"
,
iface
);
return
2
;
}
static
ULONG
WINAPI
ClassFactory_Release
(
IClassFactory
*
iface
)
{
TRACE
(
"(%p)
\n
"
,
iface
);
return
1
;
}
static
HRESULT
WINAPI
ClassFactory_LockServer
(
IClassFactory
*
iface
,
BOOL
fLock
)
{
TRACE
(
"(%p)->(%x)
\n
"
,
iface
,
fLock
);
return
S_OK
;
}
static
const
IClassFactoryVtbl
InternetShortcutFactoryVtbl
=
{
ClassFactory_QueryInterface
,
ClassFactory_AddRef
,
ClassFactory_Release
,
InternetShortcut_Create
,
ClassFactory_LockServer
};
static
IClassFactory
InternetShortcutFactory
=
{
&
InternetShortcutFactoryVtbl
};
/******************************************************************
* DllMain (ieframe.@)
*/
...
...
@@ -53,6 +99,11 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
*/
HRESULT
WINAPI
DllGetClassObject
(
REFCLSID
rclsid
,
REFIID
riid
,
LPVOID
*
ppv
)
{
if
(
IsEqualGUID
(
rclsid
,
&
CLSID_InternetShortcut
))
{
TRACE
(
"(CLSID_InternetShortcut %s %p)
\n
"
,
debugstr_guid
(
riid
),
ppv
);
return
IClassFactory_QueryInterface
(
&
InternetShortcutFactory
,
riid
,
ppv
);
}
FIXME
(
"%s %s %p
\n
"
,
debugstr_guid
(
rclsid
),
debugstr_guid
(
riid
),
ppv
);
return
CLASS_E_CLASSNOTAVAILABLE
;
}
...
...
@@ -62,8 +113,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
*/
HRESULT
WINAPI
DllCanUnloadNow
(
void
)
{
FIXM
E
(
"()
\n
"
);
return
S_FALSE
;
TRAC
E
(
"()
\n
"
);
return
module_ref
?
S_FALSE
:
S_OK
;
}
/***********************************************************************
...
...
dlls/
shdocvw
/intshcut.c
→
dlls/
ieframe
/intshcut.c
View file @
02ceb943
...
...
@@ -27,20 +27,21 @@
* The installer for the Zuma Deluxe Popcap game is good for testing.
*/
#include <stdarg.h>
#include <stdio.h>
#define NONAMELESSUNION
#include "wine/debug.h"
#include "shdocvw.h"
#include "objidl.h"
#include "ieframe.h"
#include "shlobj.h"
#include "shobjidl.h"
#include "intshcut.h"
#include "shellapi.h"
#include "winreg.h"
#include "shlwapi.h"
#include "shlguid.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
ieframe
);
typedef
struct
{
...
...
@@ -133,7 +134,7 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
if
(
!
buffer
)
return
FALSE
;
w
sprintfW
(
buffer
,
szFormat
,
szLink
);
sprintfW
(
buffer
,
szFormat
,
szLink
);
ret
=
run_winemenubuilder
(
buffer
);
heap_free
(
buffer
);
return
ret
;
...
...
@@ -191,7 +192,7 @@ static ULONG Unknown_Release(InternetShortcut *This)
CoTaskMemFree
(
This
->
currentFile
);
IPropertySetStorage_Release
(
This
->
property_set_storage
);
heap_free
(
This
);
SHDOCVW_UnlockM
odule
();
unlock_m
odule
();
}
return
count
;
}
...
...
@@ -815,7 +816,7 @@ static InternetShortcut *create_shortcut(void)
newshortcut
->
IUniformResourceLocatorW_iface
.
lpVtbl
=
&
uniformResourceLocatorWVtbl
;
newshortcut
->
IPersistFile_iface
.
lpVtbl
=
&
persistFileVtbl
;
newshortcut
->
IPropertySetStorage_iface
.
lpVtbl
=
&
propertySetStorageVtbl
;
newshortcut
->
refCount
=
0
;
newshortcut
->
refCount
=
1
;
hr
=
StgCreateStorageEx
(
NULL
,
STGM_CREATE
|
STGM_READWRITE
|
STGM_SHARE_EXCLUSIVE
|
STGM_DELETEONRELEASE
,
STGFMT_STORAGE
,
0
,
NULL
,
NULL
,
&
IID_IPropertySetStorage
,
(
void
**
)
&
newshortcut
->
property_set_storage
);
if
FAILED
(
hr
)
...
...
@@ -839,64 +840,58 @@ static InternetShortcut *create_shortcut(void)
return
newshortcut
;
}
HRESULT
InternetShortcut_Create
(
IUnknown
*
pO
uter
,
REFIID
riid
,
void
**
ppv
)
HRESULT
WINAPI
InternetShortcut_Create
(
IClassFactory
*
iface
,
IUnknown
*
o
uter
,
REFIID
riid
,
void
**
ppv
)
{
InternetShortcut
*
This
;
HRESULT
hr
;
HRESULT
hr
es
;
TRACE
(
"(%p, %s, %p)
\n
"
,
pO
uter
,
debugstr_guid
(
riid
),
ppv
);
TRACE
(
"(%p, %s, %p)
\n
"
,
o
uter
,
debugstr_guid
(
riid
),
ppv
);
*
ppv
=
NULL
;
if
(
pO
uter
)
if
(
o
uter
)
return
CLASS_E_NOAGGREGATION
;
This
=
create_shortcut
();
if
(
This
)
{
hr
=
Unknown_QueryInterface
(
This
,
riid
,
ppv
);
if
(
SUCCEEDED
(
hr
))
SHDOCVW_LockModule
();
else
heap_free
(
This
);
return
hr
;
}
else
if
(
!
This
)
return
E_OUTOFMEMORY
;
hres
=
Unknown_QueryInterface
(
This
,
riid
,
ppv
);
Unknown_Release
(
This
);
return
hres
;
}
/**********************************************************************
* OpenURL (
SHDOCVW
.@)
* OpenURL (
ieframe
.@)
*/
void
WINAPI
OpenURL
(
HWND
hWnd
,
HINSTANCE
hInst
,
LPCSTR
lpcstrUrl
,
int
nShowCmd
)
{
InternetShortcut
*
shortcut
;
WCHAR
*
urlfilepath
=
NULL
;
shortcut
=
create_shortcut
()
;
int
len
;
if
(
shortcut
)
{
int
len
;
shortcut
=
create_shortcut
();
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
lpcstrUrl
,
-
1
,
NULL
,
0
);
urlfilepath
=
heap_alloc
(
len
*
sizeof
(
WCHAR
));
MultiByteToWideChar
(
CP_ACP
,
0
,
lpcstrUrl
,
-
1
,
urlfilepath
,
len
);
if
(
!
shortcut
)
return
;
if
(
SUCCEEDED
(
IPersistFile_Load
(
&
shortcut
->
IPersistFile_iface
,
urlfilepath
,
0
)))
{
URLINVOKECOMMANDINFOW
ici
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
lpcstrUrl
,
-
1
,
NULL
,
0
);
urlfilepath
=
heap_alloc
(
len
*
sizeof
(
WCHAR
));
MultiByteToWideChar
(
CP_ACP
,
0
,
lpcstrUrl
,
-
1
,
urlfilepath
,
len
)
;
memset
(
&
ici
,
0
,
sizeof
ici
);
ici
.
dwcbSize
=
sizeof
ici
;
ici
.
dwFlags
=
IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB
;
ici
.
hwndParent
=
hWnd
;
if
(
SUCCEEDED
(
IPersistFile_Load
(
&
shortcut
->
IPersistFile_iface
,
urlfilepath
,
0
)))
{
URLINVOKECOMMANDINFOW
ici
;
if
(
FAILED
(
UniformResourceLocatorW_InvokeCommand
(
&
shortcut
->
IUniformResourceLocatorW_iface
,
(
PURLINVOKECOMMANDINFOW
)
&
ici
)))
TRACE
(
"failed to open URL: %s
\n
"
,
debugstr_a
(
lpcstrUrl
));
}
memset
(
&
ici
,
0
,
sizeof
ici
);
ici
.
dwcbSize
=
sizeof
ici
;
ici
.
dwFlags
=
IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB
;
ici
.
hwndParent
=
hWnd
;
heap_free
(
shortcut
);
heap_free
(
urlfilepath
);
if
(
FAILED
(
UniformResourceLocatorW_InvokeCommand
(
&
shortcut
->
IUniformResourceLocatorW_iface
,
(
PURLINVOKECOMMANDINFOW
)
&
ici
)))
TRACE
(
"failed to open URL: %s
\n
"
,
debugstr_a
(
lpcstrUrl
)
);
}
heap_free
(
urlfilepath
);
Unknown_Release
(
shortcut
);
}
dlls/shdocvw/Makefile.in
View file @
02ceb943
...
...
@@ -2,7 +2,7 @@ EXTRADEFS = -D_SHDOCVW_
MODULE
=
shdocvw.dll
IMPORTLIB
=
shdocvw
IMPORTS
=
uuid shell32 comctl32 shlwapi user32 gdi32 advapi32
DELAYIMPORTS
=
version urlmon ole32 oleaut32
DELAYIMPORTS
=
version urlmon ole32 oleaut32
ieframe
C_SRCS
=
\
classinfo.c
\
...
...
@@ -13,7 +13,6 @@ C_SRCS = \
frame.c
\
ie.c
\
iexplore.c
\
intshcut.c
\
navigate.c
\
oleobject.c
\
persist.c
\
...
...
dlls/shdocvw/factory.c
View file @
02ceb943
...
...
@@ -128,6 +128,25 @@ static const IClassFactoryVtbl WBCF_Vtbl =
WBCF_LockServer
};
static
HRESULT
get_ieframe_object
(
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
{
HINSTANCE
ieframe_instance
;
static
HRESULT
(
WINAPI
*
ieframe_DllGetClassObject
)(
REFCLSID
,
REFIID
,
void
**
);
if
(
!
ieframe_DllGetClassObject
)
{
ieframe_instance
=
get_ieframe_instance
();
if
(
!
ieframe_instance
)
return
CLASS_E_CLASSNOTAVAILABLE
;
ieframe_DllGetClassObject
=
(
void
*
)
GetProcAddress
(
ieframe_instance
,
"DllGetClassObject"
);
if
(
!
ieframe_DllGetClassObject
)
return
CLASS_E_CLASSNOTAVAILABLE
;
}
return
ieframe_DllGetClassObject
(
rclsid
,
riid
,
ppv
);
}
/*************************************************************************
* DllGetClassObject (SHDOCVW.@)
*/
...
...
@@ -136,7 +155,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
static
IClassFactoryImpl
WB1ClassFactory
=
{{
&
WBCF_Vtbl
},
WebBrowserV1_Create
};
static
IClassFactoryImpl
WB2ClassFactory
=
{{
&
WBCF_Vtbl
},
WebBrowserV2_Create
};
static
IClassFactoryImpl
CUHClassFactory
=
{{
&
WBCF_Vtbl
},
CUrlHistory_Create
};
static
IClassFactoryImpl
ISCClassFactory
=
{{
&
WBCF_Vtbl
},
InternetShortcut_Create
};
static
IClassFactoryImpl
TBLClassFactory
=
{{
&
WBCF_Vtbl
},
TaskbarList_Create
};
TRACE
(
"
\n
"
);
...
...
@@ -151,7 +169,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
return
IClassFactory_QueryInterface
(
&
CUHClassFactory
.
IClassFactory_iface
,
riid
,
ppv
);
if
(
IsEqualGUID
(
&
CLSID_InternetShortcut
,
rclsid
))
return
IClassFactory_QueryInterface
(
&
ISCClassFactory
.
IClassFactory_iface
,
riid
,
ppv
);
return
get_ieframe_object
(
rclsid
,
riid
,
ppv
);
if
(
IsEqualGUID
(
&
CLSID_TaskbarList
,
rclsid
))
return
IClassFactory_QueryInterface
(
&
TBLClassFactory
.
IClassFactory_iface
,
riid
,
ppv
);
...
...
dlls/shdocvw/shdocvw.h
View file @
02ceb943
...
...
@@ -259,9 +259,6 @@ void InternetExplorer_WebBrowser_Init(InternetExplorer*) DECLSPEC_HIDDEN;
void
released_obj
(
void
)
DECLSPEC_HIDDEN
;
HRESULT
CUrlHistory_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
InternetShortcut_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
TaskbarList_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
/**********************************************************************
...
...
@@ -276,6 +273,8 @@ extern void register_iewindow_class(void) DECLSPEC_HIDDEN;
extern
void
unregister_iewindow_class
(
void
)
DECLSPEC_HIDDEN
;
extern
HRESULT
update_ie_statustext
(
InternetExplorer
*
,
LPCWSTR
)
DECLSPEC_HIDDEN
;
HINSTANCE
get_ieframe_instance
(
void
)
DECLSPEC_HIDDEN
;
HRESULT
register_class_object
(
BOOL
)
DECLSPEC_HIDDEN
;
HRESULT
get_typeinfo
(
ITypeInfo
**
)
DECLSPEC_HIDDEN
;
DWORD
register_iexplore
(
BOOL
)
DECLSPEC_HIDDEN
;
...
...
dlls/shdocvw/shdocvw.spec
View file @
02ceb943
...
...
@@ -122,7 +122,7 @@
@ stub IEWriteErrorLog
@ stdcall ImportPrivacySettings(wstr ptr ptr)
@ stub InstallReg_RunDLL
@ stdcall OpenURL(long long str long)
@ stdcall OpenURL(long long str long)
ieframe.OpenURL
@ stub SHGetIDispatchForFolder
@ stdcall SetQueryNetSessionCount(long)
@ stub SoftwareUpdateMessageBox
...
...
dlls/shdocvw/shdocvw_main.c
View file @
02ceb943
...
...
@@ -92,6 +92,18 @@ const char *debugstr_variant(const VARIANT *v)
}
}
static
HINSTANCE
ieframe_instance
;
HINSTANCE
get_ieframe_instance
(
void
)
{
static
const
WCHAR
ieframe_dllW
[]
=
{
'i'
,
'e'
,
'f'
,
'r'
,
'a'
,
'm'
,
'e'
,
'.'
,
'd'
,
'l'
,
'l'
,
0
};
if
(
!
ieframe_instance
)
ieframe_instance
=
LoadLibraryW
(
ieframe_dllW
);
return
ieframe_instance
;
}
/*************************************************************************
* SHDOCVW DllMain
*/
...
...
@@ -109,6 +121,8 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad)
unregister_iewindow_class
();
if
(
wb_typeinfo
)
ITypeInfo_Release
(
wb_typeinfo
);
if
(
ieframe_instance
)
FreeLibrary
(
ieframe_instance
);
break
;
}
return
TRUE
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment