Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB6] Creare DLL o EXE per mandare in stampa

    Ciao a tutti... ritorno con un problema che avevo risolto in passato con un accrocchio che ora non va più e non so che pesci pigliare!
    Il problema è il seguente: da una pagina PHP o ASP devo stampare su delle stampanti viste dal server. La cosa a dirsi sembra facile, ma a farsi per me è stata un dramma... riesco solo su quelle collegate fisicamente al server e non capisco il perchè! A sto punto volevo battere altre strade... e qui vi chiedo aiuto. Ora io riesco a creare il file con PHP o ASP e con una DLL fatta da me becco anche tutte le stampanti. A sto punto devo solo riuscire a mandare in stampa. Qualcuno mi aiuta a fare una DLL che passata la stampante ed il path del file come parametri, riesca ad aprire sto file e mandarlo in stampa tornando un messaggio di stampa eseguita su stampante (nome) o un messaggio di errore?
    Immagino che per i guru del forum saranno al massimo 20 righe di codice banale, ma a me non riesce proprio... e non conosco per nulla la gestione degli errori di VB6
    HELP!!!
    Grazie
    Rino

  2. #2
    Ma non è che il problema deriva dal fatto che l'utente sotto cui viene eseguito il processo di IIS non dispone delle autorizzazioni per stampare sulle altre stampanti?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    probabile, ma ho già messo Administrator... ed il problema è che il tutto è sotto active directory (che io non conosco). Fino un po' di tempo fa andava, poi è partito il server e abbiamo migrato il tutto su un altro, ma le stampanti client non siamo riuscite ad usarle (ne io ne il sistemista), allora vorrei evitare ciò e cambiare soluzione. Anche perchè per ora passavo da PHP (la intranet è fatta in PHP) ad ASP (le stampe sono in ASP perchè in PHP non andava bene). Quindi io già lo trovavo un accrocchio prima, in più ora non riesco più a farlo andare!
    Vorrei quindi riuscire a creare una DLL per lasciare a casa IIS...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma le stampanti che vuoi usare sono in rete?

    E l'errore che hai qual e'?

    Parliamo di codice ASP?

  5. #5
    Le stampanti sono in rete... ora mi dice che non esiste la stampante, ma la stampante esiste... Cmq lasciando stare l'ASP che era un accrocchio mi aiutate con la DLL?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ma non e' chiaro ...

    Hai detto "con una DLL fatta da me ..." ... allora esiste gia' una DLL?

  7. #7
    La DLL fatta da me (funzionante) è quella che becca le stampanti installate sul pc. La DLL per mandare in stampa non sono mai riuscito a farla funzionare correttamente.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... non posso avere idea dei problemi che hai avuto con la tua DLL se non ne mostri il codice e indichi i problemi ...

  9. #9
    Lo so... è che ho riformattato il pc e non riesco ad installare visual studio (non mi legge il cd), quindi non riesco a dare il codice e non ricordo più che problema dava (anche perchè quel codice creava anche la pagina di word che ora creo in PHP anche se alla fine non so qual'è la soluzione migliore)
    Sto cercando un nuovo CD di visual studio e poi posto tutto... nel frattempo se qualcuno può indicarmi 2 righe di codice per aprire il documento e mandarlo in stampa...
    Grazie
    Rino

  10. #10
    rieccomi... ora ho anche il codice...
    codice:
    Option Explicit
    
    Private objWord As Word.Application
    
    Public Function stampa(stampante As String, url As String, copie As Integer)
     On Error Resume Next
     Set objWord = New Word.Application
     Dim objDoc As Word.Document
    
     Set objDoc = objWord.Documents.Open(url)
    
     objWord.ActivePrinter = stampante
     objWord.PrintOut Background:=False, Copies:=copie
     objDoc.Close
    
     objWord.Quit
     Set objWord = Nothing
     stampa = "Stampa riuscita su " + stampante
     
    If Err.Number <> 0 Then
     objWord.Quit
     Set objWord = Nothing
     stampa = "Stampa non riuscita su " + stampante + "
    Descrizione Errore: " + Err.Description
    End If
    End Function
    
    Public Function getPrinter()
     Dim str As String
     Dim pr As Printer
     str = ""
     For Each pr In Printers
      str = str + pr.DeviceName + "§"
     Next
     If Len(str) > 1 Then
      str = Left(str, Len(str) - 1)
     Else
      str = "NESSUNA STAMPANTE"
     End If
     getPrinter = str
    End Function
    Questo è il codice della mia DLL
    Il codice PHP non fa altro che riempire dei bookmark e poi salvare il file che verrà poi richiamato dalla DLL e mandato in stampa. Ho notato però che ci sono dei problemi:
    - il foglio di word vuoto tende a bloccare tutto se viene aperto da più utenti (probabilmente si blocca all'avviso di sola lettura)
    - il processo è molto lungo perchè apro word scrivo il foglio, poi lo chiudo e riapro word da DLL per la stampa.
    Sapete aiutarmi a fare tutto tramite DLL? e che non si pianti se 2 utenti aprono lo stesso file per compilare i campi?
    Grazie

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.