मैं WCF web services
बना रहा हूं जो automatea internet explorer
है। कई वेब सेवा कॉल हैं जिन्हें Internet Explorer
के उसी उदाहरण तक पहुंचने की आवश्यकता है। हालांकि, WCF
सेवाओं को IIS
पर होस्ट किया गया है, इसलिए वेब सेवा के लिए सभी कॉल सत्र 0 में निष्पादित की जाती हैं। Internet Explorer
के उसी उदाहरण तक पहुंचने के लिए मैं SHDocVw.InternetExplorer.HWND
प्रॉपर्टी का उपयोग करता हूं जो Internet Explorer
इंस्टेंस के विंडो हैंडल को लौटाता है। IIS 7
पर WCF
सेवा के रूप में निष्पादित किए जाने पर नीचे कोड में विंडो 0 अलगाव के कारण विंडो हैंडल हमेशा 0 लौटाते हैं। साथ ही, मैं सभी खुले IE
विंडोज़ के माध्यम से उसी IE
इंस्टेंस या लूप पर वापस हुक नहीं कर पा रहा हूं। मैं प्रक्रिया सूची का आकलन कर सकता हूं और सत्र 0 में प्रत्येक IE
विंडो के लिए प्रक्रिया आईडी ढूंढ सकता हूं, लेकिन System.Diagnostics.Process
SHDocVw.InternetExplorer
ऑब्जेक्ट को नहीं डाला जा सकता।सत्र 0 में चल रहे इंटरनेट एक्सप्लोरर विंडो को विशिष्ट रूप से कैसे पहचानें?
public int GetWhd()
{
InternetExplorer ie = new InternetExplorer();
ie.Visible = true;
return ie.HWND;
}
public int SetWhd(string whd)
{
int wh = Int32.Parse(whd);
InternetExplorer ie = null;
ShellWindows s = new ShellWindows();
foreach (SHDocVw.InternetExplorer ie1 in s)
{
try
{
if (ie1.HWND == wh)
{
ie = ie1;
break;
}
}
catch { return 2; }
}
if (ie != null) { ie.Navigate("www.google.com"); return 1; }
return 0;
}
किसी भी मदद की बहुत सराहना की जाएगी:
नीचे मेरी कोड है।
पर एक नज़र मुझे लगता है कि आपकी समस्या का एकमात्र समाधान एक उपग्रह प्रक्रिया है जो इंटरनेट एक्सप्लोरर के रूप में एक ही सत्र में चलाता है बनाने के लिए है ले लो। फिर अपनी वेब सेवा से सीधे इंटरनेट एक्सप्लोरर को नियंत्रित करने की कोशिश करने के बजाय कुछ इंटर-प्रोसेस संचार तंत्र (जैसे नामित पाइप, डब्ल्यूसीएफ या नेट रीमोटिंग) का उपयोग अपनी उपग्रह प्रक्रिया में नियंत्रण आदेश भेजने के लिए करें, जो तब आपकी वेब सेवा की ओर से नियंत्रित करता है । आपको अपनी वेब सेवा और आपकी उपग्रह प्रक्रिया के बीच संचार को भी सुरक्षित रखना चाहिए, खासकर यदि आपकी उपग्रह प्रक्रिया लॉग ऑन उपयोगकर्ता की तुलना में उच्च विशेषाधिकारों के साथ चलती है। – Hans
इसके बजाय [WebDriver] (https://code.google.com/p/selenium/wiki/InternetExplorerDriver) का उपयोग करने पर विचार करें। – Aron
धन्यवाद @ हंस .. मैंने आपके दृष्टिकोण (नामित पाइप का उपयोग करके) के आधार पर कुछ परीक्षण चलाए और यह बहुत अच्छी तरह से काम करता है। आपकी सहायताके लिए धन्यवाद! – Neville