Hejsa.
Jeg sidder og er ved at lave en udvidelse eller en manager om man vil til programmet pdfcreator, og det fungere på den måde at man skal vælge sine dokumenter i en dialogboks og trykke start. programmet sørger så for følgende:
1: Afslut en allerede kørende pdfcreator proces og starte en ny
2: angive de korrekte informationer til pdfcreator processen
3: Ændre standardprinteren til PDFCreator
4: åbne programmet svarende til filtypen
5: printe dokumentet som PDF
6: luk programmet
7: Sætte standardprinteren som den var før start
8: vis dialogboks om at processen er færdig
Mit problem ligger i hvis man for eksempel allerede har et word dokument åbent, og man tidligere har printet noget ud på en anden printer en pdfcreator i den pågældende session. så bruger Word bare den seneste printer i stedet for den nye standardprinter som mit program har indstillet, og der opstår dermed en fejl.
Så mit spørgsmål er hvordan jeg kan override last used printeren og bruge standard printeren i windows.
dette er funktionen til at skifte standardprinter:
Public Function SetDefaultPrinter(ByVal PrinterName As String) As Boolean
'Declare WMI Variables
Dim MgmtObject As System.Management.ManagementObject
Dim MgmtCollection As System.Management.ManagementObjectCollection
Dim MgmtSearcher As System.Management.ManagementObjectSearcher
Dim ReturnBoolean As Boolean = False
'Perform the search for printers and return the listing as a collection
MgmtSearcher = New System.Management.ManagementObjectSearcher("Select * from Win32_Printer")
MgmtCollection = MgmtSearcher.Get
'Enumerate Objects To Find Printer
For Each MgmtObject In MgmtCollection
'Look for a match
If MgmtObject.Item("name").ToString = PrinterName Then
'Set Default Printer
Dim TempObject() As Object 'Temporary Object for InvokeMethod. Holds no purpose.
MgmtObject.InvokeMethod("SetDefaultPrinter", TempObject)
'Set Success Value and Exit For..Next Loop
ReturnBoolean = True
Exit For
End If
Next
'Return Success Value
Return ReturnBoolean
End Function
og den her kodedel er den måde jeg starter et print på. jeg holder mig fra OLE objekter for at få den størst mulige kompatibilitet.
Dim MyProcess As New Process
MyProcess.StartInfo.CreateNoWindow = False
MyProcess.StartInfo.Verb = "print"
MyProcess.StartInfo.FileName = file
MyProcess.Start()
MyProcess.Close()
Jeg er meget novice, så ville sættepris på en simpel forklaring hehe