SHGetFolderPathW ?

Help
2005-12-19
2013-04-29
  • Heiko Herold
    Heiko Herold
    2005-12-19

    Windows NT 4.0sp6a (italian), IE6.0sp1+hotfixes.

    At start BookmarkBridge displays a message
    Cannot find the entry point SHGetFolderPathW in dinamyc library SHELL32.DLL (freely translated from the italian error msg).

    Any ideas ?

     
    • Ken Schenke
      Ken Schenke
      2005-12-21

      Yeah, with the help of a Windows 98 user I have identified the problem and will be releasing a fixed version soon.  It occurs on any Windows older than Windows 2000.

       
      • Heiko Herold
        Heiko Herold
        2005-12-21

        Wonderfull!
        Could you post the technical details ?
        I suppose it is something relatively simple like using some call of a dll instead of another, or some different invocation parameters ?

         
    • Ken Schenke
      Ken Schenke
      2005-12-22

      Sure thing...  I don't how technical you want it, so I'll just describe all the details.

      BookmarkBridge calls SHGetFolderPathW to locate the user's Application Data directory and Internet Explorer's Favorites folder.  Those folders are in different places on just about every version of Windows.  The "W" means wide-character, or Unicode.  This allows BMB to support non-ASCII characters typically used in non-english languages.

      Windows NT was written entirely in Unicode so it has excellent support for non-ASCII characters.  Windows 9x was not.  The SHGetSpecialFolderPathA function was to be called on Windows 9x systems and SHGetSpecialFolderPathW was to be called on NT/2000/XP systems.  To address the difference Microsoft came up with the SHGetFolderPathW function to be used on non-Unicode systems in place of SHGetSpecialFolderPathW.

      Starting with Windows 2000, Microsoft included SHGetFolderPathW in shell32.dll but older verions of Windows have the function in shfolder.dll that was shipped with Internet Explorer 4.0.  shfolder.dll is also included with newer versions of Windows but is only a stub that forwards the call to shell32.dll.  If BMB were written only to work on Windows 2000/XP then the linkage to shell32.dll would have been fine.  I use XP myself so my compiler, MinGW, linked directly to shell32.dll.  What I had to do was put shfolder.lib first in the linker libraries to override the linkage to shell32.

      I installed Windows 98 in VMWare on my system and discovered another bug that occurs only on Windows older that 2000.

      - Ken

       
      • Heiko Herold
        Heiko Herold
        2005-12-22

        This info is perfect.
        Thanks!

         
    • FrankCon
      FrankCon
      2006-03-28

      Hi Ken,

      I really love your program, because I do a lot of website dissections with FF, but for other I have to use IE.

      There is one problem: I have the same problem as Heiko. When opening the program, I first get the message "A device that is connected to the system doesn't work." Whatever that device may be, but I don't see what that has to do with synchronizing FF and IE bookmarks.

      After having clicked OK, I get the message that Bookmark.exe is coupled with missing export SHELL32.DLL:SHGetFolderPathW.

      I have a W98 computer that I want to keep that way, to check performance and appearance of websites in IE6 when IE7 comes out.

      Any news on the fixed version (later than 0.75)? Thanx in advance.

      Frank Conijn
      Amsterdam
      The Netherlands