Did I miss something? I'm running Windows 2000. Yes I know it's
old but it's what I've got and it's NOT GONNA change any time
soon.
But get a message on trying to start FF v3
The procedure entry point SHShellFolderView_Message could
not be located in DLL SHELL32.DLL
I did not notice any version restrictions on any screen.
Sorry about that; "Requires Windows XP or higher". ( http://www.planetsquires.com/download.htm )
Hi Paul,
I have had a few people email me about that error message when they start FF3 on Win2K. If I knew what part of FF3 calls that function then maybe I could change things.
I was thinking... I use Jose's new include files when compiling FF3. I expect that those includes must make a reference to a Declare Function for that SHShellFolderView_Message function and then it can't be found in the Shell32.dll that ships with Win2K.
IIRC, the Microsoft site says that SHShellFolderView_Message is compatible on Win2K systems but you need Shell32.dll version 5 or higher? I don't have the link handy....
Quote from: Paul Elliott on November 10, 2009, 11:41:48 AM
Did I miss something? I'm running Windows 2000. Yes I know it's
old but it's what I've got and it's NOT GONNA change any time
soon.
I honestly hope that's not the case. Windows 2000 reaches its end-of-life on July 13, 2010. That means that after that date, Microsoft will no longer be releasing any kind of security updates for the platform. If that's your development system and its what you use to connect to the Internet, that's decidedly a Bad Thing(tm). Not to mention that a lot of software companies also cue off of Microsoft's platform lifecycle, so they'll stop providing updates or technical support for the operating system as well.
Windows 2000 has been around for a long time. It deserves a proper burial next to its good friend, Windows NT 4.0.
Edit: As to this specific issue, are you running the latest version of IE? I think that's 5.5 for Win2K. Even if you're using another browser, try updating to the latest version of IE that you can get, since it will update components like shell32.dll.
Paul,
I'll go poke around MS site.
Mike,
Yes, I know it's old and not a lot of updates/fixes in its future.
But at the moment, no job/ not much money left so there's
very little likelyhood that I get a new computer to run the newer
OS any time soon. Right now, I'm just programming for fun and
it works and is stable & bug/spyware free. I've got IE v6 with
the latest patches. Had this happen to a different piece of
software about a month ago. Their problem was fixed by totally
uninstalling older version, rebooting, running registry cleaners to
remove all references to their old version, rebooting then doing
the new install. But it doesn't sound like that would help here.
Oh well. Off to the wonderful site of MS to see what I can find.
Quote
I was thinking... I use Jose's new include files when compiling FF3. I expect that those includes must make a reference to a Declare Function for that SHShellFolderView_Message function and then it can't be found in the Shell32.dll that ships with Win2K.
Are you using shlobj.inc? It is the only file where SHShellFolderView_Message is referenced.
I just checked the code generation for FF3. If the FireFly Function "FF_BrowseForFolder" is used in the project then a reference to "shlobj.inc" is automatically added to the list of includes. Of course, FF3 itself uses FF_BrowseForFolder so that is why the shlobj.inc is getting included.
If shlobj.inc is commented out then I get a compile error for misisng equates and functions, etc...
Here is what would have to be added to allow any FF3 application that uses the FF_BrowseForFolder function to be able to compile and run on Win2K. (If I didn't include the shlobj.inc)
It is easier and more compatible in the long run to just include the shlobj.inc file - supporting Win2K is a bit of a stretch 10 years later.
%BFFM_INITIALIZED = 1
%BFFM_SELCHANGED = 2
%BFFM_ENABLEOK = %WM_USER + 101
%BFFM_SETSELECTION = %WM_USER + 102
%CSIDL_PERSONAL = &H0005& ' My Documents
TYPE SHITEMID
cb As Word ' USHORT cb
abID (0) As Byte ' BYTE abID[ 1 ]
End Type
Type ITEMIDLIST
mkid As SHITEMID ' SHITEMID mkid
End Type
Type BROWSEINFO
hWndOwner As Dword ' HWND hwndOwner
pIDLRoot As ITEMIDLIST Ptr ' LPCITEMIDLIST pidlRoot
pszDisplayName As Asciiz Ptr ' LPSTR pszDisplayName // Return display name of item selected.
lpszTitle As Asciiz Ptr ' LPCSTR lpszTitle // text to go in the banner over the tree.
ulFlags As Dword ' UINT ulFlags // Flags that control the return stuff
lpfnCallback As Dword ' BFFCALLBACK lpfn
lParam As Long ' LPARAM lParam // extra info that's passed back in callbacks
iImage As Long ' int iImage // output var: where to return the Image index.
End Type
Declare Function SHBrowseForFolder Lib "SHELL32.DLL" Alias "SHBrowseForFolderA" ( _
ByRef lpbi As BROWSEINFO _ ' __in_out LPBROWSEINFO lpbi
) As Dword
DECLARE FUNCTION SHGetPathFromIDList LIB "SHELL32.DLL" ALIAS "SHGetPathFromIDListA" ( _
ByVal pidl As Dword _ ' __in PCIDLIST_ABSOLUTE pidl
, ByRef pszPath As Asciiz _ ' __out LPSTR pszPath
) As Long
Actually, this fix may be easier than I thought.
I will put together a solution tonight.
If anyone out there reading this is using Win2K and would like to try the "solution" then please email me at support@planetsquires.com so that I can send it to you.
Replacing the ShellFolderView_SetItemPos function with a macro should also work, since macros don't get included unless you reference it in your code:
MACRO FUNCTION ShellFolderView_SetItemPos (hwnd, pidl, x, y)
MACROTEMP sip
LOCAL sip AS SFV_SETITEMPOS
sip.pidl = pidl
sip.pt.x = x
sip.pt.y = y
END MACRO = SHShellFolderView_Message(hwnd, %SFVM_SETITEMPOS, VARPTR(sip))
If it works, I will modify shlobj.inc.
Which ServicePack are you running on Win2000?
I have prepared a new FireFly3.exe that hopefully will now work on Win2K. I have emailed it to the four customers that indicated that they use Win2K. If anyone else needs it then please let me know.
Fix will be in v3.03