का उपयोग कर आईई में वर्तमान यूआरएल प्राप्त करें मैं विजुअल बेसिक में इंटरनेट एक्सप्लोरर ऑब्जेक्ट के साथ काम कर रहा हूं। क्या मौजूदा यूआरएल की प्रतिलिपि बनाने का कोई तरीका आईई प्रदर्शित कर रहा है, इसलिए मैं इसे अपने क्लिपबोर्ड के साथ कहीं और पेस्ट कर सकता हूं?विजुअल बेसिक
उत्तर
मान लिया जाये कि आप पहले से ही IE विंडो की पहचान की है, जो अपने आप में एक छोटे से अधिक जटिल है - मैं कर सकते हैं इस पर विस्तार से बता अगर जरूरत:
Dim ieIEWindow As SHDocVw.InternetExplorer
Dim sIEURL As String
'Set your IE Window
sIEURL = ieIEWindow.LocationURL
IE विंडो पाने के लिए आपको संदर्भित करने के लिए की आवश्यकता होगी Microsoft Internet Controls
लाइब्रेरी (ieframe.dll
) वीबीए संपादक में Tools
=>References...
पर जाकर और सूची से इसे चुनकर। यदि वह आइटम उपलब्ध नहीं है, तो मेरे लिए .dll फ़ाइल C:\Windows\System32\ieframe.dll
पर स्थित है।
एक बार संदर्भ सेट होने के बाद, आपको अपने कोड में तथाकथित SHDocVw
लाइब्रेरी तक पहुंच होगी।
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
ऊपर भी संशोधित किया जा सकता एक चयन के लिए अनुमति देने के लिए:
आप IE विंडो (यह मानते हुए केवल एक ही खुला) का उपयोग कर (अपरीक्षित, संशोधित/अपने ही काम कर कोड से घटाकर) निम्नलिखित प्राप्त कर सकते हैं कई खुली आईई विंडोज़ के।
+ 1 Yup यदि केवल एक विंडो खुलती है या आईई विंडो की पहचान की जाती है। –
@ सिद्धार्थ रूट मैं इस तरह के स्वचालन का दैनिक आधार पर उपयोग करता हूं और इसे पूरा करने के लिए कुछ गंदे लेकिन प्रभावी उपकरण विकसित करता हूं। (फॉर्म जो सभी उपलब्ध विंडोज़ सूचीबद्ध करता है, उपयोगकर्ता चुनता है, सत्र तब एचडब्ल्यूएनडी से बांधता है, कुछ मामलों में खिड़की अभी भी खुली है, आदि) – Gaffi
कुल :) आप अपनी पोस्ट में संशोधन करना चाहते हैं और जोड़ सकते हैं कि उपयोगकर्ता को जोड़ने की जरूरत है माइक्रोसॉफ़्ट इंटरनेट नियंत्रण के संदर्भ में? –
अरे! यह मुझे मेरे vb6 दिनों की याद दिलाता है :)
ठीक है मेरे पास यह है। यदि 1 से अधिक आईई विंडोज़ हैं तो यह अंतिम सक्रिय (वर्तमान) ले जाएगा) आईई विंडो अन्य अगर केवल एक खिड़की है तो यह ले जाएगा।
'~~> 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
नोट: मैं किसी भी त्रुटि हैंडलिंग नहीं किया है। मुझे यकीन है कि आप इसका ख्याल रख सकते हैं;)
यह मेरी विधियों से काफी अलग है! मैं कुछ बाहरी डीएल संदर्भों का उपयोग करता हूं, लेकिन केवल पृष्ठों में हेरफेर करने के लिए (यानी एकाधिक के बीच आगे और आगे कूदें)। आप 'sw.Count = 1' को कैसे संभालेंगे जब एकमात्र विंडो में एक गैर-http पथ होता है, क्योंकि एक विंडो एक मानक विंडोज फ्रेम हो सकता है (यानी' मेरा कंप्यूटर')? – Gaffi
जैसा मैंने बताया है मैंने किसी भी त्रुटि प्रबंधन को शामिल नहीं किया है। 'बाएं $ (यानी ओपनआईविंडो 'का उपयोग करना।LocationURL, 4) = "http" जैसा आपने किया है, मेरा अगला कदम होगा लेकिन मैं वास्तविक पते वाले 3 मान्य आईई विंडोज़ के साथ परीक्षण कर रहा था। :) इसे 1 से अधिक आईई विंडो के साथ आज़माएं और देखें कि आपको कौन सी यूआरएल मिलती है? –
- 1. विजुअल बेसिक
- 2. विजुअल बेसिक:
- 3. विजुअल बेसिक
- 4. विजुअल बेसिक
- 5. विजुअल बेसिक
- 6. स्लीप फ़ंक्शन विजुअल बेसिक
- 7. विजुअल बेसिक (वीबीए)
- 8. विजुअल बेसिक .NET
- 9. मुझे विजुअल बेसिक स्क्रिप्ट
- 10. विजुअल बेसिक 6.0
- 11. विजुअल बेसिक 6.0
- 12. विजुअल बेसिक ओपन यूआरएल
- 13. विजुअल बेसिक .NET
- 14. विजुअल बेसिक 6
- 15. विजुअल बेसिक में हेक्स-वैल्यू
- 16. ओपनिंग वीबीपी विजुअल बेसिक प्रोजेक्ट
- 17. विजुअल बेसिक नियमित अभिव्यक्ति प्रश्न
- 18. पूर्णांक सरणी (विजुअल बेसिक 2010)
- 19. विजुअल बेसिक 6.0 केस स्टेटमेंट
- 20. विजुअल बेसिक 6 और यूएनसी पथ
- 21. विजुअल बेसिक में बैंग बनाम डिफ़ॉल्ट संपत्ति
- 22. विजुअल बेसिक में + = मतलब क्या है?
- 23. विजुअल बेसिक 2008 में संग्रह प्रारंभिक वाक्यविन्यास?
- 24. WIX 3: विजुअल बेसिक 6 COM Dlls
- 25. विजुअल बेसिक में = = के बराबर क्या है?
- 26. गायब क्विन्स: विजुअल बेसिक (अनुप्रयोगों के लिए)
- 27. विजुअल बेसिक के साथ परिवर्तनीय तर्क सूची?
- 28. कुछ माइक्रोसॉफ्ट भाषाओं को "दृश्य" क्यों कहा जाता है? (विजुअल सी #, विजुअल बेसिक .NET, विजुअल सी ++)
- 29. विजुअल बेसिक में स्ट्रिंग स्पेस से बाहर 6
- 30. विजुअल बेसिक के लिए .NET 4.5 नई विशेषताएं क्या हैं?
यह शायद आपके से थोड़ा अधिक जटिल हो, और यह वीबी.नेट है, लेकिन यह अनुवाद योग्य होना चाहिए। उम्मीद है कि यह मदद करता है [यूआरएल प्राप्त करें] (http://www.codeproject.com/Articles/204929/Getting-current-browser-URL-with-VB-NET) –
कौन सा एप्लिकेशन? एक्सेल, एक्सेस ..? – Fionnuala
आप वर्तमान आईई के साथ कैसे जुड़े हुए हैं? यह महत्वपूर्ण है कि 1 से अधिक आईई विंडोज़ खुले हैं या नहीं। क्या आप कैप्शन के आधार पर आईई के साथ बाध्यकारी हैं? हमें और कोड दिखा रहा है वास्तव में मदद करेगा। यदि आप कोड को सभी आईई विंडोज़ से यूआरएल प्राप्त करना चाहते हैं तो आप माइक्रोसॉफ़्ट इंटरनेट कंट्रोल के लिए एक संदर्भ सेट कर सकते हैं और फिर आप 'शैलविंडोज़' का उपयोग कर सभी आईई विंडोज़ के माध्यम से लूप कर सकते हैं। एक बार जब आप विंडो प्राप्त कर लें, तो पता प्राप्त करने के लिए बस 'locationURL' का उपयोग करें। –