Ik heb deze vraag reeds in de categorie Office suites gesteld, maar wellicht past de vraag toch meer hier thuis. Omdat niemand reageert op mijn vraag om het topic te verplaatsen stel ik de vraag hier maar opnieuw.
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.
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)
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?
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?