Newsgroup: it.comp.lang.visual-basic
Titolo: Stampare File MDI

Ho una cartella con diversi file Immagine con estensione MDI.
Volevo effettuare la stampa sequenziale senza doverli aprire uno per
volta, ed ho
provato questo sistema:
Private Sub cmdPrint_Click()
    Dim MyPath As String
    Dim MyName As String
    Dim X As Long
    MyPath = Me.txtFolder
    MyName = Dir(MyPath)
    Do While MyName <> ""
        MyName = Dir
        X = ShellExecute(0, "PRINT", MyName, vbNullString,
vbNullString, SW_SHOWNORMAL)
    DoEvents
    Loop
End Sub
La scansione dei File viene letta regolarmente, ma l'invio a
ShellExecute non
dà assolutamente esito...!
Cosa stò sbagliando..?
Grazie.
@Alex

 ha scritto nel messaggio
news:1151135061.8...@g10g2000cwb.googlegroups.com...





Cosa stò sbagliando..?
Grazie.
@Alex
Ciao Alex,
l'estensione MDI a che Applicazione è associata e questa applicazione
consente la stampa?
Se da File Manager fai click col tasto destro l'opzione stampa c'è?
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

 Cinzia
Ciao Cinzia, lavori anche nel WeekEnd...?
L'estensione in questione è il formato Immagine che WinXP realizza
quando si stampa.
Il file viene aperto con Imagin o qualcosa di simile, purtroppo a casa
ho W2K e non posso
testare quanto mi dici, ma aprendo l'applicativo associato è
disponibile la stampa, infatti me li sono stampati a mano uno alla
volta....!
Lunedì verifico l'opzione nel Menù Popup.
Grazie.
Ciao
@Alex

 Cinzia
Ho verificato ed è stampabile da Popup, nel menù c'è la voce
"Stampa" funzionante.
Continuo a pensare che mi sfugga qualcosa.....spero non serva un
processo sincrono...!
@Alex

Alessandro Baraldi ha scritto:

Stampando un singolo File con ShellExecute viene regolarmente stampato,
ma inserito in un ciclo no.
Ho "supposto" fosse questione di tempi e di esecuzione di processi.
Quindi ho sostituito ShellExecute con ShellExecuteEx da cui ricavo il
processo
e speravo di usare il Wait al fine di testare l'avvenuta esecuzione...!
Sub ShowProps(FileName As String)
    Dim SEI As SHELLEXECUTEINFO
    Dim hwndret As Long
    With SEI
        .cbSize = Len(SEI)
        .hwnd = 0&
        .fMask = SEE_MASK_FLAG_NO_UI Or SEE_MASK_NOCLOSEPROCESS
        .lpFile = FileName
        .lpVerb = "print"
        .lpParameters = vbNullChar
        .lpDirectory = vbNullChar
        .nShow = vbMinimizedFocus
        .hInstApp = 0
        .lpIDList = 0
    End With
    ShellExecuteEx SEI
    hwndret = SEI.hInstApp
    If Not (hwndret <= 32) Then
        ' Aspetto che il processo parta per 3000ms
        WaitForSingleObject SEI.hProcess, 3000
    Else
      MsgBox "Stampa Fallita"
    End If
End Sub
Anche quì nessun esito...!
Consigli...?
@Alex

 e speravo di usare il Wait al fine di testare l'avvenuta esecuzione...!
Ho risolto in questo modo:
 RetVal = ShellExecuteEx(sei)
  Launch = (RetVal <> 0)
  If RetVal = 0 Then
    ' The function failed, so report the error.  Err.LastDllError
    ' could also be used instead, if you wish.
    Dim msg As String
    Select Case sei.hInstApp
      Case SE_ERR_FNF: msg = "File not found"
      Case SE_ERR_PNF: msg = "Path not found"
      Case SE_ERR_ACCESSDENIED: msg = "Access denied"
      Case SE_ERR_OOM: msg = "Out of memory"
      Case SE_ERR_DLLNOTFOUND: msg = "DLL not found"
      Case SE_ERR_SHARE: msg = "A sharing violation occurred"
      Case SE_ERR_ASSOCINCOMPLETE: msg = "Incomplete or invalid file
association "
      Case SE_ERR_DDETIMEOUT: msg = "DDE Time out"
      Case SE_ERR_DDEFAIL: msg = "DDE transaction failed"
      Case SE_ERR_DDEBUSY: msg = "DDE busy"
      Case SE_ERR_NOASSOC: msg = "No association for file extension"
      Case ERROR_BAD_FORMAT: msg = "Invalid EXE file or error in EXE
image"
      Case Else: msg = "Unknown error"
    End Select
    MsgBox "Errore " & sei.hInstApp & ": " & msg, vbOKOnly +
vbExclamation
  Else
      Do
        DoEvents
        RetVal = WaitForSingleObject(sei.hProcess, 0)
      Loop While RetVal = WAIT_TIMEOUT
    End If
  End If
L'unico problema che ho notato è che se l'elenco dei Files è
eccessivo potrebbe superare
la memoria della stampante, quindi pensavo di inserire un controllo sul
Numero di Jobs
nella coda di stampa accedendo a EnumJobs oppure recuperare il numero
di Bytes
nel Buffer dello spooler...!
Vabbè vedo qual'è la soluzione migliore.
@Alex