2012-12-30 35 views
5

मेरी जावा आवेदन में मैंमेरा जावा एप्लिकेशन सफलतापूर्वक विंडोज एक्सप्लोरर क्यों बंद करता है, लेकिन फिर से इसे पुनरारंभ करने में विफल रहता है?

Runtime.getRuntime().exec("taskkill /F /IM " + explorer.exe).waitFor(); 

का उपयोग Windows Explorer बंद हुआ। यह हिस्सा काम करता है क्योंकि एक्सप्लोरर वास्तव में मेरे लिए काम करना बंद कर देता है।

दुर्भाग्य से, जब मैं का उपयोग

Runtime.getRuntime().exec("explorer.exe"); 

Windows Explorer बिल्कुल पुनः आरंभ नहीं करता है। मुझे इसे ठीक से कैसे पुनरारंभ करना चाहिए?

+9

हत्याक खोजकर्ता बेहद परेशान है। तुम ऐसा क्यों करना चाहते हो। – SLaks

+0

क्योंकि मैं एक लॉगिन करना चाहता हूं जो उपयोगकर्ता द्वारा अनदेखा करना असंभव है। यदि एक्सप्लोरर चल रहा है तो कीबोर्ड पर विंडोज बटन का उपयोग करना आसान है। – tb96

+2

किलिंग एक्सप्लोरर ऐसा करने का गलत तरीका है। वास्तव में काम करने के तरीके हैं, लेकिन आप वास्तव में उन्हें जावा में नहीं कर सकते हैं। – SLaks

उत्तर

1

मुझे यह नहीं पता कि यह आपके लिए क्यों काम नहीं कर रहा है, क्योंकि आप जावा से बाहरी कार्यक्रम निष्पादित कर रहे हैं, मुझे लगता है कि यह जावा की गलती नहीं है कि यह पुनरारंभ नहीं हो रहा है, शायद रास्ते में कुछ गड़बड़ है आप पुनरारंभ करें

इसके बजाय Runtime.exec() का उपयोग करने का

, प्रक्रिया शुरू करने के लिए कोशिश करते हैं और ProcessBuilder.start() प्रक्रिया को मारने के लिए वर्ग Process से विधि destroy() का उपयोग करें: मैं तुम्हें एक विकल्प दे देंगे। यह ठीक काम करना चाहिए, केवल ऑब्जेक्ट बनाने के लिए बिल्डर का उपयोग करें जो एक्सप्लोरर का प्रतिनिधित्व करता है और इसे Process प्रकार के चर के लिए असाइन करें।

एकमात्र कारण मुझे लगता है कि यदि आप प्रोसेसबिल्डर का उपयोग करते हैं तो यह आसान है क्योंकि यह अलग स्ट्रिंग्स के रूप में तर्क लेता है, और हो सकता है कि यह आपकी स्क्रिप्ट को कॉन्फ़िगर करना आसान बनाता है।

उदाहरण:

List<String> params = java.util.Arrays.asList("C:\myProgram.exe", "-arg1", "-arg2"); 
ProcessBuilder pb = new ProcessBuilder(params); 
Process process = pb.start(); 

यह एक कोशिश मुझे लगता है कि यह काम करना चाहिए दे।

0

मुझे लगता है कि समस्या के बाद समस्या है [explorer.exe] आप एक नया रनटाइम वातावरण पुनर्प्राप्त नहीं कर सकते हैं। मेरे लिए क्या काम किया गया था रनटाइम पर्यावरण का पुन: उपयोग करना था जिसे मैं [explorer.exe] मारने के लिए उपयोग करता था। मुझे जावा (टीएम) के भीतर से कुछ सिस्टम संसाधनों को संपादित करने में सक्षम होने के लिए यह उपयोगी पाया गया।

public class KillRestart { 
    public static void main (String [] args) { 
     Runtime runtime = Runtime.getRuntime(); 

     try { 
     System.out.println ("Killing Explorer.exe process ... "); 
     runtime.exec ("taskkill /F /IM explorer.exe /T").waitFor(); 

     // Do something wild like update system resources 

     System.out.println ("Resurrecting Explorer ..."); 
     runtime.exec ("explorer.exe"); 
     } 
     catch (InterruptedException e) { 
     e.printStackTrace(); 
     } 
     catch (IOException e) { 
     e.printStackTrace(); 
     } 
    } 
} 

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

  • कोई संबंधित समस्या नहीं^_^