Tôi muốn xem tệp *.pdf trên nhiều màn hình (màn hình phụ) trong studio trực quan C#. Nó không xảy ra.

lập trình


Vấn đề đầu tiên của tôi là tôi muốn tệp E:\GG\dosya3.pdf trong thư mục liên quan được hiển thị trên nhiều màn hình (màn hình phụ) khi nhấn nút. Nó xuất hiện trên màn hình chính. Không có hiển thị trên màn hình phụ.

Vấn đề thứ hai của tôi là tôi muốn hiển thị hình ảnh trên màn hình chính khi nhấn nút, trên màn hình thứ hai khi nhấn nút và trên cả hai màn hình (chính và phụ) khi nhấn nút. Tôi sẽ rất vui nếu bạn giúp đỡ.

Những gì tôi đã thử:

C#
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);
}

Giải pháp 1

Tìm kiếm nhanh trên Google: c# setwindowposition màn hình phụ[^] tìm thấy giải pháp chi tiết này: Sử dụng SetWindowPos với nhiều màn hình – StackOverflow[^]

Giải pháp 2

Nếu tôi sao chép và dán mã của bạn vào ứng dụng của mình (sau khi thay đổi ứng dụng thành Notepad vì tôi chưa cài đặt trình đọc PDF) và sử dụng trình gỡ lỗi, thì rõ ràng là lệnh gọi tới WaitForInputIdle sẽ không quay lại cho đến khi Notepad được đóng . Vì vậy, mã không bao giờ cố gắng di chuyển nó.

Nếu tôi thay thế cuộc gọi đó bằng Thread.Sleep thì nó sẽ cố gắng di chuyển nó, nhưng MainWindowHandle bằng 0 – cho biết quy trình không có cửa sổ hoặc bị ẩn – điều này xảy ra khi một ứng dụng mở một quy trình phụ để thực hiện mỗi quy trình hiển thị trong khi vẫn ẩn mã “chung”.

Tôi sẽ sử dụng trình gỡ lỗi và xem quy trình đọc PDF thực sự mang lại cho bạn những gì: bạn có thể phải tìm một cách khác để có quyền truy cập vào tay cầm cửa sổ để di chuyển nó – nhưng tôi không thể làm điều đó cho bạn!

コメント

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