Internet Explorer nesnesinde Visual Basic'te çalışıyorum. IE'nin görüntülediği mevcut URL'yi kopyalamanın bir yolu var mı? Bu yüzden panoya başka bir yere yapıştırabilir miyim?IE'de Geçerli URL'yi Kullanma Visual Basic'i Kullanma
cevap
kendisi biraz daha karmaşık olan, zaten IE penceresi belirledik varsayarsak - Ben yapabilirsiniz gerekirse bu konuda ayrıntılı:
Dim ieIEWindow As SHDocVw.InternetExplorer
Dim sIEURL As String
'Set your IE Window
sIEURL = ieIEWindow.LocationURL
IE penceresi almak için, başvuru gerekir Tools
=>References...
'a gidip listeden seçerek VBA düzenleyicisinde Microsoft Internet Controls
kitaplığı (ieframe.dll
). Bu öğe mevcut değilse, benim için .dll dosyası C:\Windows\System32\ieframe.dll
adresinde bulunur.
Referans ayarlandıktan sonra, kodunuzdaki SHDocVw
kitaplığına erişebilirsiniz. Bir seçilmesine olanak sağlamak için
Public Function GrabIEWindow() As SHDocView.InternetExplorer
Dim swShellWindows As New SHDocVw.ShellWindows
Dim ieOpenIEWindow As SHDocVw.InternetExplorer
Set GrabIEWindow = Nothing
' Look at the URLs of any active Explorer windows
' (this includes WINDOWS windows, not just IE)
For Each ieOpenIEWindow In objShellWindows
' Check the I.E. window to see if it's pointed
' to a web location (http)
If Left$(ieOpenIEWindow.LocationURL, 4) = "http" Then
' If so, set this window as the one to use.
' This will need to be modified to create
' a list if you want to select from more
' than one open window
' Optional grab the HWND for later reference...
Dim lWindowID As Long
lWindowID = ieOpenIEWindow.HWND
Set GrabIEWindow = ieOpenIEWindow
Exit Function
End If
Next OpenIEWindow
End Function
yukarıda da değiştirilebilir:
Sen (denenmemiş, modifiye/Kendi çalışma kodundan azaltılmış) Aşağıdaki kullanarak (sadece bir açık varsayarak) IE pencereyi tutup çoklu açık IE pencereleri.
+ 1 Yup Sadece bir pencere açıksa veya IE Penceresi tanımlanmışsa. –
@SiddharthRout Bu tür bir otomasyonu günlük olarak kullanıyorum ve bunu başarmak için kirli ama etkili araçlar geliştirdim. (kullanılabilir tüm pencereleri listeler, kullanıcı seçer, oturum daha sonra HWND'ye bağlanır, bazı durumlarda pencerenin hala açık olmasını sağlar, vb.) – Gaffi
Kool :) Gönderinizi değiştirmek ve kullanıcının eklemesi gerektiğini eklemek isteyebilirsiniz Microsoft ınternet denetimleri başvuru? –
Lanet! Bu benim vb6 gün hatırlatıyor :)
Tamam bende var. Eğer 1 IE'den daha fazla pencere varsa, o zaman sadece bir pencere varsa, o zaman bunu alacak olan son aktif (Current) IE penceresini alacaktır.
'~~> Set a reference to Microsoft Internet Controls
'~~> The GetWindow function retrieves the handle of a window that has
'~~> the specified relationship (Z order or owner) to the specified window.
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
'~~> The GetForegroundWindow function returns the handle of the foreground
'~~> window (the window with which the user is currently working).
Private Declare Function GetForegroundWindow Lib "user32"() As Long
Sub GetURL()
Dim sw As SHDocVw.ShellWindows
Dim objIE As SHDocVw.InternetExplorer
Dim topHwnd As Long, nextHwnd As Long
Dim sURL As String, hwnds As String
Set sw = New SHDocVw.ShellWindows
'~~> Check the number of IE Windows Opened
'~~> If more than 1
hwnds = "|"
If sw.Count > 1 Then
'~~> Create a string of hwnds of all IE windows
For Each objIE In sw
hwnds = hwnds & objIE.hwnd & "|"
Next
'~~> Get handle of handle of the foreground window
nextHwnd = GetForegroundWindow
'~~> Check for the 1st IE window after foreground window
Do While nextHwnd > 0
nextHwnd = GetWindow(nextHwnd, 2&)
If InStr(hwnds, "|" & nextHwnd & "|") > 0 Then
topHwnd = nextHwnd
Exit Do
End If
Loop
'~~> Get the URL from the relevant IE window
For Each objIE In sw
If objIE.hwnd = topHwnd Then
sURL = objIE.LocationURL
Exit For
End If
Next
'~~> If only 1 was found
Else
For Each objIE In sw
sURL = objIE.LocationURL
Next
End If
Debug.Print sURL
Set sw = Nothing: Set objIE = Nothing
End Sub
NOT: Ben herhangi bir hata işleme yapmadım. Bununla ilgilenebileceğinizden emin olabilirsiniz;)
Bu, yöntemlerimden biraz farklı! Bazı harici dll referanslarını kullanıyorum, fakat sadece sayfaları manipüle etmek (yani, çoklu ve geri arasında atlamak). Pencerenin standart bir Windows çerçevesi (yani, Bilgisayarım) olabileceğinden, tek pencerenin http olmayan bir yolu olduğu zaman, sw.Count = 1 'i nasıl ele alırsınız? – Gaffi
Bahsettiğim gibi herhangi bir hata işleme dahil etmedim. 'Sol $ (ieOpenIEWindow.LocationURL, 4) = "http" 'yaptığınız gibi bir sonraki adımı olurdu ama gerçek adresleri ile 3 geçerli IE penceresiyle test ediyordum. :) 1 IE penceresinden daha fazlasını deneyin ve hangi URL'yi görüyorsunuz? –
- 1. Komutu Kullanma Geçerli değil POP 3
- 2. Visual Studio soruları için karışımı kullanma
- 3. Netbeans'te visual studio C++ derleyicisini kullanma
- 4. T4: Visual Studio ve MSBuild özelliklerini kullanma
- 5. Visual Studio karşılaştırma aracını VisualHG ile kullanma
- 6. Yerel ağda Visual Studio web sunucusunu kullanma
- 7. Visual C++ Express Edition ile GLUT kullanma
- 8. Visual Studio 2010'da .dll'yi kullanma C++
- 9. Geter ve ayarlayıcıları grenlerde kullanma veya kullanma?
- 10. Look-Up Tablosunu Kullanma SIMD'yi Kullanma
- 11. Ayarlarda kendi numaranı kullanma
- 12. CSS calc'da otomatik kullanma
- 13. kullanma update_columns?
- 14. ProjectItems.item kullanma
- 15. SHFileOperation'ı Kullanma:
- 16. kullanma Sunucular
- 17. kullanma değişkenler
- 18. kullanma Q_ENUMS
- 19. kullanma animasyonlar
- 20. kullanma Localizable.strings
- 21. kullanma SUM
- 22. kullanma inlineCallbacks
- 23. artan kullanma/
- 24. XmlTextReader'ı Kullanma
- 25. İllegalThreadStateException'ı kullanma
- 26. kullanma foreach
- 27. kullanma değişkenler
- 28. kullanma Mat
- 29. kullanma https
- 30. Exception.Data Kullanma
bu sizin istediğinizden biraz daha karmaşık olabilir ve VB.NET'dir, ancak çevrilebilir olmalıdır. Umarım [URL Al] yardımcı olur (http://www.codeproject.com/Articles/204929/Getting-current-browser-URL-with-VB-NET) –
Hangi uygulama? Excel, Erişim ..? – Fionnuala
Güncel IE ile nasıl bağlantı kurdunuz? Bu, açık olan 1 IE penceresinden daha fazlası varsa önemlidir. Altyazıya dayanarak IE ile bağlanıyor musunuz? Bize daha fazla kod gösterme aslında yardımcı olacaktır. Kodun tüm IE pencerelerinden URL almasını istiyorsanız, Microsoft Internet Controls için bir referans belirleyebilir ve daha sonra 'ShellWindows' kullanarak tüm IE pencereleri arasında geçiş yapabilirsiniz. Pencereyi aldıktan sonra, adresi almak için '.LocationURL' kullanmanız yeterlidir. –