संभव डुप्लिकेट:
How do I send ctrl+c to a process in c#?सी #: प्रक्रिया के साथ शुरू कंसोल प्रोग्राम को ctrl + c भेजें। स्टार्ट()?
मैं समझ नहीं एक बाहरी प्रोग्राम के लिए भेजने से Ctrl +सी अनुकरण करने के लिए कैसे। जब मैं सीएमडी के माध्यम से मैन्युअल रूप से प्रोग्राम चलाता हूं, जब मैं Ctrl + c दबाता हूं तो यह निरस्त हो जाएगा और मुझसे पूछेगा कि क्या मैं इसे पूरी तरह से बंद करने से पहले सहेजना चाहता हूं। मैं इसे सी # के माध्यम से अनुकरण करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है।
// Create new process object
process = new Process();
// Setup event handlers
process.EnableRaisingEvents = true;
process.OutputDataReceived += OutputDataReceivedEvent;
process.ErrorDataReceived += ErrorDataReceivedEvent;
process.Exited += ProgramExitedEvent;
// Setup start info
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = ExePath,
UseShellExecute = false, // Must be false to redirect IO
RedirectStandardOutput = false,
RedirectStandardError = false,
RedirectStandardInput = true,
Arguments = arguments
};
process.StartInfo = psi;
// Start the program
process.Start();
process.StandardInput.Write("\x3"); // 0x3 is Ctrl+C according to ASCII table
कार्यक्रम इस का जवाब नहीं है और सिर्फ जारी है:
यह अब मैं क्या कर रहा हूँ है। समस्या है जब Ctrl +ग कंसोल में कर रही है कि Windows वास्तव में इनपुट स्ट्रीम में Ctrl +सी नहीं भेजता है एक भेजता है प्रक्रिया के लिए "बीच में" है, लेकिन इसके बजाय? मैंने सोचा कि इनपुट स्ट्रीम में "\ x3" भेजना वास्तव में विंडोज़ करता है जब कोई Ctrl + सी कंसोल में दबाता है। क्या मै गलत हु?
आपका कंसोल शायद '^ सी' को पकड़ रहा है और कार्यक्रम के लिए किसी प्रकार का संकेत भेज रहा है। आपको उस व्यवहार का अनुकरण करने की आवश्यकता है; यूनिक्स सिस्टम पर यह 'सिगिन' होगा, मुझे विंडोज़ के बारे में इतना कुछ पता नहीं है, मुझे डर है। –
यह मेरे सिद्धांतों में से एक है। मुझे नहीं पता कि विंडोज पर सीएमडी मेरे प्रोग्राम को भेज रहा है (यदि यह ctrl + c नहीं है)। – johnrl