Newsgroup: it.comp.lang.visual-basic
Titolo: Avvio applicazione senza conoscere la Path

 
          Come posso avviare una applicazione tipo excel senza conoscerne la path? Mi
spego meglio: dato che non tutti i pc su cui voglio installare il mio
programma avranno excel.exe nella stessa cartella, come posso risalire al
percorso corretto dell'exe da lanciare?
Immagino che ci sarà qualche funzione nell'API di Windows, ma non ho ancora
rovato la maniera di cercare su AllAPI una eventuale funzione di cui non
conosco il nome ma solo la funzionalità. Il Searc Engine mi pare che
ricerchi un po' troppo ad ampio spetttro...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:194Z243Z137Z76Y...@usenet.libero.it...

Se è Excel installato, potresti utilizzare l'automazione OLE:
'Dim oXLApp  As Object <-- Late-binding, non richiede l'aggiunta di "MS Excel
Object Library" ai rif. del progetto
Dim oXLApp As Excel.Application
    'Set oXLApp = CreateObject("Excel.Application")
    Set oXLApp = New Excel.Application
    oXLApp.Visible = True
    oXLApp.Workbooks.Open "C:\Temp\pippo.xls"
Bye
Raf

 Come posso avviare una applicazione tipo excel senza conoscerne la path?
cerca la path nel registro...
la prima bKey qui' sotto serviva da test per "me' stesso
me' medesimo" visto che non ho excel installato ti faccio
l'esempio in vbs visto che bastano 2 righe di codice
per VB cerca per esempio 
www.google.it
 "RegRead.bas"
'*.vbs
on error resume Next
set oShell = CreateObject("WScript.Shell")
bKey = oShell.RegRead("HKCR\MPEGFILE\"& _
   "shell\open\command\")
bKey2 = oShell.RegRead("HKLM\SOFTWARE\Microsoft\"& _
       "Windows\CurrentVersion\App Paths\Excel.exe\Path")
Msgbox bKey
Msgbox bKey2
'PS:
se togli on error resume Next  l'errore e' perche non
c'e' la key nel registro
--
Fosco


Grazie Raf e Grazie a Fosco!!!!


 scrive 
(
194Z243Z137Z76Y...@usenet.libero.it
):

Ciao,
    qui sotto trovi il codice per un modulo che rende disponibile una 
funzione pubblica "ShellDocument".
    Ti consente di aprire qualsiasi documento con l'applicazione registrata 
per il file che gli passi come parametro.
    Se ad esempio esegui ...
    ShellDocument "C:\WINDOWS\WIN.INI"
    ... ti apre il file WIN.INI con il notepad.
    Nel tuo caso ...
    ShellDocument "C:\Miacartella\Miofoglio.xls"
    ... aprirà l'applicazione con Excel
    Il vantaggio, rispetto ad altri metodi, è che se un utente usa 
un'applicazione diversa da quella da te prevista non devi fartene carico. Il 
documento verrà aperto con l'applicazione corretta.
Crea un modulo. Incolla il codice. Chiama la funzione.
Un salutone
Andrea Alberto "Twin Aces" Martinoli
From Italy with a smile! :-)
*** INIZIO SHELLDOC.BAS ***
Option Explicit
Private Const MAX_PATH_LENGTH             As Long = 260
Private Const ERROR_FILE_NO_ASSOCIATION   As Long = 31
Private Const ERROR_FILE_NOT_FOUND        As Long = 2
Private Const ERROR_PATH_NOT_FOUND        As Long = 3
Private Const ERROR_FILE_SUCCESS          As Long = 32
Private Const ERROR_BAD_FORMAT            As Long = 11
Private Declare Function FindExecutable Lib "shell32" Alias 
"FindExecutableA" ( _
                         ByVal lpFile As String, _
                         ByVal lpDirectory As String, _
                         ByVal sResult As String) As Long
Public Function ShellDocument(sDocumentPathName As String) As Boolean
  'Cerca via API il programma associato ad una dato file "dati" e esegue una 
shell al sistema per effettuarne
  'l'apertura.
  'Riporta TRUE se l'operazione è terminata con successo, FALSE in caso 
contrario.
  Dim bResult As Boolean, lResult As Long, sResult As String, 
sPathApplication As String
  'Inizializza risultato funzione
  bResult = False
  ShellDocument = bResult
  'Attiva handler di controllo degli errori locale
  On Local Error GoTo errorTrappingPoint
  'Cerca l'eseguibile che apre il file dati indicato
  sResult = String(MAX_PATH_LENGTH, 32)
  lResult = FindExecutable(sDocumentPathName, vbNullString, sResult)
  'Se la ricerca è terminata con successo ...
  If lResult >= ERROR_FILE_SUCCESS Then
    sResult = sResult & Chr(0)
    '... esegue il programma passandogli il percorso del file dati da aprire 
ed esegue la shell al sistema
    sPathApplication = Left(sResult, InStr(sResult, Chr(0)) - 1)
    'Notare che la funzione SHELL riporta il codice identificante il task 
(program's task ID) dell'applicazione
    'aperta non lo specifico stato della stessa. Non è possibile quindi 
sapere in che condizione si trova ma solo
    'che l'apertura è stata effettuata.
    'Se l'esecuzione della funzione SHELL fallisce il valore della funzione 
è pari a 0 (zero)
    bResult = (Shell(sPathApplication & " " & Chr(34) & sDocumentPathName & 
Chr(34), vbNormalFocus) <> 0)
  End If
errorResumePoint:
  ShellDocument = bResult
  Exit Function
errorTrappingPoint:
  bResult = False
  Resume errorResumePoint
End Function
*** FINE SHELLDOC.BAS ***