Quiero ver el archivo *.pdf en varias pantallas (pantalla secundaria) en Visual Studio C#. No está sucediendo.

programación


Mi primer problema es que quiero que el archivo E:\GG\dosya3.pdf en el directorio correspondiente se muestre en varias pantallas (pantalla secundaria) cuando se presiona el botón. Aparece en la pantalla principal. No hay ninguna visualización en la pantalla secundaria.

Mi segundo problema es que quiero obtener una imagen en la pantalla principal cuando se presiona un botón, en la segunda pantalla cuando se presiona un botón y en ambas pantallas (primaria y secundaria) cuando se presiona un botón. Estaría feliz si me ayudaras.

Lo que he probado:

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

Solución 1

Una búsqueda rápida en Google: c# setwindowposition monitor secundario[^] Encontré esta solución detallada: Usando SetWindowPos con múltiples monitores – StackOverflow[^]

Solución 2

Si copio y pego su código en mi aplicación (después de cambiar la aplicación al Bloc de notas porque no tengo instalado el lector de PDF) y uso el depurador, es inmediatamente obvio que la llamada a WaitForInputIdle no regresa hasta que se cierra el Bloc de notas. . Entonces el código nunca intenta moverlo.

Si reemplazo esa llamada con Thread.Sleep, intenta moverlo, pero MainWindowHandle es un cero, lo que indica que el proceso no tiene una ventana o está oculto; esto sucede cuando una aplicación abre un subproceso para realizar cada mostrar mientras se mantiene oculto un código “común”.

Usaría el depurador y vería lo que realmente le ofrece el proceso del lector de PDF: es posible que tenga que encontrar otra forma de acceder al identificador de la ventana para poder moverla, ¡pero no puedo hacerlo por usted!

コメント

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