STEU Inserito: 19 dicembre 2005 Segnala Inserito: 19 dicembre 2005 In un programma di visual basic, devo aprire wordpad per leggere un file di errore, ed utilizzo la seguente riga di comando: Shell "C:\Programmi\Windows NT\Accessori\wordpad.exe" & " " & percorso & "error.log" Tutto funziona benissimo. Il problema è che se il programma gira su un altro computer dove il percorso di wordpad è diverso mi da errore. Esistono delle variabili di sistema o qualcosa che possa mettere nella riga di codice precedente in modo che la mia applicazione vada sempre a prendere wordpad in qualsiasi cartella si trovi in qualsiasi computer? Ho gia' cercato con la funzione cerca ma purtroppo non sono riuscito a trovare la risposta giusta. Grazie a chi mi puo' aiutare e buone feste a tutti
ifachsoftware Inserita: 19 dicembre 2005 Segnala Inserita: 19 dicembre 2005 Prova con Questo codice (naturalmente devi avere associato all'estensione .doc WordPad)Ciao e Buone Feste a tutti MyFname = "C:\DOC\Ciao.doc" If Len(Dir(MyFname)) = 0 Then ' If exist file Beep MsgBox " File '" & MyFname & "' Not Found ! " Else If RunProg(MyFname, Me) < 32 Then MsgBox "Error connecting to file " & MyFname & " !", vbCritical End IfEnd If
jumpier Inserita: 19 dicembre 2005 Segnala Inserita: 19 dicembre 2005 Per recuperare il percorso del WordPad, leggi la chiave di registroHKEY_CLASSES_ROOT\Applications\wordpad.exe\shell\open\commandIn essa (vado a memoria ) dovrebbe esserci il percorso assolutodella posizione dell'eseguibileBuon lavoro
STEU Inserita: 20 dicembre 2005 Autore Segnala Inserita: 20 dicembre 2005 Vi ringrazio per l'interessamento , ma essendo solo agli inzi ho difficolta' a rendere funzionali e funzionanti i vostri consigli.
jumpier Inserita: 20 dicembre 2005 Segnala Inserita: 20 dicembre 2005 .... Prova a guardare sul sito www.visual-basic.it nell'area download;nel box di ricerca digita "registry" e vedrai che compariranno moltevoci con file di esempio da scaricare riportanti tutte le istruzioni perleggere/scrivere il registro (sempre che hai deciso di seguire lastrada da me consigliata). In caso contrario, spiegaci cosa non haicapito del codice di "ifachsoftware".Facci sapere
STEU Inserita: 22 dicembre 2005 Autore Segnala Inserita: 22 dicembre 2005 (modificato) Ti ringrazio jumper mi sto interessandoin vari siti di vb.La tua soluzione mi sembra piu' interessante, ma non so come leggere in vb le chiavi di registro di windows.Per quanto riguarda il codice di Ifachsoftware , mi sto documentando su dei manuali e voglio capire bene tutte le istruzioni e funzioni utilizzate da lui.Non mi sembra un codice molto capibile per chi come me e' alle prime armi, comunque lo ringrazio e intuendo,solo intuendo ma non capendo benissimo , mi è da stimolo per migliorarmi.grazie comunque Modificato: 22 dicembre 2005 da STEU
ifachsoftware Inserita: 23 dicembre 2005 Segnala Inserita: 23 dicembre 2005 Non mi sembra che ci sia molto da capire.C'e' un file MODRUNPROG.BAS che implementa la chiamata ad alle API di Windows per lanciare l'esecuzione di un file.Il programma che lo aprira' dipendera' dall'estensione.Nel tuo caso se metti un file .DOC se hai associato Wordpad per tale operazione verra' usato tale programma (default di Windos).Se hai installato Word verra' usato tale programma a meno che non modifichi l'associazione per l'estensione .DOC a Wordpad.Per richiamare il programma c'e' la parte iniziale del codice cheprima testa se il file esiste , se si lo lancia ritornando un messaggio di errore in caso di errore.Ciao
STEU Inserita: 23 dicembre 2005 Autore Segnala Inserita: 23 dicembre 2005 Ifachsoftware mi puoi consigliare qualche manuale o qualche link in rete(non sono riuscito a trovarli ) dove mi si spieghi cosa sono e cosa servono le API.Te ne sarei veramente grato
ifachsoftware Inserita: 24 dicembre 2005 Segnala Inserita: 24 dicembre 2005 Sono delle funzioni base su cui e' costruito windows e sono inglobate nelle varie dll di sistema.Ciao
Simons Inserita: 24 dicembre 2005 Segnala Inserita: 24 dicembre 2005 (modificato) Ciao a tuttiPosto la mia versione di un programma funzionante per lanciare documenti:Codice Modulo: (per inserire un modulo: Menù "Progetto"->"Inserisci Modulo") #If Win32 Then 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 Declare Function GetDesktopWindow Lib "user32" () As Long #Else Declare Function ShellExecute Lib "SHELL" (ByVal hwnd%, _ ByVal lpszOp$, ByVal lpszFile$, ByVal lpszParams$, _ ByVal lpszDir$, ByVal fsShowCmd%) As Integer Declare Function GetDesktopWindow Lib "USER" () As Integer #End If Public Const SW_SHOWNORMAL = 1 Function StartDoc(DocName As String) As Long Dim Scr_hDC As Long Scr_hDC = GetDesktopWindow() StartDoc = ShellExecute(Scr_hDC, "Open", DocName, "", "C:\", SW_SHOWNORMAL) End Function Codice Form Creare un Command Button con nome cmdExe Private Sub cmdExe_Click() StartDoc [b]percorso & "errors.log"[/b] 'sostituire qui il nome e il percorso del file DoEvents End Sub Funzionante al 100% la funzione StartDoc può eseguire qualsiasi file aprendolo con l'applicazione associata.Spero possa esservi utileSaluti e auguriSimons Modificato: 24 dicembre 2005 da Simons
Brothers Inserita: 25 dicembre 2005 Segnala Inserita: 25 dicembre 2005 (modificato) Questo, se ti può servire, è un semplice codiceChe ti apre qualsiasi file con il suo programma predefinito.CiaoLa parte rossa rende la path univocaLa parte verde intercetta l'errore se il file non esiste(o altro)E sono entrambe eliminabiliLa parte nera è il richiamo della Schell-----------------------------------Option Explicit-----------------------------------Private Sub ApriDocumento_Click() Dim pathcorrente As String pathcorrente = App.Path On Local Error GoTo Errore Call Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & Trim("NomeFile.doc"), vbNormalFocus) Exit Sub Errore: MsgBox "Non ho trovato il documento - NomeFile.doc - ", vbExclamation, "Attenzione" End Sub-------------------------------------- Modificato: 25 dicembre 2005 da Brothers
Brothers Inserita: 25 dicembre 2005 Segnala Inserita: 25 dicembre 2005 PS.Dimenticavo di dirti che se il file è nella directory dell'applicazione "basta il nome file" se nò devi mettere la PathTipo:pathcorrente & "\Fileditesto\" & "NomeFile.doc"Dove pathcorrente è la directory dell'applicazione\Fileditesto\ è la sottodirectory"NomeFile.doc" è il nome del fileNB.Staccarli in questo modo ti può servire per poter fare scegliere tra più file.Puoi anche inserire una CommonDialog. e una TextBoxe la scelta aumenta.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora