× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi John,

> Microsoft document
> http://support.microsoft.com/default.aspx?scid=kb;en-us;283225
> indicates the
> "url.dll,FileProtocolHandler" technique is old-school and
> "shell32.dll,ShellExecute" should be used instead. It appears that
> "ShellExecute" does allow params to be passed, but I'll be darned
> if it will work for me.

As far as I know, you can't call ShellExecute (which is an API) directly via RunDLL. In order to run an API in a DLL via RunDLL, the API has to be specifically designed for the RunDLL command -- and I don't think ShellExecute is so designed. You'll notice that the URL you provided to MSDN actually uses a Java class for ShellExecute rather than trying to call it via RunDLL.

There is a variant of ShellExecute that's designed for RunDLL. It's (aptly named) ShellExec_RunDLL. So you'd code the following in your RPG program (via QCMDEXC or similar):

STRPCCMD PCCMD('rundll32 Shell32,ShellExec_RunDLL "mysheet.xls"')

And, although that's very interesting, it doesn't solve your actual problem. You still can only pass one parameter (the name of the file to open) to the ShellExec_RunDLL function. So I'm not sure that it really helps you in any way to know about it!

However, the "start" command should get the job done. It's uglier because of the extra command prompt window that it opens, but it'll work.

STRPCCMD PCCMD('start excel /r "mysheet.xls"')

I can't think of a better alternative right now, but if I think of one, I'll share it.



johnking@xxxxxxx wrote:
All,

A February thread in this list described how to use 'rundll32.exe' via STRPCCMD
to access PC documents from an RPG application. This works well, but rundll32
only provides one parameter - the file name.

Executing the command: STRPCCMD PCCMD('rundll32 url.dll,FileProtocolHandler
"mysheet.xls"') does indeed call Excel from a green-screen app, but does not
permit passing the /r 'read only' switch that prevents users from altering the
document. We would like to prevent that.

Microsoft document
http://support.microsoft.com/default.aspx?scid=kb;en-us;283225 indicates the
"url.dll,FileProtocolHandler" technique is old-school and
"shell32.dll,ShellExecute" should be used instead. It appears that
"ShellExecute"
does allow params to be passed, but I'll be darned if it will work for me.

Any number of variations of the string:
"STRPCCMD PCCMD('rundll32 shell32.dll,ShellExecute
0,"open","z:\mysheet.xls","/r","",5') " have been tried but they all end up with
a Windows error box "An exception occurred while trying to run
"shell32.dll,ShellExecute...". Am I just having trouble with single- and
double-quotes or is there something fundamentally deeper that I don't understand
about passing params to PC programs?

JK
---- Msg sent via Internet America Webmail - http://www.internetamerica.com/


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.