2015-07-14 3 views
5

मेरी कंपनी शेयरपॉइंट और एडीएफएस का उपयोग कर रही है। वेबडाव के उपयोग के लिए हालांकि हमें उपयोगकर्ताओं को कुछ टोकन प्राप्त करने की आवश्यकता है, जिन्हें वे केवल इंटरनेट एक्सप्लोरर खोलकर प्राप्त करते हैं और दो साइटों पर नेविगेट करते हैं। हालांकि वे हर ~ 30 मिनट टोकन खो देंगे, इसलिए इसे एक आवर्ती कार्य होना चाहिए। छिपा इंटरनेट एक्सप्लोरर

  • हर 30 मिनट
  • उपयोगकर्ता परेशान मत करो
  • मेरे वर्तमान समाधान "इस किस्म की" है आईई साथ

    • ओपन 2 वेबसाइटें:

      तो अब मेरा काम करने के लिए है काम कर रहा हूं लेकिन मैं इससे संतुष्ट नहीं हूं। मेरे पास केवल VSExpress है इसलिए कोई सेवाएं नहीं।

      मेरे पास एक न्यूनतम अधिकतम अस्पष्टता दिखाई देने वाला झूठा विंडोज फॉर्म है। मेरे पास एक जीपीओ है जो कंप्यूटर पर एक EXE फ़ाइल कॉपी करता है और उसके बाद एक टाइम जॉब बनाता है जो लॉगिन के बाद हर 30 मिनट में शुरू होता है। हालांकि यह वास्तव में काम नहीं कर रहा है, अगर वे EXE मैन्युअल रूप से नहीं चलाते हैं तो लोगों को अभी भी वेबडैव तक पहुंचने में परेशानी है। । इसके अलावा जब भी EXE वर्तमान आवेदन उपयोगकर्ता में काम कर रहा है ध्यान केंद्रित खो देता है जो थोड़े परेशान है जब आप कुछ लिख रहे हैं और वापस क्लिक करना चल रहा है मेरे वर्तमान कोड इस तरह देख रहा है:

      private void Form1_Load(object sender, EventArgs e) 
          { 
           MainMethod(); 
          } 
          private void MainMethod() 
          { 
           RegistryKey root = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes\InternetExplorer.ApplicationMedium\CLSID", false); 
           if (root!=null) 
           { 
            opensite(); 
            Application.Exit(); 
           } 
          } 
          private void opensite() 
          { 
           try 
           { 
            SHDocVw.InternetExplorer _ie1 = (SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium")); 
            SHDocVw.InternetExplorer _ie2 = (SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium")); 
            _ie1.Visible = false; 
            _ie2.Visible = false; 
            _ie1.Navigate("SITENAME1.html"); 
            _ie2.Navigate("SITENAME2.html"); 
            System.Threading.Thread.Sleep(10000); 
            _ie1.Quit(); 
            _ie2.Quit(); 
           } 
           catch(Exception e) 
           { 
           } 
          } 
      

      हालांकि, मुझे लगता है कि ऐसा करने के लिए एक और अधिक शानदार तरीका है। मैंने सुना है एक छिपे हुए IE खोलने के लिए एक ही रास्ता के माध्यम से

      (SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium"));

      है लेकिन इस के साथ मैं रजिस्ट्री कुंजी जो नहीं सभी ग्राहकों है पर निर्भर हैं।

      क्या आप आईई को विश्वसनीय तरीके से खोलने में मेरी सहायता कर सकते हैं और शायद कुछ 30 मिनट शुरू करने के लिए आवर्ती कार्य को कैसे सेट करना चाहिए (क्योंकि मुझे लगता है कि यह सही ढंग से यह नहीं कर रहा है)।

      सभी को अग्रिम धन्यवाद।

      संपादित करें:

      धन्यवाद https://stackoverflow.com/users/5065008/daniel-waghorn को मैं अब साथ opensite बिट की जगह:

      private void Form1_Load(object sender, EventArgs e) 
          { 
           MainMethod(); 
          } 
          private void MainMethod() 
          { 
           openProc("SITE1.html"); 
           openProc("SITE2.html"); 
           Application.Exit(); 
          } 
      
          private void openProc(string site) 
          { 
           ProcessStartInfo startInfo = new ProcessStartInfo(); 
           string ProgramFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); 
           startInfo.FileName = ProgramFiles + @"\Internet Explorer\iexplore.exe"; 
           startInfo.Arguments = "" + site + ""; 
           startInfo.CreateNoWindow = true; 
           startInfo.ErrorDialog = false; 
           startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
           Process.Start(startInfo); 
          } 
      

      धन्यवाद फिर से!

    उत्तर

    2

    आप ProcessStartInfo का उपयोग आईई का एक नया उदाहरण बनाने के लिए कर सकते हैं:

    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.FileName = ""C:\Program Files\Internet Explorer\iexplore.exe""; 
    startInfo.Arguments = "" + url + ""; 
    startInfo.CreateNoWindow = true; 
    startInfo.ErrorDialog = false; 
    startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    Process.Start(startInfo); 
    

    यदि आप हार्ड-सह नहीं करना चाहते हैं तो आप उपयोगकर्ता की प्रोग्राम फ़ाइलें निर्देशिका पथ प्राप्त करने के लिए Environment.SpecialFolder.ProgramFiles का उपयोग कर सकते हैं डी

    मुझे यह इंगित करना होगा कि startInfo.WindowStyle इंटरनेट एक्सप्लोरर छुपाएगा, हालांकि यदि किसी भी समय आईई किसी भी कारण से उस मान को बदलने का फैसला करता है तो यह दिखा सकता है।

    आदर्श रूप से यदि आप टोकन प्राप्त करने के लिए इंटरनेट एक्सप्लोरर का उपयोग करने के लिए बंधे नहीं हैं तो एक और विकल्प उपरोक्त कोड का उपयोग करना होगा, लेकिन cURL या कुछ समान लक्ष्य। इसके साथ यह कमांड लाइन में चलेगा, जिसे आप startInfo.CreateNoWindow के साथ फोकस दिखाने या चोरी करने की गारंटी दे सकते हैं।

    +0

    यह थोड़ी सी है जो मैं खोज रहा था, हालांकि मैं अभी भी 'startInfo.FileName = @ "% ProgramFiles% \ Internet Explorer \ iexplore.exe" में समस्या चलाता हूं; ' वह इसे ' "% प्रोग्रामफाइल% \\ इंटरनेट एक्सप्लोरर \\ iexplore.exe" ' पर बना रहा है लेकिन उसे फ़ाइल नहीं मिल रही है। हालांकि '@" सी: \ प्रोग्राम फ़ाइलें \ इंटरनेट एक्सप्लोरर \ iexplore.exe "' काम करता है ... – Asharon

    +1

    क्षमा करें ऐसा लगता है कि 'ProcessStartInfo' पर्यावरण चर को सही तरीके से पार्स नहीं करता है, इसलिए यह क्यों काम नहीं करता है लेकिन आपके संस्करण के साथ काम करता है। यदि आप चाहें तो उपयोगकर्ता के प्रोग्राम फ़ाइलें फ़ोल्डर प्राप्त करने के लिए आप 'Environment.SpecialFolder.ProgramFiles' का उपयोग कर सकते हैं और इसे अपने 'फ़ाइल नाम' में जोड़ सकते हैं। –

    +0

    'निजी शून्य ओपनप्रोक (स्ट्रिंग साइट) { ProcessStartInfo startInfo = new ProcessStartInfo(); स्ट्रिंग प्रोग्रामफाइल = पर्यावरण। गेटफोल्डरपैथ (पर्यावरण। स्पेशलफोल्डर.प्रोग्रामफाइल); startInfo.FileName = ProgramFiles + @ "\ Internet Explorer \ iexplore.exe"; startInfo.Arguments = "" + साइट + ""; startInfo.CreateNoWindow = सत्य; startInfo.ErrorDialog = झूठा; startInfo.WindowStyle = ProcessWindowStyle.Hidden; प्रक्रिया। स्टार्ट (startInfo); } ' एक आकर्षण की तरह काम करता है, धन्यवाद! – Asharon

    1

    मुझे लगता है कि आप इन कड़ियों में से एक में अपने जवाब मिल जाएगा:

    Handle IE To filling a form c#

    Opening a Hidden Internet Explorer Window without it getting Focus?

    +0

    उत्तर के लिए धन्यवाद, मैं आपके द्वारा उल्लिखित पदों की जांच करूंगा। – Asharon

    +1

    मुझे आशा है कि आपको कुछ ऐसा मिल जाएगा जो आप उपयोग कर सकते हैं;) – NickGames

    संबंधित मुद्दे