Toon posts:

Powerpoint Multiple/Dual Monitor

Pagina: 1
Acties:

Verwijderd

Topicstarter
Via een C# applicatie maak ik één of meerdere Powerpoint presentaties aan. Op het moment draaien deze allen op dezelfde monitor. Ik wil er echter voor zorgen dat presentatie1 op monitor1 draait, presentatie2 op monitor2, etc. Het is me handmatig gelukt om twee presentaties te draaien op 2 verschillende monitors door ze in windowed mode te verschuiven naar verschillende monitors. Nu wil ik dit echter in fullscreen mode doen en via c# code.

Via de onderstaande code is het me reeds gelukt om de applicatie te verschuiven naar een andere monitor.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Win32
    {
        [DllImport("user32.dll", EntryPoint = "SetWindowPos")]
        public static extern bool SetWindowPos(
           int hWnd,               // window handle
           int hWndInsertAfter,    // placement-order handle
           int X,                  // horizontal position
           int Y,                  // vertical position
           int cx,                 // width
           int cy,                 // height
           uint uFlags);           // window positioning flags
        public const int HWND_BOTTOM = 0x1;
        public const uint SWP_NOSIZE = 0x1;
        public const uint SWP_NOMOVE = 0x2;
        public const uint SWP_SHOWWINDOW = 0x40;
        public const uint SWP_ASYNCWINDOWPOS = 0x40;

        [DllImport("user32.dll")]
        public static extern int FindWindow(
            string lpClassName, // class name 
            string lpWindowName // window name 
        ); 
    }

Win32.SetWindowPos
(
    Win32.FindWindow("screenClass", null)
   ,0
   ,1440
   ,0
   ,0
   ,0
   ,Win32.SWP_SHOWWINDOW | Win32.SWP_NOSIZE | Win32.SWP_NOMOVE
);


Hierbij wordt echter de gehele applicatie naar de andere monitor verplaatst en ik wil enkel een specifieke presentatie (waarvan er meerdere per applicatie zijn) naar een bepaalde monitor verplaatsen.

Nog een ander stukje code dat ik heb gevonden om de aangesloten schermen te detecteren en een form naar een ander scherm te verplaatsen. (In geval van meer dan monitors een beetje rare code, maar het is slechts ter illustratie)
code:
1
2
3
4
5
6
7
8
foreach (Screen screen in Screen.AllScreens)
{
    if (screen.Primary)
        MessageBox.Show("primary");
    else
        form1.Location = screen.WorkingArea.Location;
    }
}


In het geval van het eerste codevoorbeeld lukt het me niet om een windowhandle van een presentatie te krijgen en in het geval van het tweede voorbeeld kan ik geen location toekennen aan een presentatie.

Heeft iemand enig idee of en hoe het mogelijk gemaakt zou kunnen worden?

Verwijderd

Topicstarter
Bij nader inzien is dit topic wellicht wat meer op z'n plaats in de Programming categorie. Kan de moderator dit verplaatsen?

Verwijderd

Topicstarter
Schop :+