00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "resource.h"
00008 #include <initguid.h>
00009 #include "FDMCustIEBtn.h"
00010
00011 #include "FDMCustIEBtn_i.c"
00012 #include "FDMCustButton.h"
00013
00014 CComModule _Module;
00015
00016 BEGIN_OBJECT_MAP(ObjectMap)
00017 OBJECT_ENTRY(CLSID_FDMCustButton, CFDMCustButton)
00018 END_OBJECT_MAP()
00019
00020 extern "C"
00021 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID )
00022 {
00023 if (dwReason == DLL_PROCESS_ATTACH)
00024 {
00025 _Module.Init(ObjectMap, hInstance, &LIBID_FDMCUSTIEBTNLib);
00026 DisableThreadLibraryCalls(hInstance);
00027 }
00028 else if (dwReason == DLL_PROCESS_DETACH)
00029 _Module.Term();
00030 return TRUE;
00031 }
00032
00033 STDAPI DllCanUnloadNow(void)
00034 {
00035 return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
00036 }
00037
00038 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
00039 {
00040 return _Module.GetClassObject(rclsid, riid, ppv);
00041 }
00042
00043 STDAPI DllRegisterServer(void)
00044 {
00045 HKEY key;
00046 char szIco [MAX_PATH];
00047 char szCustomizer [1000];
00048 DWORD dwSize = MAX_PATH;
00049
00050 if (ERROR_SUCCESS != RegOpenKey (HKEY_CURRENT_USER, "Software\\OpenDownloadManager.ORG\\Open Download Manager", &key))
00051 return E_FAIL;
00052 if (ERROR_SUCCESS != RegQueryValueEx (key, "Path", NULL, NULL, (LPBYTE) szIco, &dwSize))
00053 return E_FAIL;
00054 szIco [dwSize] = 0;
00055 if (szIco [dwSize-1] != '\\')
00056 lstrcat (szIco, "\\");
00057 lstrcat (szIco, "fdmcsiebtn.ico");
00058
00059 dwSize = 1000;
00060 if (ERROR_SUCCESS != RegQueryValueEx (key, "Customizer", NULL, NULL, (LPBYTE) szCustomizer, &dwSize))
00061 return E_FAIL;
00062 szCustomizer [dwSize] = 0;
00063
00064 RegCloseKey (key);
00065
00066
00067 HRESULT hr = _Module.RegisterServer(TRUE);
00068 if (FAILED (hr))
00069 return hr;
00070
00071 RegOpenKey (HKEY_CURRENT_USER, "Software\\Microsoft\\Internet Explorer\\Extensions\\{DAC360AF-9FD0-432D-B2F2-ED3220F4CAD9}", &key);
00072 RegSetValueEx (key, "Icon", 0, REG_SZ, (LPBYTE)szIco, lstrlen (szIco));
00073 RegSetValueEx (key, "HotIcon", 0, REG_SZ, (LPBYTE)szIco, lstrlen (szIco));
00074 RegSetValueEx (key, "ButtonText", 0, REG_SZ, (LPBYTE)szCustomizer, lstrlen (szCustomizer));
00075 RegCloseKey (key);
00076
00077 return hr;
00078 }
00079
00080 STDAPI DllUnregisterServer(void)
00081 {
00082 return _Module.UnregisterServer(TRUE);
00083 }
00084