Autor Thema: API-Handle auf Druckerdialog  (Gelesen 9459 mal)

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
API-Handle auf Druckerdialog
« am: 22.06.12 - 12:15:34 »
Hi,

ich habe im Forum  unter "Grundgerüst für eine Excel-Klasse" ein schönes Codebeispiel von Axel gefunden, um per API-Handle ein Excel-fenster in den Vordergrund zu holen:
http://atnotes.de/index.php/topic,39862.msg253621.html#msg253621

Code
  Dim hWnd As Long
		
    'Handle für Excel-Application ermittlen
    hWnd = FindWindow("XLMAIN", 0)
    If hWnd = 0 Then Exit Sub
		
    'Excel aktivieren und in den Vordergrund bringen
    Call SetActiveWindow(hWnd)
    Call SetForegroundWindow(hWnd)


Wie lautet denn die entsprechend Fensterbezeichnung für den Druckerauswahldialog (den ich per "excelobj.Application.Dialogs(8).Show" aufrufe)?

hWnd = FindWindow("print", 0) und hWnd = FindWindow("drucken", 0)

habe ich schon versucht - das ist sie aber offensichtlich nicht, hWnd gibt 0 zurück.

Hintergrund:

Unter Windows XP und Windows Server 2008 wird der Druckerauswahldialog im Vordergrund ausgegeben, unter Windows 7 aber im Hintergrund, und kann deshalb nur per "Desktop anzeigen" erreicht werden.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: API-Handle auf Druckerdialog
« Antwort #1 am: 22.06.12 - 12:32:31 »
Das ist nicht ganz trivial.

Hier -> http://www.herber.de/forum/archiv/372to376/t373425.htm hab ich mal einen Lösungsansatz gefunden. Getestet habe ich das allerdings nicht.

Hier wird der Fenstertitel herangezogen um das Handle zu ermitteln. Ich halte das für etwas problematisch, denn wenn z.B. bei einer neueren Version der Titel geändert wird, funktioniert dein Code schon nicht mehr.

Was hast du den vor? vielleicht gibt's auch noch einen anderen Weg.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: API-Handle auf Druckerdialog
« Antwort #2 am: 22.06.12 - 13:06:01 »
Was hast du den vor? vielleicht gibt's auch noch einen anderen Weg.

Hab ich doch geschrieben, im letzten Satz ;-)

Ich habe einen Stapeldruck programmiert, um die Excel-Anhänge aus verschiedenen Dokumenten, die in einer Ansicht selektiert wurden zu drucken.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: API-Handle auf Druckerdialog
« Antwort #3 am: 22.06.12 - 15:07:57 »
Hab ich doch geschrieben, im letzten Satz ;-)

Ich habe einen Stapeldruck programmiert, um die Excel-Anhänge aus verschiedenen Dokumenten, die in einer Ansicht selektiert wurden zu drucken.

In welchem letzten Satz?   ;)    :-:


Eventuell wäre die PrintOut - Methode des Worksheet - Objekts eine Alternative.

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: API-Handle auf Druckerdialog
« Antwort #4 am: 25.06.12 - 12:47:35 »
Eventuell wäre die PrintOut - Methode des Worksheet - Objekts eine Alternative.
Negativ. Anforderung ist leider, dass die Druckereinstellungen vom Anwender konfiguriert werden können...
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: API-Handle auf Druckerdialog
« Antwort #5 am: 25.06.12 - 16:04:42 »
Versuch's mal so

    ...
    hWnd = FindWindow("", "Fenstertitel")
    If hWnd = 0 Then Exit Sub
    ...

Das hab' ich irgendwo im Web gefunden.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: API-Handle auf Druckerdialog
« Antwort #6 am: 25.06.12 - 16:28:48 »
Näää...
    hWnd = FindWindow("", "Fenstertitel")
... (bzw. "Drucken") gibt nen Lotusscript Fehler...
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: API-Handle auf Druckerdialog
« Antwort #7 am: 25.06.12 - 16:46:35 »
Was für'n Fehler?

Ich habe mal noch ein bisschen gestöbert. Meine Erfahrungen mit API-Aufrufen hält sich in Grenzen. Ich habe schon ewige Zeiten nichts mehr in die Richtung gemacht.

Bei dieser Art Aufruf von FindWindow muss der erste Parameter ein Nullstring sein.

Versuch's mal so:
 
hWnd = FindWindow(0, "Fenstertitel")

oder

const strNullstring As String
hWnd = FindWindow(strNullstring , "Fenstertitel")

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz