Je souhaite afficher le fichier *.pdf sur plusieurs écrans (écran secondaire) dans Visual Studio C#. Cela n’arrive pas.

la programmation


Mon premier problème est que je souhaite que le fichier E:\GG\dosya3.pdf dans le répertoire concerné soit affiché sur plusieurs écrans (écran secondaire) lorsque le bouton est enfoncé. Il apparaît sur l’écran principal. Il n’y a pas d’affichage sur l’écran secondaire.

Mon deuxième problème est que je souhaite obtenir une image sur l’écran principal lorsqu’un bouton est enfoncé, sur le deuxième écran lorsqu’un bouton est enfoncé et sur les deux écrans (primaire et secondaire) lorsqu’un bouton est enfoncé. Je serais heureux si vous m’aidiez.

Ce que j’ai essayé :

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

Solution 1

Une recherche rapide sur Google : c# setwindowposition moniteur secondaire[^] trouvé cette solution détaillée: Utilisation de SetWindowPos avec plusieurs moniteurs[^]

Solution 2

Si je copie et colle votre code dans mon application (après avoir changé l’application en Bloc-notes car je n’ai pas installé votre lecteur PDF) et que j’utilise le débogueur, il est immédiatement évident que l’appel à WaitForInputIdle ne revient que lorsque le Bloc-notes est fermé. . Le code n’essaye donc jamais de le déplacer.

Si je remplace cet appel par Thread.Sleep, il essaie ensuite de le déplacer, mais MainWindowHandle est un zéro – indiquant que le processus n’a pas de fenêtre ou qu’il est masqué – cela se produit lorsqu’une application ouvre un sous-processus pour faire chacun afficher tout en gardant un code “commun” caché.

J’utiliserais le débogueur et verrais ce que le processus de lecture PDF vous donne réellement : vous devrez peut-être trouver un autre moyen d’accéder au handle de la fenêtre afin de le déplacer – mais je ne peux pas le faire à votre place !

コメント

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