Newsgroup: it.comp.lang.visual-basic
Titolo: Parametri passati ad un altro Programma

Salve gente ... Ho questa necessità ....
Devo chiamare un programma da un'altro programma (e per questo posso usare
la shell) ma al tempo stesso devo passargli un parametro ... La domanda è
come posso fare a sapere dall'interno dell'applicazione lanciata quale era
il parametro ?
Esempio:  shell("pippo.exe parametro")   come faccio a sapere il valore di
parametro ???  .... in C++ era facile ma qui non so a che santo rivolgermi
!!
Grazie a chiunque mi aiuti ...
Ciao a tutti .. Francesco neri


Esiste il comando (funzione?) Command che ti permette di recuperare i
parametri immessi nella riga di comando, dopo il nome dell'eseguibile.
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!

 Esempio:  shell("pippo.exe parametro")   come faccio a
sapere il valore di parametro ???  .... in C++ era facile ma
qui non so a che santo rivolgermi!!
Consulta la guida alla voce Command($).
Un piccolo esempio di come potrebbe essere gestito:
App1.vbp
========
Modulo1.bas
-----------
Option Explicit
Sub Main( _
)
  Call Shell( _
      App.Path & "\" & "Proget1.exe" & Chr$(32) _
    & "DatabaseName=..\db1.mdb;" _
    & "TableName=Tabella1;" _
    , vbNormalFocus)
End Sub
App2.vbp
========
FMain.frm
---------
Option Explicit
Private Const mc_strARG_DBSNAME As String = "DatabaseName"
Private Const mc_strARG_TBLNAME As String = "TableName"
Private m_Dbs             As DAO.Database
Private m_Rst             As DAO.Recordset
Private m_strDatabaseName As String
Private m_strTableName    As String
Private Function GetArgByName( _
  ByVal CmdStr As String _
, ByVal Name As String _
, ByRef Value As String _
) As Boolean
Dim lngPosBegin As Long
Dim lngPosEnd   As Long
  Let Name = Name & "="
  Let lngPosBegin = InStr(1, CmdStr, Name, 1)
  If lngPosBegin Then
    Let lngPosBegin = lngPosBegin + Len(Name)
    Let lngPosEnd = InStr(lngPosBegin, CmdStr, ";", 1)
    If lngPosEnd Then
      Let Value _
          = Mid$( _
            CmdStr, lngPosBegin, lngPosEnd - lngPosBegin)
      Let GetArgByName = True
    End If
  End If
End Function
Private Function GetFullPath( _
  ByRef Path As String _
) As String
  Let GetFullPath = Path
  If Right$(GetFullPath, 1) <> "\" _
    Then Let GetFullPath = GetFullPath & "\"
End Function
Private Function GetSubPath( _
  ByRef Path As String _
) As String
  Let GetSubPath = Path
  If Left$(GetSubPath, 1) = "\" _
    Then Let GetSubPath = Mid$(GetSubPath, 2)
End Function
Private Function GetPathName( _
  ByVal PathName As String _
, Optional ByRef DefDataPath As Variant _
) As String
  If IsMissing(DefDataPath) Then
    If InStr(PathName, "..") Then
      Let GetPathName _
        = GetFullPath(App.Path) _
        & GetSubPath(PathName)
    Else
      Let GetPathName = PathName
    End If
  Else
    Let GetPathName _
      = GetFullPath((DefDataPath)) _
      & GetSubPath(PathName)
  End If
End Function
Private Sub Form_Load( _
)
Dim strSql  As String
  [...]
  Call Show: Call Refresh
  If GetArgByName( _
    Command$, mc_strARG_DBSNAME, m_strDatabaseName) Then
    Let m_strDatabaseName = GetPathName(m_strDatabaseName)
  Else
    ' Ask for DatabaseName...
    'Let m_strDatabaseName = ...
  End If
  If Not GetArgByName( _
    Command$, mc_strARG_TBLNAME, m_strTableName) Then
    ' Ask for TableName...
    'Let m_strTableName = ...
  End If
  Let strSql = "SELECT"
  Let strSql = strSql & " " & "*"
  Let strSql = strSql & " " & "FROM"
  Let strSql = strSql & " " & m_strTableName
  Set m_Dbs = OpenDatabase(m_strDatabaseName)
  Set m_Rst = m_Dbs.OpenRecordset(strSql, dbOpenDynaset)
End Sub
Private Sub Form_Unload( _
  Cancel As Integer _
)
On Local Error Resume Next
  m_Rst.Close: Set m_Rst = Nothing
  m_Dbs.Close: Set m_Dbs = Nothing
End Sub
--
Ciao.
Maurizio