title: LoadLibrary on OCX file fails in Windows 7 x64
body: <p>I need to open a html help file from within a legacy windows application written in old version of C++ Builder. HtmlHelp is loaded via HtmlHelp.ocx, which I am loading via LoadLibrary. </p>
  
  <p>This has worked fine for years, but it does not work anymore in Windows 7 x64. It might also fail under Windows7 x86, but I don't have any computer with this OS, so I can't try it out at the moment.  </p>
  
  <p>I am loading hhctrl.ocx dynamically as follows:</p>
  
  <pre><code>#define HHPathRegKey "CLSID\\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\\InprocServer32"
  
  bool THTMLHelper::LoadHtmlHelp()
  {
    HKEY HHKey;
    DWORD PathSize = 255;
    char Path[255];
    bool R = false;
  
    if (::RegOpenKeyExA(HKEY_CLASSES_ROOT, HHPathRegKey, 0, KEY_QUERY_VALUE, (void **)&amp;HHKey) == ERROR_SUCCESS)
    {
      if (::RegQueryValueExA(HHKey, "", NULL, NULL, (LPBYTE)Path, &amp;PathSize) == ERROR_SUCCESS)
      {
        //*****************************************
        //LOADING FAILS HERE
        //PATH IS %SystemRoot%\System32\hhctrl.ocx          
        //*****************************************
        HHLibrary = ::LoadLibrary(Path);
        if (HHLibrary != 0)
        {
          __HtmlHelp = (HTML_HELP_PROC) ::GetProcAddress(HHLibrary, "HtmlHelpA");
          R = (__HtmlHelp != NULL);
          if (!R)
          {
            ::FreeLibrary(HHLibrary);
            HHLibrary = 0;
          }
        }
      }
      ::RegCloseKey(HHKey);
    }
    return R;
  }
  </code></pre>
  
  <p>I checked if %SystemRoot%\System32\hhctrl.ocx  exists on the Windows 7 system and it does. </p>
  
  <p>Why does loading it via LoadLibrary fail? How can I work around this problem?</p>
  
  <p><strong>EDIT:</strong> GetLastError says (in German, so I am just translating): "Could not find file." But I debugged the function and the path is "%SystemRoot%\System32\hhctrl.ocx" and the file does exist. </p>
  
  <p>Also, since two answers point in the direction of 64-bit vs 32-bit problems: My application is a 32 bit executable compiled in C++ Builder 5, so it should be a 32 bit process if I'm not mistaken. Or am I wrong to assume that? </p>