Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Stampante di default

Grazie dell'aiuto in anticipo.
Ho bisogno di sapere qual'è la stampante di default prima di effettuare
delle operazioni di stampa con la CommonDialog per poi ripristinarla al
termine. (Non ditemi di non usarla poiché la specifica è quella).
Ho quindi bisogno di due API (credo), una per salvare in qualche modo la
stampante di default e l'altra per ripristinarla.
Mi sapete dare un aiuto?.
Federico

Purtroppo il mio problema e' urgente e sono anche senza i CD della MSDN.

 stampante di default e l'altra per ripristinarla.
Ho tempo solo di copiarti l'esempio dell' MSDN
_____________________________________________
Notes to Keep in Mind
The Device value you get or set actually contains three elements
separated by commas as follows:
   <printer name>,<driver name>,<port>
For example:
      My Printer,HPPCL5MS,lpt1:
When setting the default printer, you must specify valid names for these elements. That is, you must specify a valid printer,
driver, and port. If not, programs such as Print Manager may set the printer back to the previous valid printer, and other programs
may become very confused. You can use the EnumPrinters API to retrieve the printer name, driver name, and port name of all available
printers.
Windows 95 and Windows NT map most .INI file references to the registry. Because of this mapping, GetProfileString and
WriteProfileString still function as they do under 16-bit Windows (Microsoft Windows and Windows for Workgroups).
After setting the default printer, notify all other applications of the change by broadcasting the WM_WININICHANGE message.
// This code uses a sample profile string of "My Printer,HPPCL5MS,lpt1:"
   // To get the default printer for Windows 3.1, Windows 3.11,
   // Windows 95, and Windows NT use:
   GetProfileString("windows", "device", ",,,", buffer, sizeof(buffer));
   // To set the default printer for Windows 3.1 and Windows 3.11 use:
   WriteProfileString("windows", "device", "My Printer,HPPCL5MS,lpt1:");
   SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0L);
   // To set the default printer for Windows 95 use:
   WriteProfileString("windows", "device", "My Printer,HPPCL5MS,lpt1:");
   SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0L,
   (LPARAM)(LPCTSTR)"windows", SMTO_NORMAL, 1000, NULL);
   // To set the default printer for Windows NT use:
   /* Note printer driver is usually WINSPOOL under Windows NT */
   WriteProfileString("windows", "device", "My Printer,WINSPOOL,lpt1:");
  SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0L, 0L,
  SMTO_NORMAL, 1000, NULL);

 stampante di default e l'altra per ripristinarla.


 stampante di default e l'altra per ripristinarla.
da come dici, dubito che ti serva. cmq la routine qui sotto se non sbaglio
(e piu' di una anno che non la guardo) chiama la finestra imposta stampante.
la prn scelta in questa finestra diviene la default. per ripristinare la
precedente *forse* ti basta salvare da qualche parte il printer.devicename
che viene su e poi reimpostarlo, ma non ci giurerei affatto.
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

 wrote in message 89gf3v$dmh$1...@nslave2.tin.it...


 ha scritto nel messaggio
news:89gggv$3m4$1...@fe1.cs.interbusiness.it...





 Come diavolo si traduce in VB SendMessageTimeout??
Public Declare Function SendMessageTimeout Lib "user32" _
Alias "SendMessageTimeoutA" _
(ByVal hwnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long, _
ByVal fuFlags As Long, _
ByVal uTimeout As Long, _
lpdwResult As Long) As Long
In NT lParam = 0, in Windows 95 (non chiedere perché) è
un puntatore alla stringa "windows". Prova a cambiare il tipo in
Any e passare la stringa ByRef. Se non va occorre copiarla
in un buffer con lstrcpy, che rende il puntatore.
La funzione restituisce True se riesce.

 ha scritto nel messaggio
news:89h3cu$sic$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:89hg18$4q0$1...@nslave1.tin.it...
