Newsgroup: it.comp.lang.visual-basic
Titolo: Eseguire Applicazioni esterne senza conoscere il percorso esatto

Hi all!
Avrei bisogno di eseguire applicazioni esterne tipo WordPad o la
Calcolatrice di Windows...
Ovviamente non si e' certi del percorso di tali programmi (soprattutto se
volessi far funzionare la mia applicazione anche sotto Windows NT).
Qualcuno ha qualche suggerimento?
Potrebbe andar bene rilevare la directory dove e' installato Windows e poi
ricavarsi di conseguenza il percorso?
Thanks in advance...
Ciao, Alfonso.

...

Se si tratta di avviare programmi come quelli da te nominati (cioè gli applicativi standard di Windows) ti consiglio questo:
1. Provi a eseguire il programma senza specificare il percorso (con i programmi che si trovano nelle cartelle Windows spesso
funziona) Es. Shell "Calc", vbNormalFocus;
2. Se in questo modo non si è avviato il programma (ti da errore) trovi la directory di Win (con GetWinDir)e provi a vedere se
esiste il file nella directory standard come hai detto tu;
3. Se non trovi il file in questo modo non ti resta che scandire tutto il disco fisso fino a trovare il file cercato;
4. Se ancora non è stato possibile trovare il file visualizzi un messaggio all'utente (Es. MsgBox "La prossima volta installa i
programmi" + chr(13) + "se vuoi utilizzarli!!!", vbExclamation).
Questo non è il metodo più pratico (per il programmatore) ma credo che garantisca una certa velocità al programma in condizioni
normali (se il file si trova dove deve essere).
Se hai problemi per la scansione del disco alla ricerca del file disperso postami un messaggio che sto lavorando su una function che
serve allo scopo (quasi finita).
Spero ti serva.
Ciao
        Diego

serve allo scopo (quasi finita).
Se non erro, sul Sito Comune c'č un esempio di come ottenere la scansione completa di directory e subdirectory.....
spero non sia troppo tardi... :-)))
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------


GetWinDir ?????????????????
Non la trovo da nessuna parte :-(
:-) Hd (-:
--
Posted from 
venere.inet.it
 [194.20.8.4]
via Mailgate.ORG Server - 
http://www.mailgate.org

Non la trovo da nessuna parte :-(
Credo si riferisse all'API GetWindowsDirectory:
Dichiarazioni:
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _
	(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" _
	(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Const MAX_PATH = 260
Utilizzo:
Dim DirWin As String, DirSys As String
Dim ret As Long
DirWin = String(MAX_PATH, 0)
DirSys = String(MAX_PATH, 0)
ret = GetWindowsDirectory(DirWin, MAX_PATH - 1)
DirWin = Trim(DirWin)
ret = GetSystemDirectory(DirSys, MAX_PATH - 1)
DirSys = Trim(DirSys)</CODE></PRE>
DirWin ora conterrà la dir di Windows;
DirSys la dir System di Windows.



Ovvio, non esiste! Si chiama GetWindowsDirectory. Ma ti conviene fare in
quest'altro modo:
Dim win As String
win = Environ("WINDIR")

spero non sia troppo tardi... :-)))
No Moreno non è troppo tardi!
Solo che io me ne so costuendo una che permetta anche la ricerca di file specificati (ad es. "prova.vbp" e che supporti i (o le)
wildchars (ad es. p?r*.*).
Inoltre volevo avere anche la possibilità di fermare la ricerca al primo ritrovamento di un file rispondente al nome specificato
(credo sia utili in situazioni come questa).
Purtroppo non basta usare
    Dir(Path+"\"+QuelloCheCerco, vbHidden + vbDirectory + vbNormal)
perchè così guarda solo dentro alle directory con il nome rispondente a QuelloCheCerco.
Comunque l'esempio ("DirTree.vbp") l'ho scaricato anche io.
E non hai torto se mi dici che avrei fatto bene a informare io stesso |IcemaN| del progetto sul NG. Hai fatto bene a ricordarlo.
Cosa dici?
    Quando ho finito il lavoro pensi che si possa condividerlo sul SC ???
Ciao
    Diego

 (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Esatto!!!
Solo che io sono uno strano e mi sono fatto la dichiarazione cosě:
Public Declare Function GetWinDir Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As
Long
In questo modo č piů breve da scrivere e funziona comunque (meglio che torni agli standard!)
Ciao
    Diego

    Quando ho finito il lavoro pensi che si possa condividerlo sul SC ???
Certo Certosino. :-)


 ricavarsi di conseguenza il percorso?
non proprio, visto che molti programmi (i.e. WordPad) NON sono installati
nella directory di Windows neanche per default (WordPad è in
Programmi\Accessori)
La soluzione è cercare nel registry (quando non sai dove andare a cercare,
è sempre lì che devi mettere il naso ;-) ). Le applicazioni (con relativi
percorsi) le trovi in:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App
Paths\<nome file eseguibile dell'applicazione>
e devi legger il valore di default di quella chiave.
L'unica scocciatura è che alcuni percorsi sono indicati col nome nel
formato MS-DOS (coi nomi lunghi "troncati"), ma tanto a che che ti frega ? 
;-)
Credo (ma non sono sicurissimo) che lo stesso valga anche per NT (se puoi
verificarlo, mi interesserebbe molto saperlo)
Se non trovi alcune applicazioni in quella chiave (es. calcolatrice),
allora sicuramente è nella dir. di Windows, che ti puoi ricavare con la API
GetWindowsDir (mi sembra che si chiami così)
Se non conosci le API per la lettura del registro e non ti va di navigare
nell'MSDN, fatti dare da Johnny il modulo RegAPI.BAS che gli ho postato
qualche gg. fa: troverai tutte le API che ti servono, e potrai ampliare il
modulo per le tue esigenze senza troppa difficoltà
Bye
-- 
Ale...@tiscalinet.it

Certo Certosino. :-)
Adesso che ho finito la Sub cosa devo fare?
Conviene metterla tra le piccole perle (non so neanche se ho il diritto di deciderlo io) o mando il progettino che ho costruito per
testarla (si tratta di un form con tutto il necessario per effettuare la ricerca dei file).
Inoltre questa sub ha bisogno di una funzione che controlla se il nome di un file corrisponde o meno alle wildchars.
In entrambi i casi come devo fare per veder poi pubblicato il mio lavoro???
Ciao e grazie
                Diego <:)

In entrambi i casi come devo fare per veder poi pubblicato il mio lavoro???
Crea un progetto d'esempio ed invialo al Webmaster del Sito Comune.
Lo vedrai pubblicato nella sezione "Sorgenti"
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
Home Page - 
http://www.geocities.com/SiliconValley/Bridge/1414/
