Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Select multiple files in VFP

Status
Not open for further replies.

Gerrit Broekhuis

Programmer
Aug 16, 2004
316
NL
Hi,

I’m looking for a (dll based) form or control for selecting multiple files, for example to zip them one by one into a zipfile.

I’ve been using Common Dialog (COMDLG32) so far, but this is giving an error when I select more than approx. 50 files. I don’t know how to make this reliable when selecting more files.

So I’m wondering what others use to select multiple (or a lot of) files for further action. I need a control that allows changing directories, drives, etc..

Regards,

Gerrit

PS: I need something that doesn’t change the selected filenames to lowercase.

 
Hi Chriss,

Just installed InstallShield Express. I was able to add the MSM files, but I'm sure my config is not right. It compiles to an .exe file. Could I run the setup.exe "silent"? I don't want it to be visible. I left out the vfp runtime files and the MSXML 4.0 files that are mandatory according to the manual. I don't want to install these runtimes again and again, and my InnoSetup already takes care of this. Is this OK?

Where should I add the "merge modules" on the client's system? In the \program files\myapplication directory? In common files? How do I make a difference between 32-bit and 64-bit OS, as they have different file locations, using a single setup.exe file? Is InstallShield Express 5.0 aware of these differences?

I got stuck once again...

Regards, Grrit
 
Merge modules are prepared installations, they don't get copied to a client, they include things like DLLs and license keys that get somewhere, into the registry for example. That's why you don't get around making an installer that also installs - more like executes - the merge modules. Merge modules are not executables in themselves, though and just putting them anywhere doesn't do anything.

That there is a system folder for merge modules only plays a role as it is a repository of which you can pick from in installshield projects.

How to build an MSI? Mybe this will help:


Chriss
 
Hi Chriss,

I will not be able to do a lot in the coming days or next week, as I will be in the UK for a few days, but I will try to get this working when I have the time to do so.

Your latest link refers to later versions of InstallShield, where I only have version 5 from the old dark ages.

I will post back here when I have (no) results.

Regards, Gerrit
 
Hi,

I've created an InstallShield Express installation for the MSM files as mentioned above.
I ran the installer on the 32-bit Windows 10 PC. According to the installer the installation was successful.

Nevertheless I still get the nasty 1426 error (OLE error code 0x80040112: Class is not licensed).

I'm out of options. I cannot release my new version and I definitely don't want to have two installation processes to maintain for my application. That is a no go area.
However I cannot keep my customers waiting too long for the awaited update (it should be finished at or around the 1st of December).

What are my options to get common dialogs running on a Windows 10 32-bit machine?

Regards, Gerrit
 
There's also a step in an ISE setup project to register OCXes. This might be necessary, though I thought the merge modules would not just put files into the right places, but also register them.

On the PC you tried your ISE install, can you search the registry for Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}?
registrybranch_sgsopj.png


This is the key export (edited to not violate copyrights):
Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}]
@="Microsoft Common Dialog Control, version 6.0 (SP6)"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Control]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{0DE...redacted...352}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{0DE...redacted...352}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{0DE...redacted...352}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{40F...redacted...502}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{40F...redacted...502}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Implemented Categories\{7DD...redacted...2C4}]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\InprocServer32]
@="C:\\WINDOWS\\SysWow64\\comdlg32.ocx"
"ThreadingModel"="Apartment"
"InprocServer32"=...redacted...

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\MiscStatus]
@="0"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\MiscStatus\1]
@="...redacted..."

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\ProgID]
@="MSComDlg.CommonDialog.1"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Programmable]

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\ToolboxBitmap32]
@="C:\\WINDOWS\\SysWow64\\comdlg32.ocx, 1"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\TypeLib]
@="{F9043C88-F6F2-101A-A3C9-08002B2F49FB}"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\Version]
@="1.2"

[HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB}\VersionIndependentProgID]
@="MSComDlg.CommonDialog"

On your dev PC you should have all this, as VFP installs it to enable development with the redistributable controls.

Chriss
 
As you can see it's about the comdlg32.ocx, what merge modules did you provide by your setup?
COMDLG32.MSM should be the most relevant from that registry inspection.

By the way, as I mentioned the list of MSCOMCT2.MSM,MSCOMCTL.MSM, and MSCOMM32.MSM, I was pretty sure one of them had commdialogs and anotherone had something COM Port relevant.
Now (11/28 21:57 UTC) I'm pretty sure it's COMDLG32.MSM, but the API call is doable, though it means a lot more API declarations and making sure you allocate and deallocate memory without causing a leak, besides the harder way to get the informations into a struct. But all of that is in the sample code, fortunately.

Anyway, to stay with the easier OCX properties perhaps also give it a try to modify your ISE project to install that COMDLG32.MSM, instead of all the others. And another idea would be to install all merge modules mentioned by redist.txt, to have the setup for all redistributable controls, including Rich Text, Slider, Treeview and some more... If you'd provide it, I guess a lot of VFP programmers, who're also not happy to create ISE setup projects would take it to get that part off their shoulders, as long as it's only about those MS controls.

There are of course a bunch of OCX providers also specialized on documenting for VFP and their OCXes usually come with redistributable setups instead of merge modules.

Chriss
 
On a pure 32bit system the reg key name would differ about the WOW6432NODE, not sure how exactly, but searching for the CLSID GUID {F9043C85-F6F2-101A-A3C9-08002B2F49FB} should get you to all relevant places in the registry.

Chriss
 
Hi Chriss,

I will check on all this tomorrow, when I have access to the W10 32-bit pc.

Regards, Gerrit

P.S. The Github link doesn’t work for me: “The 'VFPX/Win32API' repository doesn't contain the 'sampl' path in 'master'.”
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top