You may have to give a fully qualified path to your "gpg" app.
Idle_Mind
Main Topics
Browse All TopicsHello all!
I want to run this DOS command line using VB.
gpg -o c:\gnupg\outsourceone_rsmd
bc ca\outsourceone_rsmd_mr_el
I used to manually run it in DOS Commmand. I want to run this from my VB program but I don't have any clue.
Your help is very appreciate
Thank you in advance.
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
hey try this, it creates a batch file with your command in it when you press the cmdcreate and when you press the cmdrun it executes the batch file and deletes the batch file afterwards, i hope this helps
Private Sub CmdCreate_Click()
On Error Resume Next
Set fso = CreateObject("Scripting.Fi
On Error Resume Next
Set a = fso.CreateTextFile("c:\myb
a.WriteLine ("gpg -o c:\gnupg\outsourceone_rsmd
End Sub
Private Sub CmdRun_Click()
Dim aa
aa = Shell("c:\mybat.bat", vbNormalFocus)
MsgBox "batch file executed"
Kill ("c:\mybat.bat")
End Sub
Just use the following program
Public Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Declare Function CreateProcessA Lib "Kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Public Sub StartProcess(CommandLine As String, Optional Hide As Boolean = False)
Const STARTF_USESHOWWINDOW As Long = &H1
Const SW_HIDE As Long = 0
Dim proc As PROCESS_INFORMATION
Dim Start As STARTUPINFO
'Initialize the STARTUPINFO structure:
Start.cb = Len(Start)
If Hide Then
Start.dwFlags = STARTF_USESHOWWINDOW
Start.wShowWindow = SW_HIDE
End If
'Start the shelled application:
CreateProcessA 0&, CommandLine, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, Start, proc
End Sub
Public Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Declare Function CreateProcessA Lib "Kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Public Sub StartProcess(CommandLine As String, Optional Hide As Boolean = False)
Const STARTF_USESHOWWINDOW As Long = &H1
Const SW_HIDE As Long = 0
Dim proc As PROCESS_INFORMATION
Dim Start As STARTUPINFO
'Initialize the STARTUPINFO structure:
Start.cb = Len(Start)
If Hide Then
Start.dwFlags = STARTF_USESHOWWINDOW
Start.wShowWindow = SW_HIDE
End If
'Start the shelled application:
CreateProcessA 0&, CommandLine, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, Start, proc
End Sub
Private Sub Command1_Click()
call StartProcess "cmd"
End Sub
--laser--
If your going to use Shell(),
Private Sub CmdRun_Click()
Dim aa
aa = Shell("c:\mybat.bat", vbNormalFocus)
MsgBox "batch file executed"
Kill ("c:\mybat.bat")
End Sub
why bother making the batch file? This the same thing in one line:
Private Sub Command1_Click()
Dim retval As Double
retval = Shell("gpg -o c:\gnupg\outsourceone_rsmd
"bc ca\outsourceone_rsmd_mr_el
End Sub
Idle_Mind
Hello laser!
I try to execute the .bat file using Shell function as your tell me to do. something like:
Set a = fso.CreateTextFile("C:\myb
a.WriteLine ("cd c:\gnupg")
a.WriteLine ("del *.gpg")
a.WriteLine ("gpg -o c:\gnupg\" & Format(Now, "MMDDYY") & "MBI.mbi.gpg -u FC1459C7 -r A01183A7 -e ""f:\servcent\vendor\MBI\"
aa = Shell("c:\mybat.bat", vbNormalFocus)
I got the error on last line "Invalid procedure call or argument".
My conerning is Shell function only execute the .exe file only?
Please help
Thanks!
Henry
You are missing the quote on the end of your command line.
a.WriteLine ("gpg -o c:\gnupg\" & Format(Now, "MMDDYY") & "MBI.mbi.gpg -u FC1459C7 -r A01183A7 -e ""f:\servcent\vendor\MBI\"
should be
a.WriteLine ("gpg -o c:\gnupg\" & Format(Now, "MMDDYY") & "MBI.mbi.gpg -u FC1459C7 -r A01183A7 -e ""f:\servcent\vendor\MBI\"
Try that and see if it makes a difference.
Idle_Mind
Here is how to do it using short file names without a batch file. It uses the GetShortPathName() API.
Idle_Mind
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Sub Command1_Click()
Dim files As New Collection
Dim file As Variant
Dim path As String, pattern As String
Dim retval As Double
Dim cmd As String
Dim file1 As String
Dim file2 As String
' Delete all .gpg files in c:\qgnupg\
path = "c:\gnupg\"
pattern = "*.gpg"
Set files = getFilesInDirectory(path, pattern)
For Each file In files
Kill path & file
Next file
' change directory and execute command line using short file names
ChDir path
file1 = GetShortPath("c:\gnupg\" & Format(Now, "MMDDYY") & "MBI.mbi.gpg")
file2 = GetShortPath("f:\servcent\
cmd = "gpg -o " & file1 & " -u FC1459C7 -r A01183A7 -e """ & file2 & """"
retval = Shell(cmd, vbNormalFocus)
End Sub
Private Function getFilesInDirectory(target
Dim fileCollection As New Collection
Dim curFile As String
On Error GoTo noSuchDirectory
ChDir targetDirectory
On Error GoTo 0
curFile = Dir(filePattern)
Do Until curFile = ""
fileCollection.Add curFile, curFile
curFile = Dir()
Loop
Set getFilesInDirectory = fileCollection
Exit Function
noSuchDirectory:
MsgBox "Invalid Directory: " & targetDirectory
Set getFilesInDirectory = fileCollection
End Function
Private Function GetShortPath(longPath As String) As String
Dim chars As Long, shortPath As String
shortPath = String$(Len(longPath), 0)
chars = GetShortPathName(longPath,
GetShortPath = Left$(shortPath, chars)
End Function
You could write a batch file that would wite a batch file that would write a batch file that would execute the program. Then your program could execute the first batch file which would run the second batch file which would write the third batch file which could (and here's the beatuy of the scheme) then *run itself*. That would be pretty cool. Do I get the points?
I Am running a VB Script that call a batch file like this
run = WshShell.Run ("\\sh-nav\vplogon\vplogon
But when the Batch is finished i have a problem the "MS Dos window" is still on the user desktop and he have to close it Manualy ..
How can i set that the Window will be closed automaticly ? like (Close on exit flag)
Business Accounts
Answer for Membership
by: Idle_MindPosted on 2003-12-02 at 15:45:17ID: 9862854
Here is one method:
_mr_elig.8 34c.gpg -r A01183A7 -e ""f:\servcent\vendor\" & _ ig.834c""" , vbNormalFocus)
Private Sub Command1_Click()
Dim retval As Double
retval = Shell("gpg -o c:\gnupg\outsourceone_rsmd
"bc ca\outsourceone_rsmd_mr_el
End Sub
Idle_Mind