示例#1
0
        private void SetupMonitors()
        {
            IntPtr hMonitor       = NativeCalls.MonitorFromWindow(hWnd, NativeConstants.MONITOR_DEFAULTTOPRIMARY);
            int    lastWin32Error = Marshal.GetLastWin32Error();

            bool numberOfPhysicalMonitorsFromHmonitor = NativeCalls.GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, ref pdwNumberOfPhysicalMonitors);

            lastWin32Error = Marshal.GetLastWin32Error();

            pPhysicalMonitorArray = new NativeStructures.PHYSICAL_MONITOR[pdwNumberOfPhysicalMonitors];
            bool physicalMonitorsFromHmonitor = NativeCalls.GetPhysicalMonitorsFromHMONITOR(hMonitor, pdwNumberOfPhysicalMonitors, pPhysicalMonitorArray);

            lastWin32Error = Marshal.GetLastWin32Error();
        }
        private static bool Callb(IntPtr hMonitor, IntPtr hDC, ref NativeStructures.Rect prect, int d)
        {
            //monitors.Add(hMonitor);
            int  lastWin32Error;
            uint pdwNumberOfPhysicalMonitors          = 0;
            bool numberOfPhysicalMonitorsFromHmonitor = NativeCalls.GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, ref pdwNumberOfPhysicalMonitors);

            lastWin32Error = Marshal.GetLastWin32Error();

            var  pPhysicalMonitorArray        = new NativeStructures.PHYSICAL_MONITOR[pdwNumberOfPhysicalMonitors];
            bool physicalMonitorsFromHmonitor = NativeCalls.GetPhysicalMonitorsFromHMONITOR(hMonitor, pdwNumberOfPhysicalMonitors, pPhysicalMonitorArray);

            lastWin32Error = Marshal.GetLastWin32Error();

            monitors.Add(pPhysicalMonitorArray[0].hPhysicalMonitor);

            Console.WriteLine($"Handle: 0x{hMonitor:X}, Num: {pdwNumberOfPhysicalMonitors}, Physical: {pPhysicalMonitorArray[0].hPhysicalMonitor}");

            //GetMonitorCapabilities((int)monCount);
            return(++monCount > 0);
        }