मैं विज़ुअल स्टूडियो C# में एकाधिक स्क्रीन (सेकेंडरी स्क्रीन) पर *.pdf फ़ाइल देखना चाहता हूँ। ऐसा नहीं हो रहा है.


मेरी पहली समस्या यह है कि, मैं चाहता हूं कि बटन दबाए जाने पर संबंधित निर्देशिका में E:\GG\dosya3.pdf फ़ाइल एकाधिक स्क्रीन (द्वितीयक स्क्रीन) पर प्रदर्शित हो। यह प्राथमिक स्क्रीन पर दिखाई देता है. सेकेंडरी स्क्रीन पर कोई डिस्प्ले नहीं है.

मेरी दूसरी समस्या यह है कि मैं एक बटन दबाने पर प्राथमिक स्क्रीन पर, एक बटन दबाने पर दूसरी स्क्रीन पर और एक बटन दबाने पर दोनों स्क्रीन (प्राथमिक और द्वितीयक) पर एक छवि प्राप्त करना चाहता हूं। अगर आप मदद करेंगे तो मुझे खुशी होगी.

मैंने क्या प्रयास किया है:

सी#
private void button8_Click(object sender, EventArgs e)
{
	Process p = new Process();
	p.EnableRaisingEvents = true;
	p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
	p.StartInfo.CreateNoWindow = true;
	p.StartInfo.FileName = @"C:\Program Files (x86)\Foxit Software\
        Foxit PDF Reader\FoxitPDFReader.exe";
	p.StartInfo.Arguments = @"E:\GG\dosya3.pdf";
	p.StartInfo.UseShellExecute = false;
	p.Start();
	p.WaitForInputIdle();
	Rectangle secondmonitor = Screen.AllScreens[1].WorkingArea;
	SetWindowPos(p.MainWindowHandle, 0,
                 secondmonitor.Left, secondmonitor.Top,
                 secondmonitor.Width, secondmonitor.Height, 0);
}

समाधान 1

समाधान 2

यदि मैं आपके कोड को अपने ऐप में कॉपी करता हूं (ऐप को नोटपैड में बदलने के बाद क्योंकि मेरे पास आपका पीडीएफ रीडर इंस्टॉल नहीं है) और डीबगर का उपयोग करता हूं, तो यह तुरंत स्पष्ट हो जाता है कि नोटपैड बंद होने तक waitForInputIdle पर कॉल वापस नहीं आती है . इसलिए कोड कभी भी इसे स्थानांतरित करने का प्रयास नहीं करता है।

यदि मैं उस कॉल को थ्रेड.स्लीप से बदल देता हूं, तो यह इसे स्थानांतरित करने का प्रयास करता है, लेकिन मेनविंडोहैंडल शून्य है – यह दर्शाता है कि प्रक्रिया में कोई विंडो नहीं है, या यह छिपी हुई है – ऐसा तब होता है जब कोई ऐप प्रत्येक को करने के लिए एक उप प्रक्रिया खोलता है “सामान्य” कोड को छिपाकर रखते हुए प्रदर्शित करें।

मैं डिबगर का उपयोग करूंगा और देखूंगा कि पीडीएफ रीडर प्रक्रिया वास्तव में आपको क्या दे रही है: इसे स्थानांतरित करने के लिए आपको विंडो हैंडल तक पहुंच प्राप्त करने का दूसरा तरीका ढूंढना पड़ सकता है – लेकिन मैं आपके लिए ऐसा नहीं कर सकता!

コメント

タイトルとURLをコピーしました