Avatar billede neeo Nybegynder
08. august 2006 - 12:55 Der er 18 kommentarer og
1 løsning

send parameter med shell kommando

Hey...

er der nogen der kan kommandoen til at sende 2 parameter med en shell komando ?

min kode til at starte min exe fil....
RetVal = Shell("c:test.exe")
men jeg skal sende 2 værdier med til test.exe ? hvordan er det nu syntaksen ser ud  ?
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:01 #1
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Private Sub Command1_Click()
ShellExecute hwnd, "open", "Filnavn.exe", "", "", vbNormalFocus
' Shellexecute hwnd , "command" , file , "parameters" , "directory" , showcmd
' command:
' open, print, explore
End Sub


Brug den istedet :)
Avatar billede neeo Nybegynder
08. august 2006 - 13:03 #2
hvorfor ?
Avatar billede neeo Nybegynder
08. august 2006 - 13:04 #3
Det er rimilige mange erklæringer og er det nødvendigt ?
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:05 #4
er flere muligheder, du kan sætte op: Hvilken fil, workdirectory, hvordan den skal vises osv, om den skal åbne filen, printe den, explore en mappe. men det må du selvfølgelig selv om :) men det er den "de fleste" bruger
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:06 #5
rimlig mange? det er kun 1 linie
Avatar billede neeo Nybegynder
08. august 2006 - 13:06 #6
jeg har
dim user
dim account

RetVal = Shell("c:test.exe","user","account")
det her viker bare ikke ?
hvad gøre jeg galt ?
Avatar billede neeo Nybegynder
08. august 2006 - 13:07 #7
jeg har
dim user
dim account

user ="dasd"
account ="asdasdg"

RetVal = Shell("c:test.exe","user","account")
det her viker bare ikke ?
hvad gøre jeg galt ?
Avatar billede neeo Nybegynder
08. august 2006 - 13:07 #8
programmet skal bare ekseveres ikke meget andet ...
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:08 #9
du kan læse lidt om den her hvis det er :)
http://vb-helper.com/howto_shellexecute.html
Avatar billede neeo Nybegynder
08. august 2006 - 13:12 #10
kan ikke rigtige finde noget der kan stykkes sammen med
RetVal = Shell("c:test.exe","user","account") for at få den til at virke
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:14 #11
Retval = Shell("C:\test.exe" & " " & "user" & " " & "account")

?

Vil stadig syntes du skal bruge shellexecute dog, men må du selv om :)
Avatar billede mcgoat Nybegynder
08. august 2006 - 13:22 #12
er bare at sætte:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

oppe i dine declares i toppen..

og så kalde denne linie:

ShellExecute hwnd, "open", "C:\test.exe", "dine parametre", "", vbNormalFocus
Avatar billede neeo Nybegynder
08. august 2006 - 13:31 #13
Kommentar: mcgoat
08/08-2006 13:14:43

den sender ikke parameterne med :(
Avatar billede kabbak Professor
08. august 2006 - 13:42 #14
dim user
dim account

user ="dasd"
account ="asdasdg

Retval = Shell("C:\test.exe " & user & " " & account)
Avatar billede neeo Nybegynder
08. august 2006 - 13:49 #15
exe filen bliver åbnet men den meddeller at ingen data modtaget..... :(
Avatar billede kabbak Professor
08. august 2006 - 14:36 #16
Hvordan fanger du parameterne, denne er fra VB6

Function GetCommandLine(Optional MaxArgs)
  'Declare variables.
  Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
  'See if MaxArgs was provided.
  If IsMissing(MaxArgs) Then MaxArgs = 10
  'Make array of the correct size.
  ReDim ArgArray(MaxArgs)
  NumArgs = 0: InArg = False
  'Get command line arguments.
  CmdLine = Command()
  CmdLnLen = Len(CmdLine)
  'Go thru command line one character
  'at a time.
  For I = 1 To CmdLnLen
      C = Mid(CmdLine, I, 1)
      'Test for space or tab.
      If (C <> " " And C <> vbTab) Then
        'Neither space nor tab.
        'Test if already in argument.
        If Not InArg Then
        'New argument begins.
        'Test for too many arguments.
            If NumArgs = MaxArgs Then Exit For
            NumArgs = NumArgs + 1
            InArg = True
        End If
        'Concatenate character to current argument.
        ArgArray(NumArgs) = ArgArray(NumArgs) & C
      Else
        'Found a space or tab.
        'Set InArg flag to False.
        InArg = False
      End If
  Next I
  'Resize array just enough to hold arguments.
  ReDim Preserve ArgArray(NumArgs)
  'Return Array in Function name.
  GetCommandLine = ArgArray()
End Function

Private Sub Form_Load()
Dim O As Variant
O = GetCommandLine(2)
Text1.Text = O(1)' her er den første efter filnavnet
Text2.Text = O(2)' her er den anden efter filnavnet
End Sub
Avatar billede neeo Nybegynder
22. august 2006 - 10:57 #17
mcgoat og kabak kan i ikke smide svar ?
Avatar billede kabbak Professor
22. august 2006 - 12:08 #18
Et svar;-))

Fik du det til at virke ??
Avatar billede neeo Nybegynder
30. august 2006 - 14:44 #19
jep takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester