Newsgroup: it.comp.lang.visual-basic
Titolo: Stampante predefinita!!!

Qualcuno puņ aiutarmi!!! ??? Come faccio ad impostare la stampante
predefinita in VB6???
Io ho usato il seguente codice ma non funziona....
    For Each X In Printers
        If X.DeviceName = prn Then
            Set Printer = X
            Exit For
        End If
    Next X
' "prn" e il device name della stampante che voglio settare come
predefinita!!!
Tnks !!!  Claudio

 ha scritto nel messaggio
news:8fgcff$sck$1...@pinco.nettuno.it...

Cosa vuol dire non funziona?
Sei sicuro che prn sia il nome giusto? Hai controllato in esecuzione
passo passo i valori di DeviceName?
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!

 Tnks !!!  Claudio
qui sotto ci arrivo ( di solito :) attraverso un common dialog.
mi sembra di ricordare che in vb5 senza sp3 (che io uso) la scelta stampante
facesse casino. non so con vb6.
ciao, a.
Private Sub cmdPrinter_Click()
    On Error GoTo errman
    With frmMain.CDL
        .CancelError = True
        .FLAGS = cdlPDPrintSetup
'        .FLAGS = cdlPDReturnDefault
        .ShowPrinter
    End With
    NomeStampante = Printer.DeviceName
    lblPrinter = NomeStampante
    lblPrinterPath = Printer.Port
    lblPrinterOrient = IIf(Printer.Orientation = 1, "Verticale",
"Orizzontale")
    lblPrinterPaper = WhichPaper()
    frmMain.TB.Buttons("print").ToolTipText = "Stampa su " & NomeStampante
    frmMain.TB.Buttons("printersetup").ToolTipText = "Imposta stampante" _
                    & " (Corrente: " & NomeStampante & ")"
    Exit Sub
errman:
    If Err <> cdlCancel Then
        NomeStampante = Printer.DeviceName
        lblPrinter = NomeStampante
        lblPrinterOrient = IIf(Printer.Orientation = 1, "Verticale",
"Orizzontale")
        lblPrinterPaper = WhichPaper()
        frmMain.TB.Buttons("print").ToolTipText = "Stampa su " &
NomeStampante
        frmMain.TB.Buttons("printersetup").ToolTipText = "Imposta stampante"
_
                    & " (Corrente: " & NomeStampante & ")"
    End If
End Sub

 
Per quanto riguarda quella di sistema:
-Usi la common dialog, fa tutto da sola.
-Usi le api, io utilizzo questa funzioncina:
Private Declare Function WriteProfileString Lib "kernel32" Alias
"WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As
String, ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Private Const WM_WININICHANGE = &H1A        'File WIN.INI modificato
Private Const HWND_BROADCAST = &HFFFF
Public Function SetDefaultPrinter(ByVal PrinterName As String, ByVal
PrinterDriver As String, ByVal PrinterPort As String) As Boolean
'Setta la stampante di default per il sistema
'PrinterName : Nome della stampante
'PrinterDriver : driver della stampante
'PrinterPort : porta a cui è collegata la stampante
Dim DeviceLine As String        'Line di descrizione stampante
Dim Result As Long              'Risultato del settaggio
 
    SetDefaultPrinter = False
 
    'Stringa di descrizione della stampante
    DeviceLine = PrinterName & "," & PrinterDriver & "," & PrinterPort
 
    'Scrivo in WIN.INI i dati della nuova stampante di default (Gruppo:
windows; Chiave: Device)
    Result = WriteProfileString("windows", "Device", DeviceLine)
 
    If Result <> 0 Then  'Scrittura riuscita
 
       'Indico al sistema operativo che ho modificato WIN.INI
        Result = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, ByVal
"windows")
 
        If Result <> 0 Then     'Stampante settata
            SetDefaultPrinter = True        'Stampante di default
settata correttamente
        End If
 
    End If
 
End Function
I dati sulle stampati installate li trovi in WIN.INI.
Ciao
	   :-) Hd (-:
-^- Verso l'infinito e oltre -^-

Qualcuno può aiutarmi... non riesco a modificare la stampante predefinita
senza utilizzare il commondialog....
Il mio problema è che ho un controllo per lavorare dei tif (LEAD) che stampa
solo sulla stampante predefinita. Quando devo stampare l'immagine elaborata
dal controllo faccio visualizzare la finestra delle stampanti del common
dialog impostando la stampante scelta come predefinita. Una volta lanciata
la stampa del tif vorrei reimpostare la stampante predefinita. Ho consultato
MSDN e ho trovato del codice che mi imposta la stampante predefinita... ma
questo non funziona.
Il codice utilizzato è il seguente
'prn è il devicename della stampante predefinita precedente
    For Each X In Printers
        If X.DeviceName = prn Then
            Set Printer = X
            Exit For
        End If
    Next
Ciao a tutti!!!
Claudio

Si ho controllato..... il codice funziona ma non mi imposta la stampante
come predefinita!!


La risposta te l'ha gią data Hd. Uso anch'io la stessa tecnica e
funziona. Un'unica cosa, prima di cambiare con la commondialog la
stampante predefinita, salvo in una variabile testo (mstrprinter) la
predefinita con:
x = GetProfileString("Windows", "device", ",,,", mstrPrinter,
Len(mstrPrinter))
in modo di poterla reimpostare all'uscita del programma con:
x = WriteProfileString("windows", "device", mstrPrinter)
If x = 0 Then
      x = MsgBox("Impossibile aggiornare la stampante di default",
vbCritical, App.ProductName)
End If
x = SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0, "windows",
SMTO_NORMAL, 1000, 0)
If x = 0 Then
      x = MsgBox("Impossibile comunicare a Windows aggiornamento della
stampante di default", vbCritical, App.ProductName)
End If
