New routine DllEntryPoint for shell.dll. Loads shell32.dll,
since most shell.dll functions call their 32-bit counterparts.
This commit is contained in:
parent
e8ad6fe60a
commit
e020a9a95d
|
@ -64,6 +64,61 @@ static HHOOK SHELL_hHook = 0;
|
|||
static UINT16 uMsgWndCreated = 0;
|
||||
static UINT16 uMsgWndDestroyed = 0;
|
||||
static UINT16 uMsgShellActivate = 0;
|
||||
HINSTANCE16 SHELL_hInstance = 0;
|
||||
HINSTANCE SHELL_hInstance32;
|
||||
static int SHELL_Attach = 0;
|
||||
|
||||
/***********************************************************************
|
||||
* SHELL_DllEntryPoint [SHELL.entry]
|
||||
*
|
||||
* Initialization code for shell.dll. Automatically loads the
|
||||
* 32-bit shell32.dll to allow thunking up to 32-bit code.
|
||||
*
|
||||
* RETURNS:
|
||||
*/
|
||||
BOOL WINAPI SHELL_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst,
|
||||
WORD ds, WORD HeapSize, DWORD res1, WORD res2)
|
||||
{
|
||||
TRACE_(shell)("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n",
|
||||
Reason, hInst, ds, HeapSize, res1, res2);
|
||||
|
||||
switch(Reason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
SHELL_Attach++;
|
||||
if (SHELL_hInstance)
|
||||
{
|
||||
ERR_(shell)("shell.dll instantiated twice!\n");
|
||||
/*
|
||||
* We should return FALSE here, but that will break
|
||||
* most apps that use CreateProcess because we do
|
||||
* not yet support seperate address-spaces.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
SHELL_hInstance = hInst;
|
||||
if(!SHELL_hInstance32)
|
||||
{
|
||||
if(!(SHELL_hInstance32 = LoadLibraryA("shell32.dll")))
|
||||
{
|
||||
ERR_(shell)("Could not load sibling shell32.dll\n");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
if(!--SHELL_Attach)
|
||||
{
|
||||
SHELL_hInstance = 0;
|
||||
if(SHELL_hInstance32)
|
||||
FreeLibrary(SHELL_hInstance32);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* DragAcceptFiles32 [SHELL32.54]
|
||||
|
|
|
@ -27,7 +27,7 @@ type win16
|
|||
|
||||
#100 4 0550 HERETHARBETYGARS exported, shared data
|
||||
#101 8 010e FINDEXEDLGPROC exported, shared data
|
||||
#101 DLLENTRYPOINT #win95 SHELL.DLL
|
||||
101 pascal DllEntryPoint(long word word word long word) SHELL_DllEntryPoint
|
||||
|
||||
102 pascal16 RegisterShellHook(word word) RegisterShellHook16
|
||||
103 pascal ShellHookProc(word word long) ShellHookProc16
|
||||
|
|
Loading…
Reference in New Issue