Fehlermeldung beim drucken des Screenshots unter Vista

Blace

Mitglied
Hallo,
ich habe vor längerer Zeit mal eine Funktion geschrieben, die vom Hauptfenster meines Programms ein Screenshot macht, es an den Drucker sendet und dann ein zweites Fenster im Programm aufruft, ebenfalls ein Screenshot macht und es dann auch an den Drucker sendet.
So werden auf einem Blatt hochkannt zwei Screenshots der Fenster des Programms gedruckt. Eins auf der oberen Hälfte des Blattes und eins auf der unteren Hälfte des Blattes.
Das funktioniert auch eigentlich ohne Probleme, außer bei einem PC in der Firma, auf dem das Betriebssystem Windows Vista installiert ist.
Dort wird nur der obere Teil auf das Blatt gedruckt, also das Hauptfenster des Programms.
Als ich dann das Bild testweise in einer Imagebox zwischengespeichert habe, funktionierte es wieder bei allen PCs außer beim Vista Rechner. Dort wurde der Laufzeitfehler 481: Ungültiges Bild ausgegeben.
Hier einmal der Code der Funktion, die fürs Screenshot machen und Drucken zuständig ist:
Code:
Private Sub drucke_hochformat()
    Detail_Name = Data1.Recordset.Fields("Name")
    Detail_Vorname = Data1.Recordset.Fields("Vorname")
    Detail_Chiffre_Nr = Data1.Recordset.Fields("Chiffre-Nr")

    If IsNull(Detail_Name) Then
        Detail_Name = ""
    End If
    If IsNull(Detail_Vorname) Then
        Detail_Vorname = ""
    End If
    If IsNull(Detail_Chiffre_Nr) Then
        Detail_Chiffre_Nr = ""
    End If
    
    frmDetail.Text5.Text = Detail_Name
    frmDetail.Text6.Text = Detail_Vorname
    frmDetail.Text7.Text = Detail_Chiffre_Nr
    frmDetail.Test = txtID.Text
    'SQL = "SELECT * FROM Detail WHERE Detail.`ID` = '" & frmDetail.Test & "'ORDER BY Datum DESC"
    SQL = "SELECT * FROM Detail WHERE Detail.`IDNR` = " & frmDetail.Test & " ORDER BY Datum DESC"
    frmDetail.Data2.RecordSource = SQL
    frmDetail.Data2.Refresh
    frmDetail.Refresh
    frmDetail.Show
    frmDetail.Hide
    
    form_farbe_aendern frmAIS, &HFFFFFF



    form_farbe_aendern frmDetail, &HFFFFFF


    
  Const KEYEVENTF_KEYUP = &H2
  Const VK_MENU = &H12
  Const VK_SNAPSHOT = &H2C
  
  HideTaskbar
  frmAIS.Show
  
  DoEvents

  keybd_event VK_MENU, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
  keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
  DoEvents
  
  ShowTaskbar
  
  Dim OldScaleMode As Integer
  OldScaleMode = Printer.ScaleMode
  
  Printer.Orientation = Hochformat
  Printer.ScaleMode = 7
  Printer.PaintPicture Clipboard.GetData, 3, 0, 16, 14
  DoEvents
  Clipboard.Clear
    
    
  frmDetail.Show
  frmDetail.Refresh
  DoEvents
    
  keybd_event VK_MENU, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
  keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
  DoEvents
  
  Printer.PaintPicture Clipboard.GetData, 3, 16, 16, 12
  Printer.EndDoc
  DoEvents
  Printer.ScaleMode = OldScaleMode
   
  
  form_farbe_aendern frmAIS, &H8000000F
  form_farbe_aendern frmDetail, &H8000000F
  frmDetail.Hide
  
  Unload frmDetail
        
End Sub

Ich hoffe ihr könnt mir irgendwie weiterhelfen, und falls ihr mir jetzt damit kommt, dass Vista das Problem ist, dann glaub ich das gerne ^^. Jedoch ist leider ausgerechnet der Vista Rechner der PC vom Chef und ich denke, dass er sich nicht damit zufrieden geben wird, dass das Betriebssystem einfach Mist ist :D.
Also ich danke schonmal jetzt für jede Antwort.
Grüße
Blace
 
achja, hatte ich vergessen...
er macht diesen Fehler nur beim 2. Klick auf "drucken"
das erste mal druckt er also auf ein Blatt die Screenshots von beiden Fenstern.
Das zweite mal, wenn man auf den Druck Button (drucke_hochformat()) klickt druckt er nur den oberen Teil auf das Blatt, also das erste Screenshot vom Hauptfenster.
 
Zurück