Newsgroup: it.comp.lang.visual-basic
Titolo: Command() per Apri con...

Ciao.
Come faccio a passare al mio eseguibile il nome del file che ho selezionato
e che è associato al mio exe???

 e che č associato al mio exe???
io ci ho provato in molti modi, ma nessuno soddisfacente... se lo
trovi fammelo sapere!
per evitare questa gatta da pelare, 
puoi provare a dare il file a un file di instradamento tipo batch, che
scrive il nome del file su un file temporaneo, e poi il tuo EXE
controlla al load se c'č o meno ( a parte il fatto che č piů lento,
cosě perde le informazioni di nomi lunghi)
puoi provare a fare una cosa analoga con un altro prog per es in C o
simili, che accettano stringhe di parametro all'esecuzione
puoi provare a stabilire una Comunicazione DDE tra il Sistema e il tuo
exe, e io inesperto ancora non cisono riuscito..
Fammi sapere una soluzione effettiva..non mi va di imparare C apposta!
:-)

 e che è associato al mio exe???
mmm... qualcosa mi sfugge, se il tipo di file è già associato al tuo
programma basta  un doppio click per avviare il tuo prog. Il programma
leggerà la stringa che è stata così passata, con la funzione command.
Se invece intendi aggiungere delle voci di menu attivabili con il tasto dx
su explorer, allora devi aggiungere delle voci nel registro di sistema.Se mi
spieghi meglio quello che vuoi fare forse posso aiutarti.
Ciao
g.c.

Giovanni, il problema non č cosě semplice... : )
Il fatto č che quando clicco (Ti ricordo che l'exe l'ho fatto io...) non
riesco a prelevare il nome del file cliccato...

 non riesco a prelevare il nome del file cliccato...
    - il tipo di file è registrato correttamente? (avvia la tua applicazione
se lo clicchi 2 volte?)
    - Hai gestito correttamente la stringa di comando con la funzione
command$ nella sub main o nell' evento Form_load della form di avvio della
tua applicazione?
ciao.

Allora...
Sul desktop ho un file che voglio gestire con la mia applicazione...
L'ho registrato da Windows, non da API in VB...
Quando clicco (Su questo file...  : )...) mi si apre la mia applicazione, ma
non riesco a passare all'exe il nome del file in questione...
Saresti cosě' gentile da spiegarmi passo passo come fare? Ho provato la
stringa command$ ma non so che farmene...
Help...   : )

 Help...   : )
Se hai fatto correttamente quello che ti ho descritto sopra,  il tuo exe
verrà eseguito e, nell' evento Form_load del form di avvio del tuo prog (o
nella sub Main), puoi leggere il nome del file cliccato e quindi passarlo
alla tua normale funzione/sub di lettura del file.
Spero di essere stato di aiuto.
Saluti
G.C.


Prova cosě:
Private Sub Form_Load()
    Associate App.Path & "\mioSW.exe", ".miaest"
    If ApriFile <> "" Then 'Apri il file con percorso ApriFile
End Sub
e in un modulo inserisci:
Option Explicit
'*****************************************associate
Private Declare Function RegCreateKey& Lib "advapi32.dll" _
Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)
Private Declare Function RegSetValue& Lib "advapi32.dll" Alias
"RegSetValueA" _
(ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal
dwLength&)
' Return codes from Registration functions.
Private Const ERROR_SUCCESS = 0&
Private Const ERROR_BADDB = 1&
Private Const ERROR_BADKEY = 2&
Private Const ERROR_CANTOPEN = 3&
Private Const ERROR_CANTREAD = 4&
Private Const ERROR_CANTWRITE = 5&
Private Const ERROR_OUTOFMEMORY = 6&
Private Const ERROR_INVALID_PARAMETER = 7&
Private Const ERROR_ACCESS_DENIED = 8&
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const MAX_PATH = 256&
Private Const REG_SZ = 1
'************************************************
Public Function Associate(ByVal apPath As String, ByVal Ext As String) As
Boolean
'Holds Key Name in registry.
    Dim sKeyName As String
'Holds Key Value in registry.
    Dim sKeyValue As String
'Holds Error status If any from API calls.
    Dim ret&
'Holds created key handle from RegCreateKey.
    Dim lphKey&
    Dim apTitle As String
    apTitle = ParseName(apPath)
    If InStr(Ext, ".") = 0 Then Ext = "." & Ext
'register .ext files as belonging to app
    sKeyName = Ext
    sKeyValue = apTitle
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    If ret& <> 0 Then GoTo AssocFailed
    ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
    If ret& <> 0 Then GoTo AssocFailed
'set open command to path and filename
    sKeyName = apTitle
    sKeyValue = apPath & " %1"
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    If ret& <> 0 Then GoTo AssocFailed
    ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue,
MAX_PATH)
    If ret& <> 0 Then GoTo AssocFailed
'register app icon with .ext files
    sKeyValue = apPath
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    If ret& <> 0 Then GoTo AssocFailed
    ret& = RegSetValue&(lphKey&, "DefaultIcon", REG_SZ, sKeyValue,
MAX_PATH)
    If ret& <> 0 Then GoTo AssocFailed
AssocFailed:
  Associate = False
End Function
Public Function ParseName(ByVal sPath As String) As String
  Dim strX As String
  Dim intX As Integer
  intX = InStrRev(sPath, "\")
  strX = Trim(Right(sPath, Len(sPath) - intX))
  If Right(strX, 1) = Chr(0) Then
    ParseName = Left(strX, Len(strX) - 1)
  Else
    ParseName = strX
  End If
End Function
'-------determina se il programma va aperto in maniera normale
'-------o se deve aprire il file nel qual caso restituisce il percorso
Public Function ApriFile() As String
Dim Percorso As String
    'Se mi viene passato il comando dalla ShellExecute di aprire il file
    If Command = "" Then
        'Apro normalmente il programma
        ApriFile = ""
        Exit Function
        ElseIf Left(Command, 1) = Chr(34) Then
        'Elimina gli apici presenti all'inzio e fine del comando
        'e restituisce il percorso corrretto
        ApriFile = Mid(Command, 2, Len(Command) - 2)
        Else
        'Restituisce il Percorso del file da aprire
        ApriFile = Command
    End If
End Function

Grazie a tutti per la colalborazione...
: )