[ODBCCP32]

The control panel automatically runs this applet without clicking on it, fix this wrong behaviour.
Patch by Lee Schröder
CORE-8323 #resolve #comment Thanks :)

svn path=/trunk/; revision=63625
This commit is contained in:
Hermès Bélusca-Maïto 2014-06-22 09:33:46 +00:00
parent 73f4d1ff00
commit adc64f21ca

View file

@ -19,36 +19,47 @@ CPlApplet(HWND hwndCpl,
LPARAM lParam1,
LPARAM lParam2)
{
if (ODBCProc == NULL)
{
TCHAR szBuffer[MAX_PATH];
switch (uMsg)
{
case CPL_INIT:
return TRUE;
if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"),
szBuffer,
sizeof(szBuffer) / sizeof(TCHAR)) > 0)
{
hLibrary = LoadLibrary(szBuffer);
if (hLibrary)
{
ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet");
}
}
}
case CPL_DBLCLK:
{
if (ODBCProc == NULL)
{
TCHAR szBuffer[MAX_PATH];
if (ODBCProc)
{
return ODBCProc(hwndCpl, uMsg, lParam1, lParam2);
}
else
{
if(hLibrary)
{
FreeLibrary(hLibrary);
}
if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"),
szBuffer,
sizeof(szBuffer) / sizeof(TCHAR)) > 0)
{
hLibrary = LoadLibrary(szBuffer);
if (hLibrary)
{
ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet");
}
}
}
TerminateProcess(GetCurrentProcess(), -1);
return (LONG)-1;
}
if (ODBCProc)
{
return ODBCProc(hwndCpl, uMsg, lParam1, lParam2);
}
else
{
if (hLibrary)
{
FreeLibrary(hLibrary);
}
TerminateProcess(GetCurrentProcess(), -1);
return (LONG)-1;
}
}
}
return FALSE;
}