Hi,
I have code to open program that work(on attach files).
My problem is when I change code to open another file it error.
Ex:
Right code:
Call Shell(li & "\" & "Program Files\Microsoft Office\Office10\POWERPNT.EXE", 1)
Error code:
Call Shell(li & "\" & "aa.pdf", 1)
Error say:"Invalid procedure call or argument"
I have file on my computer.
Can anyone help me with this problem please?
Thanks!
seyha

Recommended Answers

All 6 Replies

Call statement Transfers control to a Sub procedure, Function procedure, or dynamic-link library (DLL)procedure.

I believe that you cannot use "CALL" to call a file which is not executable.
same goes with SHELL...

Call Shell(AppName, 1) Where AppName contains the path of the Executable file.

try it with any other directory and try calling an executable.. it will work.

If you try calling a .txt or .bmp, it will give you the same error message...

So what can I do with the problem? Can you make the file for me please?
Thanks! I hope will here from you soon.
seyha

Call statement Transfers control to a Sub procedure, Function procedure, or dynamic-link library (DLL)procedure.

I believe that you cannot use "CALL" to call a file which is not executable.
same goes with SHELL...

Call Shell(AppName, 1) Where AppName contains the path of the Executable file.

try it with any other directory and try calling an executable.. it will work.

If you try calling a .txt or .bmp, it will give you the same error message...

So what can I do with the problem? Can you make the file for me please?
Thanks! I hope will here from you soon.
seyha

Sure, I'll give the code in the evening when i come back from office.... Leaving for office now :-)

Try using commondialog controls with FSO (file system objects....)

the problem is you are trying to launch a PDF file, not an EXE file. If you want to open the pdf file, you'll have to use the path to adobe. Something like "c:\program files\adobe\adobe.exe aa.pdf" or something along those lines. the Shell function doesn't decipher extentions. It runs an application. Plain and simple. For a POSSIBLE solution to launching a program based on the extention (in cahoots with the registries, HKCR) you might want to look at the API call "shellexecute." That one does wonders ;)

the problem is you are trying to launch a PDF file, not an EXE file. If you want to open the pdf file, you'll have to use the path to adobe. Something like "c:\program files\adobe\adobe.exe aa.pdf" or something along those lines. the Shell function doesn't decipher extentions. It runs an application. Plain and simple. For a POSSIBLE solution to launching a program based on the extention (in cahoots with the registries, HKCR) you might want to look at the API call "shellexecute." That one does wonders ;)

You are right that it runs only applications. Even if you mention the filename with the path and the corresponding exe ("c:\program files\adobe\adobe.exe aa.pdf") or as a matter of fact ("c:\windows\notepad.exe aaa.txt") it still won't run... that's what i am trying to imply. working on it right now. should come up with the code ASAP :-)

the way to go is the shellexecute api.... it launches the default application for the specified file. It's how a lot of VB app's launch the default web browser to visit a specific URL (or whatever the case may be). ShellExecute is powerful, it can run an EXE or figure out which program to call for a specific extention!

thread reference (possible answer): http://www.daniweb.com/techtalkforums/thread18470.html

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.