Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Funzione shell che non funziona come dovrebbe
Forum - Visual Basic 6 - Funzione shell che non funziona come dovrebbe

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Mi ero assentato un po, ma edesso sono tornato a programmare/bestemmiare in turco:

Il programma (il form che non funziona è riferito alla visualizzazione e inserimento di immagini) cgrea una pagina web contenenti delle immagini di alcuni prodotti. La pagina non funzionante dovrebbe, con un doppio click del mouse sulla imagebox, visualizzare con il programma di visualizzazione predefinito, l'immagine selezionata tramite una FileListBox (o una salvata ina una Listbox). Il comando, usato in altri modi funziona. Il programma NON genera alcun errore, ma semplicemente non mi apre l'immagine... allego il codice:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Dim switch As Integer
  3. Dim FileSelezionato As String
  4. Dim Immaginevolatile As String
  5.  
  6. Private Sub cmdOk_Click()
  7.     lstSelezionati.AddItem FileSelezionato
  8.     FileCopy (FileSelezionato), (aslals)
  9. End Sub
  10.  
  11. Private Sub Dir1_Change()
  12.     File1.Path = Dir1.Path
  13. End Sub
  14.  
  15. Private Sub File1_Click()
  16.     switch = 1
  17.     FileSelezionato = File1.Path & "\" & File1.FileName
  18.     Image1.Picture = LoadPicture(FileSelezionato)
  19.     If FileSelezionato <> "" Then
  20.         cmdOk.Enabled = True
  21.     Else
  22.         cmdOk.Enabled = False
  23.     End If
  24. End Sub
  25.  
  26. Private Sub Form_Load()
  27.     switch = 0
  28. End Sub
  29.  
  30. Private Sub Image1_dblClick()
  31.     Dim Shell As Object
  32.     Set Shell = CreateObject("Shell.Application")
  33.     Select Case switch
  34.     Case Is = 1
  35.         Shell.Open FileSelezionato ' NON APRE IL FILE
  36.     Case Is = 2
  37.         Shell.Open Immaginevolatile ' NON APRE IL FILE
  38.     End Select
  39. End Sub
  40.  
  41. Private Sub lstSelezionati_Click()
  42.     switch = 2
  43.     Immaginevolatile = lstSelezionati.Text
  44.     Image1.Picture = LoadPicture(Immaginevolatile)
  45. End Sub



Sapreste dirmi perchè?

PM Quote
Avatar
Alfonso (Normal User)
Rookie


Messaggi: 37
Iscritto: 16/05/2009

Segnala al moderatore
Postato alle 13:10
Venerdì, 07/08/2009
Ho avuto dei problemi del genere che ho risolto con ShellExecute (sempre che sia già definito il programma che apre i file con la tua estensione)


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpoperation As String, ByVal lpfile As String, ByVal lpparameters As String, lpdirectory As String, nshowCmd As Long) As Long


    ShellExecute Me.hwnd, "open", NomeDelFile, "", "", vbNormalFocus

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 17:37
Venerdì, 07/08/2009
il tuo codice non funziona perchè apri un documento. Invece devi aprire il programma e passare come parametro al programma il documento.
Esempio: se devi aprire il documento miofile.txt, la variabile FileSelezionato (se non ricordo male si chiama così) contiene dunque miofile.txt.
Quando fai Shell.open FileSelezionato stai tentando di aprire un documento txt, dovresti fare invece
Codice sorgente - presumibilmente Plain Text

  1. Shell.open "notepad.exe "&FileSelezionato

.
Credo sia quello il problema.

Puoi inoltre fare cosi:
Codice sorgente - presumibilmente Plain Text

  1. Shell.ShellExecute FileSelezionato



il metodo ShellExecute invece apre il programma associato all'estensione del file automaticamente.

Ultima modifica effettuata da Overflow il 07/08/2009 alle 17:41
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 3:53
Sabato, 08/08/2009
grazie mille =D

PM Quote