[ad_1]
مشكلتي الأولى هي أنني أريد أن يتم عرض الملف 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
بحث سريع في جوجل: ج # setwindowposition جهاز العرض الثانوي[^] وجدت هذا الحل التفصيلي: استخدام SetWindowPos مع شاشات متعددة – StackOverflow[^]
الحل 2
إذا قمت بنسخ ولصق الكود الخاص بك في تطبيقي (بعد تغيير التطبيق إلى Notepad لأنه لم يتم تثبيت قارئ PDF لديك) واستخدمت مصحح الأخطاء، فمن الواضح على الفور أن استدعاء WaitForInputIdle لا يعود حتى يتم إغلاق Notepad . لذا فإن الكود لا يحاول أبدًا تحريكه.
إذا استبدلت هذا الاستدعاء بـ Thread.Sleep، فسيحاول بعد ذلك نقله، ولكن قيمة MainWindowHandle هي صفر – مما يشير إلى أن العملية لا تحتوي على نافذة، أو أنها مخفية – يحدث هذا عندما يفتح التطبيق عملية فرعية للقيام بكل منها عرض مع الاحتفاظ بالرمز “الشائع” مخفيًا.
سأستخدم مصحح الأخطاء وأرى ما تقدمه لك عملية قارئ PDF بالفعل: قد يتعين عليك العثور على طريقة أخرى للوصول إلى مقبض النافذة لتحريكه – لكن لا يمكنني فعل ذلك من أجلك!
[ad_2]
コメント