Control Webbrowser->PDF per Code anspringen

23/04/2015 - 16:18 von Ahmed Martens | Report spam
Hallo Leute,

in meinem VB6-Programm habe ich ein Webbrowser mit dem ich eine
PDF-Datei anzeigen lasse, soweit so gut.

Das die PDF-Datei wird auch immer sofort geöffnet und erhalten auch den
Focus. Nun kann es aber vorkommen, dass ich das Control verlasse, und
hier möchte ich nun, dass ich wieder per VBA die PDF-Datei anspringe.

Ein Webbrowser1.SetFocus funktioniert nicht, sondern nur, wenn ich auch
eine HTML-Seite anzeigen lasse.

Hat jemand eine Idee, wie ich den Focus per VB-Code auf eine PDF-Datei,
die im Webbrowser angezeigt wird, verschieben kann?

Vielen Dank im Voraus.

Gruß Ahmed
Antworten bitte nur in der Newsgroup.
Win7 Prof. 64bit / MS-Office 2010 Prof. 32bit
 

Lesen sie die antworten

#1 Wolfgang Wolf
24/04/2015 - 07:45 | Warnen spam
Am 23.04.2015 um 16:18 schrieb Ahmed Martens:


Hat jemand eine Idee, wie ich den Focus per VB-Code auf eine PDF-Datei,
die im Webbrowser angezeigt wird, verschieben kann?




Ich kenne das Problem auch bei normalen HTML-Seiten im BrowserCtl. Ein
Webbrowser1.SetFocus reicht da auch nicht, um z.B. das Scrollen per
Scrollrad zu gewàhrleisten. Ich verwende folgenden Code, dieser muss
leider auch noch per Timer-Ctl (Interval0) beim Laden der Form
abgekoppelt werden:

Private Sub tBrowserDocSetFocus_Timer()
On Error Resume Next
Dim lhWnd1 As Long, lhWnd2 As Long, lhWnd3 As Long
tBrowserDocSetFocus.Enabled = False
lhWnd1=FindWindowEx(Me.hwnd,0,"Shell Embedding",vbNullString)
lhWnd2=FindWindowEx(lhWnd1,0,"Shell DocObject View",vbNullString)
lhWnd3=FindWindowEx(lhWnd2,0,"Internet Explorer_Server",vbNullString)
SetFocusAPI lhWnd3
End Sub

und die APIs:

Private Declare Function FindWindowEx Lib "USER32" Alias "FindWindowExA"
(ByVal hWndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass
As String, ByVal lpszWindow As String) As Long

Private Declare Function SetFocusAPI Lib "USER32" Alias "SetFocus"
(ByVal hwnd As Long) As Long

Vielleicht hilft das beim eingebetteten PDF auch weiter. Eventuell musst
du dafür auch andere lpszClass-Klassennamen verwenden.

Schönen Gruß
W. Wolf

Ähnliche fragen