Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    Problemi con Shell e QueryString

    Ciao a tutti! Scusate se la domanda è banale, ma sono una neofita di VB...
    Avrei 2 problemi (in realtà più di 2... )

    Problema 1. devo aprire in un programmino dei file powerpoint, il cui percorso è memorizzato in un database.
    Col seguente codice mi viene dato l'errore "file not found", cosa strana, visto che ho premesso la funzione di ricerca "fileExist" e il valore è corretto...
    codice:
    Dim ProcID As Integer
    Dim returnValue As Boolean
     
    returnValue = My.Computer.FileSystem.FileExists(filePres)
    If returnValue Then
      ProcID = Shell("C:\Programmi\Microsoft Office\Office10\POWERPNT.EXE" & filePres & "", AppWinStyle.NormalFocus)
      AppActivate(ProcID)
    Else
      MsgBox(filePres)
    End If
    Primo: non è detto che tutti abbiano office10, quindi, come ricavo il percorso all'eseguibile powerpoint?
    Secondo: se non specifico il nome del file, power point mi si apre, con no! Eppure il percorso al file è corretto!!! Perchè?!?
    Terzo: posso aprire il power point all'interno di un frame o simile, in modo da potergli impostare una grandezza determinata e posizionare un indicatore di scorrimento del tempo sotto?

    Problema 2: come faccio a impostare una query basata su un boleano se non connettendomi manualmente? Mi spiego:
    codice:
    SELECT     fatta, nome, presentazione, tempo
    FROM         presentazioni
    WHERE     (presentazione <> '') AND (sala = strSala) AND (fatta = False)
    ORDER BY codice
    VB non mi accetta il filtro (fatta = False)
    Come faccio?...
    Mi devo riscrivere tutto a mano o c'è modo di utilizzare il suo tableAdapter filtrato in qualche modo?

    Grazie a chi mi vorrà aiutare.

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per il secondo quesito a prima vista manca lo spazio dopo " ....POWERPNT.exe" & filePres
    prova a mettere " ....POWERPNT.exe " & filePres .......


    Per gli altri quesiti vedo di capire qual'è il problema.
    Ciao, Brainjar

  3. #3
    E un passo è fatto!
    grazie e mille...
    ora però ho un altro problema... nel nome del file ci sono degli spazi e ad ogni spazio powerpoint cerca di aprire un file...
    non riesco a trovare il carattere ASCII corrispondente allo spazio...
    immagino di dover fare un replace degli spazio col carattere ACII, no?

  4. #4
    Invece di usare la funzione shell per aprire powerpoint usa l'API ShellExecute di cui si è già parlato molte volte (fai una ricerca nel forum).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ho provato, ma mi dà errore sul parametro hWnd..
    Dice che non è dichiarato
    ma in nessun articolo che ho letto è dichiarato!

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per hWnd usa Me.hWnd se la shellExecute la lanci da un bottone di un form.
    Altrimenti prova ad racchiudere il nome del file tra apici singoli.
    Nel frammento di codice ne vedi uno prima delle virgolette " .... POWERPNT.EXE ' e uno
    dentro le virgolette di filePres & "'".
    In ogni caso puoi prendere la riga e copiarla nel tuo codice.

    codice:
     ProcID = Shell("C:\Programmi\Microsoft Office\Office10\POWERPNT.EXE  '" & filePres & "'", AppWinStyle.NormalFocus)
    Ciao, Brainjar

  7. #7
    Grazie e mille ma niente...
    Nel frattempo ho trovato come recuperare l'applicativo powerpoint...
    ma non mi apre il file nè con Shell nè con ShellExecute...

  8. #8
    Posta ESATTAMENTE il codice in cui usi ShellExecute (che mi pare proprio che sia la API migliore da usare in questo caso).
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Questo il codice utilizzato con shellExecute (dai controlli fatti, il percorso di filePres risulta corretto)
    codice:
            Dim returnValue As Boolean
    
            returnValue = My.Computer.FileSystem.FileExists(filePres)
            If returnValue Then
                On Error GoTo cmdOpenFile_Err
                'open the document in whatever application it requires
                ShellExecute(0, "open", filePres, vbNullString, vbNullString, vbNormalFocus)
    
    cmdOpenFile_Err:
                MsgBox("An unexpected error has occurred.", vbOKOnly + vbCritical, "Error Conditon in Opening File")
    
           Else
                MsgBox(filePres)
            End If
    L'errore che mi dà è:
    PInvokeStackImbalance was detected etc etc

    Questo il codice utilizzato con shell (dai controlli fatti, la procedura di richiamo dell'eseguibile, dà il percorso corretto)
    codice:
            Dim ProcID As Integer
            filePres = Replace(filePres, " ", Chr(32))
            Dim returnValue As Boolean
            Dim strPercorso As String
            strPercorso = Space$(MAX_FILENAME_LEN)
            Call FindExecutable(filePres, vbNullChar, strPercorso)
    
            returnValue = My.Computer.FileSystem.FileExists(filePres)
            If returnValue Then
                On Error GoTo cmdOpenFile_Err
                'open the document in whatever application it requires
                 ProcID = Shell("" & strPercorso & "  """ & filePres & """", AppWinStyle.NormalFocus)
                AppActivate(ProcID)
    
    cmdOpenFile_Err:
                MsgBox("An unexpected error has occurred.", vbOKOnly + vbCritical, "Error Conditon in Opening File")
    
                My.Computer.Keyboard.SendKeys(Keys.Right, True)
            Else
                MsgBox(filePres)
            End If
    Nessun messaggio di errore specifico

  10. #10
    Nota: dal tuo messaggio desumo che stiamo parlando di VB.NET; specificalo direttamente nel titolo la prossima volta.
    Originariamente inviato da b_lilith
    Questo il codice utilizzato con shellExecute (dai controlli fatti, il percorso di filePres risulta corretto)
    codice:
            Dim returnValue As Boolean
    
            returnValue = My.Computer.FileSystem.FileExists(filePres)
            If returnValue Then
                On Error GoTo cmdOpenFile_Err
                'open the document in whatever application it requires
                ShellExecute(0, "open", filePres, vbNullString, vbNullString, vbNormalFocus)
    
    cmdOpenFile_Err:
                MsgBox("An unexpected error has occurred.", vbOKOnly + vbCritical, "Error Conditon in Opening File")
    
           Else
                MsgBox(filePres)
            End If
    Una cortesia personale: non usare MAI più l'on error goto: è una tecnica di gestione degli errori obsoleta e mantenuta solo per motivi di compatibilità; usa piuttosto i blocchi try...catch...finally.
    L'errore che mi dà è:
    PInvokeStackImbalance was detected etc etc
    Probabilmente hai dichiarato male la funzione ShellExecute: non è che per caso hai copiato la dichiarazione da una discussione in cui si parlava di VB6? La dichiarazione corretta per VB.NET è la seguente:
    codice:
    Public Declare Auto Function ShellExecute Lib "shell32.dll" (ByVal hwnd As IntPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As IntPtr
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.