コード例 #1
0
        /// <summary>
        /// Returns the number of Displays using the Win32 functions.
        /// </summary>
        /// <returns>A collection of DisplayInfo with information about each monitor.</returns>
        public static List<DisplayInfo> QueryDisplays()
        {
            // Output monitors.
            var lMonitors = new List<DisplayInfo>();

            // Get the monitors, for each one, add it to the list.
            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
                {
                    // Create a struct to contain the info and query it.
                    MonitorInfo mi = new MonitorInfo();
                    mi.Size = (uint)Marshal.SizeOf(mi);
                    mi.DeviceName = string.Empty;
                    bool bSuccess = GetMonitorInfo(hMonitor, ref mi);

                    // If it didn't fail, write the data.
                    if (bSuccess)
                    {
                        DisplayInfo di = new DisplayInfo();
                        di.ScreenWidth = mi.Monitor.Right - mi.Monitor.Left;
                        di.ScreenHeight = mi.Monitor.Bottom - mi.Monitor.Top;
                        di.MonitorArea = new Rect(mi.Monitor.Left, mi.Monitor.Top, di.ScreenWidth, di.ScreenHeight);
                        di.WorkArea = new Rect(mi.WorkArea.Left, mi.WorkArea.Top, (mi.WorkArea.Right - mi.WorkArea.Left), (mi.WorkArea.Bottom - mi.WorkArea.Top));
                        di.Availability = mi.Flags.ToString();
                        di.DeviceName = mi.DeviceName;
                        lMonitors.Add(di);
                    }
                    return true;
                }, IntPtr.Zero);
            return lMonitors;
        }
コード例 #2
0
ファイル: TestForRecordCompare.cs プロジェクト: Zocdoc/ZocMon
            public void ShouldDoNothingWhenComparisonCalculatorIsNull()
            {
                var monitorInfo = new MonitorInfo {MonitorConfig = new MonitorConfig()};

                var settings = BuildSettings();

                var compare = new RecordCompare(null, settings.Object);
                compare.CalculateComparisons("Test", monitorInfo, null, null);
            }
コード例 #3
0
        private static TestData PopulateTestData(bool populateAll)
        {
            //Define Defaults
            var defineDefaults = new Mock<ISetupMonitorConfig>();
            defineDefaults.Setup(x => x.CreateDefaultReduceLevels(It.IsAny<MonitorConfig>(), It.IsAny<List<ReduceLevel>>(), It.IsAny<IDbConnection>())).Verifiable();

            //Cache
            var monitorInfoDictionary = new ConcurrentDictionary<string, MonitorInfo>();
            var monitorConfigsDictionary = new ConcurrentDictionary<string, MonitorConfig>();

            var reductionLevel = new ReduceLevel { Resolution = 1000 };
            var monitorConfig = new MonitorConfig { Name = "Test", ReduceLevels = new List<ReduceLevel> { reductionLevel } };
            var monitorInfo = new MonitorInfo { TablesCreated = false, MonitorRecords = new List<MonitorRecord<double>> { new MonitorRecord<double>(DateTime.Now, 5) }, MonitorConfig = monitorConfig };

            monitorInfoDictionary.TryAdd("Test", monitorInfo);
            monitorConfigsDictionary.TryAdd("Test", monitorConfig);

            reductionLevel = new ReduceLevel { Resolution = 1000 };
            monitorConfig = new MonitorConfig { Name = "Jester", ReduceLevels = new List<ReduceLevel> { reductionLevel } };
            monitorInfo = new MonitorInfo { TablesCreated = false, MonitorRecords = new List<MonitorRecord<double>> { new MonitorRecord<double>(DateTime.Now, 5) }, MonitorConfig = monitorConfig };

            monitorInfoDictionary.TryAdd("Jester", monitorInfo);
            monitorConfigsDictionary.TryAdd("Jester", monitorConfig);

            var cache = new Mock<IDataCache>();
            cache.SetupGet(x => x.MonitorInfo).Returns(monitorInfoDictionary);
            cache.SetupGet(x => x.MonitorConfigs).Returns(monitorConfigsDictionary);

            //Storage
            var storage = new Mock<IStorageCommands>();
            storage.Setup(x => x.Insert(It.IsAny<string>(), It.IsAny<IEnumerable<MonitorRecord<double>>>(), It.IsAny<IDbConnection>(), It.IsAny<IDbTransaction>())).Verifiable();

            //Logic
            var logic = new Mock<IRecordFlushUpdate>();
            logic.Setup(x => x.UpdateExisting(It.IsAny<string>(), It.IsAny<SortedDictionary<long, MonitorRecord<double>>>(), It.IsAny<IDbConnection>(), It.IsAny<IDbTransaction>())).Verifiable();

            //Db Provider
            var transaction = new Mock<IDbTransaction>();
            transaction.SetupGet(x => x.IsolationLevel).Returns(IsolationLevel.Serializable).Verifiable();
            transaction.Setup(x => x.Rollback()).Verifiable();
            transaction.Setup(x => x.Commit()).Verifiable();

            var connection = new Mock<IDbConnection>();
            connection.Setup(x => x.Open()).Verifiable();
            connection.Setup(x => x.BeginTransaction()).Returns(transaction.Object).Verifiable();
            connection.Setup(x => x.BeginTransaction(It.IsAny<IsolationLevel>())).Returns(transaction.Object).Verifiable();

            var dbProviderFactory = new Mock<IStorageFactory>();
            dbProviderFactory.Setup(x => x.CreateConnection()).Returns(connection.Object).Verifiable();

            //Settings
            var settings = BuildSettings();

            return new TestData { Settings = settings, Cache = cache, DbProviderFactory = dbProviderFactory, Logic = logic, Storage = storage, Transaction = transaction, Connection = connection, DefineDefaults = defineDefaults };
        }
コード例 #4
0
ファイル: VmultiUtil.cs プロジェクト: marquinio007/Touchmote
        public static bool setCurrentMonitor(MonitorInfo monitor)
        {
            bool success = false;
            RegistryKey regKey = Registry.LocalMachine.CreateSubKey(registryPath); //Create if the key does not exist
            if (regKey != null)
            {
                string[] valueNames = regKey.GetValueNames();

                foreach (string valueName in valueNames)
                {
                    if (valueName.ToLower().Contains(vmultiDevicePathSearch))
                    {
                        Console.WriteLine("Deleting registry key for " + valueName);
                        regKey.DeleteValue(valueName);
                    }
                }
                {
                    IEnumerable<HidDevice> hidDevices = HidDevices.Enumerate();

                    string devicePath = null;

                    foreach(HidDevice device in hidDevices)
                    {
                        if(device.DevicePath.ToLower().Contains(vmultiDevicePathSearch))
                        {
                            devicePath = device.DevicePath;
                        }
                    }

                    if(devicePath != null)
                    {
                        Console.WriteLine("Creating registry key for " + devicePath + ". Setting vmulti monitor to " + monitor.DevicePath);
                        regKey.SetValue("20-" + devicePath, monitor.DevicePath, RegistryValueKind.String);
                        Settings.Default.primaryMonitor = monitor.DevicePath;
                        success = true;
                    }
                }

                if(success)
                {
                    //Disable and enable the vmulti device to force windows to update the touch monitor settings
                    Launcher.Launch("Driver", "devcon", " disable \"" + vmultiDevconSearch + "\"", new Action(delegate()
                    {
                        Launcher.Launch("Driver", "devcon", " enable \"" + vmultiDevconSearch + "\"", null);
                    }));
                }

                regKey.Close();
            }
            return success;
        }
コード例 #5
0
ファイル: NativeScreens.cs プロジェクト: whztt07/DeltaEngine
		/// <summary>
		/// Another way to use this is System.Windows.Forms.Screen.AllScreens;
		/// </summary>
		public IEnumerable<NativeRect> GetDisplayWorkAreas()
		{
			var screens = new List<NativeRect>();
			EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
				delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref NativeRect lprcMonitor, IntPtr dwData)
				{
					var monitor = new MonitorInfo();
					monitor.size = (uint)Marshal.SizeOf(monitor);
					bool success = GetMonitorInfo(hMonitor, ref monitor);
					if (success)
						screens.Add(monitor.workArea);
					return true;
				}, IntPtr.Zero);
			return screens;
		}
コード例 #6
0
ファイル: TestForRecordCompare.cs プロジェクト: Zocdoc/ZocMon
            public void ShouldRun()
            {
                var level = new ReduceLevel { Resolution = 1000 };
                var connection = new Mock<IDbConnection>().Object;

                var calculator = new Mock<IProcessingInstruction>();
                calculator.Setup(x => x.CalculateExpectedValues("Test", level, It.IsAny<IDictionary<long, MonitorRecordComparison<double>>>(), connection)).Verifiable();

                var monitorInfo = new MonitorInfo { MonitorConfig = new MonitorConfig { ComparisonCalculator = calculator.Object } };

                var settings = BuildSettings();

                var commands = new Mock<IStorageCommands>();
                commands.Setup(x => x.Insert("TestSecondlyData", It.IsAny<IEnumerable<MonitorRecord<double>>>(), connection, null));

                var compare = new RecordCompare(commands.Object, settings.Object);
                compare.CalculateComparisons("Test", monitorInfo, level, connection);

                calculator.VerifyAll();
            }
コード例 #7
0
		public void AddSlaveMonitor (ProgressMonitor slaveMonitor, MonitorAction actionMask)
		{
			MonitorInfo smon = new MonitorInfo ();
			smon.ActionMask = actionMask;
			smon.Monitor = slaveMonitor;
			monitors.Add (smon);
			if ((actionMask & MonitorAction.SlaveCancel) != 0)
				smon.CancellationTokenRegistration = slaveMonitor.CancellationToken.Register (OnSlaveCancelRequested);
		}
コード例 #8
0
        private Rect CalculatorRoiPosition(Rect processPosition, Rect capturePosition, MonitorInfo monitorInfo)
        {
            if (capturePosition.Width > processPosition.Width && capturePosition.Height > processPosition.Height)
            {
                (Application.Current.MainWindow as MetroWindow).MessageShow("Error", DocumentHelper.Get(Message.FailedInvalidateRoiCapturePosition));
                return(_dummyRect);
            }
            var correctCapturePosition = monitorInfo.Rect + capturePosition;
            var distance = processPosition - correctCapturePosition;

            return(capturePosition - distance);
        }
コード例 #9
0
 public static string GetResolution(MonitorInfo monitor)
 {
     return($"{monitor.rcMonitor.Width} X {monitor.rcMonitor.Height}");
 }
コード例 #10
0
 public static extern bool GetMonitorInfo(IntPtr monitorHandle, ref MonitorInfo monitorInfo);
コード例 #11
0
 internal static extern bool GetMonitorInfo(IntPtr hMonitor, MonitorInfo lpmi);
コード例 #12
0
ファイル: User32.cs プロジェクト: Hemlock/Pix
 public static bool GetMonitorInfo(IntPtr hmon, out MonitorInfo info)
 {
     info = new MonitorInfo();
     info.size = (uint)Marshal.SizeOf(info);
     return InternalGetMonitorInfo(hmon, ref info);
 }
コード例 #13
0
ファイル: PrintPageBase.cs プロジェクト: lypvc/Sc
 public PrintPageBase(float pageWidth, float pageHeight, float scale, Control control, MonitorInfo monitorInfo)
 {
     Init(pageWidth, pageHeight, scale, control, monitorInfo);
 }
コード例 #14
0
 public ImageViewModel(MonitorInfo monitor, ProgramSettings settings) : base(monitor, settings)
 {
 }
コード例 #15
0
ファイル: MonitorCommands.cs プロジェクト: emul8/emul8
        private void PrintMonitorInfo(string name, MonitorInfo info, ICommandInteraction writer, string lookup = null)
        {
            var ColorDefault = string.Format("\x1B[{0};{1}m", 0, 0);
            var ColorRed = string.Format("\x1B[{0};{1}m", 1, 31);
            var ColorGreen = string.Format("\x1B[{0};{1}m", 0, 32);
            var ColorYellow = string.Format("\x1B[{0};{1}m", 0, 33);

            if(info == null)
            {
                return;
            }
            if(info.Methods != null && info.Methods.Any(x => lookup == null || x.Name == lookup))
            {
                writer.WriteLine("\nFollowing methods are available:");
                var methodsOutput = new StringBuilder();

                foreach(var method in info.Methods.Where(x=> lookup == null || x.Name==lookup))
                {
                    methodsOutput.Append(" - " + ColorGreen + TypePrettyName(method.ReturnType) + ColorDefault + " " + method.Name);

                    IEnumerable<ParameterInfo> parameters;

                    if(method.IsExtension())
                    {
                        parameters = method.GetParameters().Skip(1);
                    }
                    else
                    {
                        parameters = method.GetParameters();
                    }
                    parameters = parameters.Where(x => !Attribute.IsDefined(x, typeof(AutoParameterAttribute)));

                    methodsOutput.Append(" (");

                    var lastParameter = parameters.LastOrDefault();
                    foreach(var param in parameters.Where(x=> !x.IsRetval))
                    {
                        if(param.IsOut)
                        {
                            methodsOutput.Append(ColorYellow + "out ");
                        }
                        methodsOutput.Append(ColorGreen + TypePrettyName(param.ParameterType) + ColorDefault + " " + param.Name);
                        if(param.IsOptional)
                        {
                            methodsOutput.Append(" = " + ColorRed);
                            if(param.DefaultValue == null)
                            {
                                methodsOutput.Append("null");
                            }
                            else
                            {
                                if(param.ParameterType.Name == "String")
                                {
                                    methodsOutput.Append('"');
                                }
                                methodsOutput.Append(param.DefaultValue);
                                if(param.ParameterType.Name == "String")
                                {
                                    methodsOutput.Append('"');
                                }
                            }
                            methodsOutput.Append(ColorDefault);
                        }
                        if(lastParameter != param)
                        {
                            methodsOutput.Append(", ");
                        }
                    }
                    methodsOutput.Append(")");
                    writer.WriteLine(methodsOutput.ToString());
                    methodsOutput.Clear();
                }
                writer.WriteLine(string.Format("\n\rUsage:\n\r {0} MethodName param1 param2 ...\n\r", name));
            }
         
            if(info.Properties != null && info.Properties.Any(x => lookup == null || x.Name == lookup))
            {
                writer.WriteLine("\nFollowing properties are available:");

                foreach(var property in info.Properties.Where(x=> lookup==null || x.Name==lookup))
                {
                    writer.Write(string.Format(
                        " - " + ColorGreen + "{1} " + ColorDefault + "{0}\n\r",
                        property.Name,
                        TypePrettyName(property.PropertyType)
                    ));
                    writer.Write("     available for ");
                    if(property.IsCurrentlyGettable(CurrentBindingFlags))
                    {
                        writer.Write(ColorYellow + "'get'" + ColorDefault);
                    }
                    if(property.IsCurrentlyGettable(CurrentBindingFlags) && property.IsCurrentlySettable(CurrentBindingFlags))
                    {
                        writer.Write(" and ");
                    }
                    if(property.IsCurrentlySettable(CurrentBindingFlags))
                    {
                        writer.Write(ColorYellow + "'set'" + ColorDefault);
                    }
                    writer.WriteLine();
                }
                writer.WriteLine(string.Format(
                    "\n\rUsage: \n\r - " + ColorYellow + "get" + ColorDefault + ": {0} PropertyName\n\r - " + ColorYellow + "set" + ColorDefault + ": {0} PropertyName Value\n\r",
                    name
                ));
            }

            if(info.Indexers != null && info.Indexers.Any(x => lookup == null || x.Name == lookup))
            {
                writer.WriteLine("\nFollowing indexers are available:");
                foreach(var indexer in info.Indexers.Where(x=> lookup==null || x.Name==lookup))
                {
                    var parameterFormat = new StringBuilder();
                    parameterFormat.Append(string.Format(
                        " - " + ColorGreen + "{1} " + ColorDefault + "{0}[",
                        indexer.Name,
                        TypePrettyName(indexer.PropertyType)
                    ));
                    var parameters = indexer.GetIndexParameters();
                    var lastParameter = parameters.LastOrDefault();
                    foreach(var param in parameters)
                    {

                        parameterFormat.Append(ColorGreen + TypePrettyName(param.ParameterType) + ColorDefault + " " + param.Name);
                        if(param.IsOptional)
                        {
                            parameterFormat.Append(" = " + ColorRed);
                            if(param.DefaultValue == null)
                            {
                                parameterFormat.Append("null");
                            }
                            else
                            {
                                if(param.ParameterType.Name == "String")
                                {
                                    parameterFormat.Append('"');
                                }
                                parameterFormat.Append(param.DefaultValue);
                                if(param.ParameterType.Name == "String")
                                {
                                    parameterFormat.Append('"');
                                }
                            }
                            parameterFormat.Append(ColorDefault);
                        }
                        if(lastParameter != param)
                        {
                            parameterFormat.Append(", ");
                        }
                    }
                    parameterFormat.Append(']');
                    writer.Write(parameterFormat.ToString());
                    writer.Write("     available for ");
                    if(indexer.IsCurrentlyGettable(CurrentBindingFlags))
                    {
                        writer.Write(ColorYellow + "'get'" + ColorDefault);
                    }
                    if(indexer.IsCurrentlyGettable(CurrentBindingFlags) && indexer.IsCurrentlySettable(CurrentBindingFlags))
                    {
                        writer.Write(" and ");
                    }
                    if(indexer.IsCurrentlySettable(CurrentBindingFlags))
                    {
                        writer.Write(ColorYellow + "'set'" + ColorDefault);
                    }
                    writer.WriteLine();
                }
                writer.WriteLine(string.Format(
                    "\n\rUsage: \n\r - " + ColorYellow + "get" + ColorDefault + ": {0} IndexerName [param1 param2 ...]\n\r - "
                    + ColorYellow + "set" + ColorDefault + ": {0} IndexerName [param1 param2 ... ] Value\n\r   IndexerName is optional if every indexer has the same name.",
                    name
                ));
            }

            if(info.Fields != null && info.Fields.Any(x => lookup == null || x.Name == lookup))
            {
                writer.WriteLine("\nFollowing fields are available:");

                foreach(var field in info.Fields.Where(x=> lookup==null || x.Name==lookup))
                {
                    writer.Write(string.Format(" - " + ColorGreen + "{1} " + ColorDefault + "{0}", field.Name, TypePrettyName(field.FieldType)));
                    if(field.IsLiteral || field.IsInitOnly)
                    {
                        writer.Write(" (read only)");
                    }
                    writer.WriteLine("");
                }
                writer.WriteLine(string.Format(
                    "\n\rUsage: \n\r - " + ColorYellow + "get" + ColorDefault + ": {0} fieldName\n\r - " + ColorYellow + "set" + ColorDefault + ": {0} fieldName Value\n\r",
                    name
                ));
            }
        }
コード例 #16
0
ファイル: WinApi.cs プロジェクト: GCRGCR/SSV
 static bool MonitorEnum(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
 {
     MonitorInfo mi = new MonitorInfo();
     mi.size = (uint)Marshal.SizeOf(mi);
     bool success = GetMonitorInfo(hMonitor, ref mi);
     if (mi.flags == retSearchedDisplay.uintSearchedDisplay)
     {
         retSearchedDisplay.left = mi.monitor.left;
         retSearchedDisplay.top = mi.monitor.top;
         retSearchedDisplay.right = mi.monitor.right;
         retSearchedDisplay.bottom = mi.monitor.bottom;
     }
     else if (retSearchedDisplay.top == retSearchedDisplay.bottom)
     {
         retSearchedDisplay.left = mi.monitor.left;
         retSearchedDisplay.top = mi.monitor.top;
         retSearchedDisplay.right = mi.monitor.right;
         retSearchedDisplay.bottom = mi.monitor.bottom;
     }
     return true;
 }
コード例 #17
0
        ///<summary>
        /// Checks the validity of the control values
        ///</summary>
        ///<returns></returns>
        public bool CheckValues()
        {
            bool result = true;

            errorProvider1.Clear();

            if (string.IsNullOrEmpty(tbMinValue.Text))
            {
                errorProvider1.SetError(tbMinValue, "The minimum value must be a number between 0 and 99.");
                result = false;
            }
            if (string.IsNullOrEmpty(tbSmooth.Text))
            {
                errorProvider1.SetError(tbSmooth, "The smooth value must be a number between 0 and 1.");
                result = false;
            }
            try
            {
                MonitorInfo      item             = GetEditorItem();
                ValidationResult validationResult = SettingsValidationHelper.Validate(item);
                if (!validationResult.IsValid)
                {
                    result = false;
                    foreach (KeyValuePair <string, ValidationErrorCollection> pair in validationResult)
                    {
                        switch (pair.Key)
                        {
                        case "MonitorInfo.AssemblyFileName":
                        {
                            errorProvider1.SetError(tbAssembly, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.TypeName":
                        {
                            errorProvider1.SetError(cboxMonitor, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.MinValue":
                        {
                            errorProvider1.SetError(tbMinValue, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.Key":
                        {
                            errorProvider1.SetError(tbKey, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.Smooth":
                        {
                            errorProvider1.SetError(tbSmooth, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.UpdateInterval":
                        {
                            errorProvider1.SetError(numUpdateInterval, pair.Value.ToString());
                        }
                        break;

                        case "MonitorInfo.Parameter":
                        {
                            errorProvider1.SetError(tbParameter, pair.Value.ToString());
                        }
                        break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Debug("Exception caught and discarded: " + ex.Message +
                             " at MonitorInfoEditor.CheckValues");
                errorProvider1.SetError(tbAssembly,
                                        string.Format("General conversion error ({0}).", ex.Message));
                result = false;
            }
            return(result);
        }
コード例 #18
0
 private static extern bool GetMonitorInfo(IntPtr monitor, MonitorInfo info);
コード例 #19
0
    void Create()
    {
        ResetRemoveTimer();

        // Create monitors
        var n = uDesktopDuplication.Manager.monitors.Count;

        for (int i = 0; i < n; ++i)
        {
            // Create monitor obeject
            var go = Instantiate(monitorPrefab);
            go.name = uDesktopDuplication.Manager.monitors[i].name;

            // Saved infomation
            if (savedInfoList.Count == i)
            {
                savedInfoList.Add(new SavedMonitorInfo());
                Assert.AreEqual(i, savedInfoList.Count - 1);
            }
            var savedInfo = savedInfoList[i];

            // Expand AABB
            var mesh      = go.GetComponent <MeshFilter>().mesh; // clone
            var aabbScale = mesh.bounds.size;
            aabbScale.y = Mathf.Max(aabbScale.y, aabbScale.x);
            aabbScale.z = Mathf.Max(aabbScale.z, aabbScale.x);
            mesh.bounds = new Bounds(mesh.bounds.center, aabbScale);

            // Assign monitor
            var texture = go.GetComponent <uDesktopDuplication.Texture>();
            texture.monitorId = i;
            var monitor = texture.monitor;

            // Set width / height
            float width = 1f, height = 1f;
            switch (scaleMode)
            {
            case ScaleMode.Real:
                width  = monitor.widthMeter;
                height = monitor.heightMeter;
                break;

            case ScaleMode.Fixed:
                width  = scale * (monitor.isHorizontal ? monitor.aspect : 1f);
                height = scale * (monitor.isHorizontal ? 1f : 1f / monitor.aspect);
                break;

            case ScaleMode.Pixel:
                width  = scale * (monitor.isHorizontal ? 1f : monitor.aspect) * ((float)monitor.width / 1920);
                height = scale * (monitor.isHorizontal ? 1f / monitor.aspect : 1f) * ((float)monitor.width / 1920);
                break;
            }

            width  *= savedInfo.widthScale;
            height *= savedInfo.heightScale;

            if (meshForwardDirection == MeshForwardDirection.Y)
            {
                go.transform.localScale = new Vector3(width, go.transform.localScale.y, height);
            }
            else
            {
                go.transform.localScale = new Vector3(width, height, go.transform.localScale.z);
            }

            // Set parent as this object
            go.transform.SetParent(transform);

            // Save
            var info = new MonitorInfo();
            info.gameObject         = go;
            info.originalRotation   = go.transform.rotation;
            info.originalLocalScale = go.transform.localScale;
            info.uddTexture         = texture;
            info.mesh = mesh;
            monitors.Add(info);
        }

        // Sort monitors in coordinate order
        monitors.Sort((a, b) => a.uddTexture.monitor.left - b.uddTexture.monitor.left);
    }
コード例 #20
0
ファイル: PrintPageBase.cs プロジェクト: lypvc/Sc
        public void Init(float pageWidth, float pageHeight, float scale, Control control, MonitorInfo monitorInfo)
        {
            permmWidth  = monitorInfo.permmWidth;
            permmHeight = monitorInfo.permmHeight;

            this.control  = control;
            orgPageWidth  = pageWidth;
            orgPageHeight = pageHeight;

            this.pageHeight = orgPageHeight * scale;
            this.pageWidth  = orgPageWidth * scale;
            this.scale      = scale;

            printMode = PrintDrawMode.SCREEN_MODE;
        }
コード例 #21
0
ファイル: NativeMethods.cs プロジェクト: generic-user/Quicky
 public static MonitorInfo GetMonitorInfo(IntPtr hMonitor)
 {
     var mi = new MonitorInfo();
     if (!_GetMonitorInfo(hMonitor, mi))
     {
        throw new Win32Exception(Marshal.GetLastWin32Error());
     }
     return mi;
 }
コード例 #22
0
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="DataSheet">图表对应的数据工作表</param>
            /// <param name="DrawingChart">Excel图形所在的Chart对象</param>
            /// <param name="ParentApp">此图表所在的Excel类的实例对象</param>
            /// <param name="DateSpan">此图表的TimeSpan跨度</param>
            /// <param name="type">此图表的类型,则枚举DrawingType提供</param>
            ///  <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param>
            /// <param name="date_ColNum">此测斜点的监测数据工作表中的每一天与其在工作表中对应的列号,
            /// 以监测数据的日期key索引数据所在列号item</param>
            /// <param name="usedRg">监测曲线的数据范围,此Range对象中,
            /// 包括此工作表的UsedRange中的第一列,即深度的数据;但是不包括第一行的日期数据</param>
            /// <param name="Info">记录数据信息的文本框</param>
            /// <param name="FirstSeriesTag">第一条数据系列对应的Tag信息</param>
            /// <param name="ProcessRegionData">在施工进度工作表中,每一个基坑区域相关的各种信息,比如区域名称,区域的描述,
            /// 区域数据的Range对象,区域所属的基坑ID及其ID的数据等</param>
            /// <remarks></remarks>
            public ClsDrawing_Mnt_Incline(Excel.Worksheet DataSheet, Excel.Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp,
                                          DateSpan DateSpan, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag,
                                          MntType MonitorType, Dictionary <DateTime, int> date_ColNum, Excel.Range usedRg,
                                          SeriesTag_Incline FirstSeriesTag, clsData_ProcessRegionData ProcessRegionData = null)
                : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType,
                       DateSpan, new clsDrawing_Mnt_RollingBase.SeriesTag(FirstSeriesTag.series, FirstSeriesTag.ConstructionDate))
            {
                //
                // --------------------------------------------
                try
                {
                    ClsDrawing_Mnt_Incline with_1 = this;
                    with_1.P_rgMntData = usedRg; //'包括第一列,但是不包括第一行的日期。
                    Excel.Range colRange = usedRg.Columns[1] as Excel.Range;
                    with_1.F_YValues   = ExcelFunction.ConvertRangeDataToVector <Single>(colRange);
                    with_1.Information = Info;
                    with_1._ExcavationDepth_lineAndTextbox = FirstSeriesTag;
                    with_1.F_dicDateAndColumnNumber        = date_ColNum;
                    with_1.P_ProcessRegionData             = ProcessRegionData;

                    with_1._inclineTopElevaion = Project_Expo.InclineTopElevaion;
                    // ----- 集合数据的记录
                    with_1.F_DicSeries_Tag[(int)LowIndexOfObjectsInExcel.SeriesInSeriesCollection] = FirstSeriesTag;

                    // -----对图例进行更新---------
                    //Call LegendRefresh(List_HasCurve)
                }
                catch (Exception ex)
                {
                    MessageBox.Show("构造测斜曲线图出错。" + "\r\n" + ex.Message + "\r\n" +
                                    ex.TargetSite.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
コード例 #23
0
ファイル: Form1.cs プロジェクト: ThomasDhaen/DOTNET12-13
 private void button4_Click(object sender, EventArgs e)
 {
     MonitorInfo mi = new MonitorInfo();
     mi.size = (uint)Marshal.SizeOf(mi);
     MessageBox(0, mi.size.ToString() + " inch", "Size", 0);
 }
コード例 #24
0
ファイル: WindowEx.cs プロジェクト: sat1582/CODEFramework
        /// <summary>Populates the min/max info for the specified window handle</summary>
        /// <param name="hwnd">The window handle</param>
        /// <param name="lParam">Prameters</param>
        private static void WindowGetMinMaxInfo(IntPtr hwnd, IntPtr lParam)
        {
            var mmi = (MinMaxInfo) Marshal.PtrToStructure(lParam, typeof (MinMaxInfo));

            // Adjust the maximized size and position to fit the work area of the correct monitor
            const int monitorDefaultToNearest = 0x00000002;
            var monitor = MonitorFromWindow(hwnd, monitorDefaultToNearest);

            if (monitor != IntPtr.Zero)
            {
                var monitorInfo = new MonitorInfo();
                if (!GetMonitorInfo(monitor, monitorInfo)) return;
                var rcWorkArea = monitorInfo.rcWork;
                var rcMonitorArea = monitorInfo.rcMonitor;
                mmi.ptMaxPosition.X = Math.Abs(rcWorkArea.left - rcMonitorArea.left);
                mmi.ptMaxPosition.Y = Math.Abs(rcWorkArea.top - rcMonitorArea.top);
                mmi.ptMaxSize.X = Math.Max(Math.Abs(rcWorkArea.right - rcWorkArea.left), 200);
                mmi.ptMaxSize.Y = Math.Max(Math.Abs(rcWorkArea.bottom - rcWorkArea.top), 200);
            }

            Marshal.StructureToPtr(mmi, lParam, true);
        }
コード例 #25
0
	public void Init()
	{
		ScriptedObject[] tmp = GameObject.Find ("_Characters").GetComponentsInChildren<ScriptedObject>();

		Info = new List<MonitorInfo>();
		foreach( ScriptedObject item in tmp )
		{
			MonitorInfo info = new MonitorInfo();
			info.so = item;
			info.go = item.gameObject;
			info.name = info.go.name;
			info.am = info.go.GetComponent<AnimationManager>();
			info.nm = info.go.GetComponent<NavMeshAgentWrapper>();
			info.tc = info.go.GetComponent<TaskCharacter>();
			info.sm = this;
			if ( info.name != "Player")
				Info.Add(info);
		}
	}
コード例 #26
0
 internal ProcessWatcher CreateProcessWatcher(string procName, MonitorInfo info)
 => new ProcessWatcher(procName, info, this.Logger);
コード例 #27
0
		extern static int GetMonitorInfoA (IntPtr hmonitor, ref MonitorInfo info);
コード例 #28
0
ファイル: ScreenManager.cs プロジェクト: jackiejohn/iiii
 public static extern bool GetMonitorInfo(IntPtr hmon, [In, Out] MonitorInfo mi);
コード例 #29
0
ファイル: WindowEx.cs プロジェクト: sat1582/CODEFramework
 internal static extern bool GetMonitorInfo(IntPtr hMonitor, MonitorInfo lpmi);
コード例 #30
0
 public static Dictionary <string, object> ToObject(MonitorInfo mi) => new Dictionary <string, object>
 {
     ["monitor"] = ToObject(mi.Monitor),
     ["work"]    = ToObject(mi.WorkArea),
     ["flags"]   = (int)mi.Flags,
 };
コード例 #31
0
ファイル: Navigator.cs プロジェクト: pyntya/Cauldron
        internal async Task <bool> NavigateInternal <TResult>(IViewModel viewModel, Func <TResult, Task> callback1, Func <Task> callback2)
        {
            try
            {
                var viewModelType = viewModel.GetType();
                Tuple <Window, bool> windowInfo = null;

                // Check if the view model has a defined view
                var viewAttrib = viewModelType.GetCustomAttribute <ViewAttribute>(false);
                if (viewAttrib != null && viewAttrib.ViewType != null)
                {
                    // Create the view - use the activator, since we dont expect any code in the view
                    windowInfo = await this.CreateDefaultWindow(callback1, callback2, Factory.Create(viewAttrib.ViewType) as FrameworkElement, viewModel);
                }
                else if (viewAttrib != null && !string.IsNullOrEmpty(viewAttrib.ViewName))
                {
                    windowInfo = await this.CreateWindow(viewModel, callback1, callback2, viewAttrib.ViewName);
                }
                else // The viewmodel does not have a defined view... Maybe we have a data template instead
                     // If we dont have a dataTemplate... we try to find a matching FrameworkElement
                {
                    windowInfo = await this.CreateWindow(viewModel, callback1, callback2, viewModelType.Name);
                }

                var window = windowInfo.Item1;
                (viewModel as IDisposableObject).IsNotNull(x => x.Disposed += async(s, e) => await viewModel.Dispatcher.RunAsync(() => window.Close()));

                window.Closing += Window_Closing;
                window.Closed  += (s, e) => (viewModel as ICloseAwareViewModel).IsNotNull(x => x.Close());

                window.Activated += (s, e) =>
                {
                    // This only applies to windows that are not maximized
                    if (window.WindowState != WindowState.Maximized)
                    {
                        // Check if the window is visible for the user If the user has for example
                        // undocked his laptop (which means he lost a monitor) and the application
                        // was running on the secondary monitor, we can't just start the window with
                        // that configuration
                        if (!MonitorInfo.WindowIsInAnyMonitor(window.GetWindowHandle()))
                        {
                            var source        = PresentationSource.FromVisual(window);
                            var primaryBounds = MonitorInfo.PrimaryMonitorBounds;
                            window.Height = Math.Min(window.Height, primaryBounds.Height);
                            window.Width  = Math.Min(window.Width, primaryBounds.Width);

                            window.Left = Math.Max(0, (primaryBounds.Width / source.CompositionTarget.TransformToDevice.M11 / 2) - (window.Width / 2));
                            window.Top  = Math.Max(0, (primaryBounds.Height / source.CompositionTarget.TransformToDevice.M22 / 2) - (window.Height / 2));
                        }
                        else
                        {
                            // we have to make sure, that the title bar of the window is visible for
                            // the user
                            var monitorBounds = MonitorInfo.GetMonitorBounds(window.GetWindowHandle());

                            if (monitorBounds.HasValue)
                            {
                                window.Height = Math.Min(window.Height, monitorBounds.Value.Height);
                                window.Width  = Math.Min(window.Width, monitorBounds.Value.Width);
                                window.Left   = window.Left >= monitorBounds.Value.Left && window.Left <= monitorBounds.Value.Right ? window.Left : monitorBounds.Value.Left;
                                window.Top    = window.Top >= monitorBounds.Value.Top && window.Top <= monitorBounds.Value.Bottom ? window.Top : monitorBounds.Value.Top;
                            }
                            else // set the left and top to 0
                            {
                                window.Left = 0;
                                window.Top  = 0;
                            }
                        }
                    }
                };

                if (windowInfo.Item2)
                {
                    window.ShowDialog();
                }
                else
                {
                    window.Show();
                }

                return(true);
            }
            catch (XamlParseException)
            {
                throw;
            }
            catch (NullReferenceException)
            {
                throw;
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                return(false);
            }
        }
コード例 #32
0
 private static extern bool GetMonitorInfo(IntPtr hwnd, ref MonitorInfo mInfo);
コード例 #33
0
 static extern bool GetMonitorInfo(IntPtr hMonitor, ref MonitorInfo monitorInfo);
コード例 #34
0
        /// <summary>
        /// 播放命令操作
        /// </summary>
        /// <param name="tvConfig"></param>
        public void PlayOnTV(TvConfig tvConfig)
        {
            // 当布局变化时视频信息会变,清楚全部的 CameraPanelItem 信息
            if (tvConfig.LayoutInfo != null)
            {
                this.cameras = new Dictionary <int, CameraPanelItem>();
            }

            // 处理数据对象,转换为封装的 Camera 等对象
            CameraPanel cameraPanel = new CameraPanel {
                LayoutInfo = tvConfig.LayoutInfo
            };

            if (tvConfig.MonitorInfo != null)
            {
                List <int> indexs = tvConfig.MonitorInfo.Select(t => t.Index).Distinct().ToList();
                foreach (int index in indexs)
                {
                    List <MonitorInfo> monitors  = tvConfig.MonitorInfo.Where(t => t.Index == index).ToList();
                    CameraPanelItem    panelItem = new CameraPanelItem {
                        Index = index
                    };
                    if (monitors.Count > 1)
                    {
                        CameraGroup cameraGroup = new CameraGroup
                        {
                            Interval = monitors[0].TimeInterval
                        };
                        foreach (var monitor in monitors)
                        {
                            DVR dvr = new DVR()
                            {
                                IP       = monitor.Ip,
                                Port     = monitor.AdminPort,
                                UserName = monitor.User,
                                Password = monitor.PassWord,
                                Id       = monitor.Id
                            };
                            Camera camera = new Camera
                            {
                                StreamType = monitor.StreamType,
                                DVR        = dvr,
                                Number     = monitor.Channel
                            };
                            cameraGroup.Items.Add(camera);
                        }

                        panelItem.CameraGroup = cameraGroup;
                        panelItem.Flag        = monitors[0].Flag;
                        panelItem.PlayType    = PlayContentType.Group;
                    }
                    else
                    {
                        MonitorInfo monitor = monitors[0];
                        DVR         dvr     = new DVR()
                        {
                            IP       = monitor.Ip,
                            Port     = monitor.AdminPort,
                            UserName = monitor.User,
                            Password = monitor.PassWord,
                            Id       = monitor.Id
                        };

                        Camera camera = new Camera()
                        {
                            DVR        = dvr,
                            StreamType = monitor.StreamType,
                            Number     = monitor.Channel
                        };
                        panelItem.Camera   = camera;
                        panelItem.Flag     = monitor.Flag;
                        panelItem.PlayType = PlayContentType.One;

                        if (monitor.Ip == null && monitor.User == null)
                        {
                            panelItem.Flag = 0;
                        }
                    }
                    cameraPanel.Cameras.Add(panelItem);

                    if (this.cameras.ContainsKey(index))
                    {
                        this.cameras.Remove(index);
                    }
                    this.cameras.Add(index, panelItem);
                }

                // 登录各个设备,为后面播放,
                // 这里再返回赋值,因为每次都需要登录信息,否则失败
                foreach (var item2 in cameraPanel.Cameras)
                {
                    if (item2.Camera != null)
                    {
                        item2.Camera.DVR.Connection(false);
                    }
                    else if (item2.CameraGroup != null)
                    {
                        foreach (var item in item2.CameraGroup.Items)
                        {
                            item.DVR.Connection(false);
                        }
                    }
                }
            }

            this.gridVideo.SetValue(GridHelpers.CamearPanelProperty, cameraPanel);
        }
コード例 #35
0
 public SystemInformationViewModel(MonitorInfo monitor, ProgramSettings settings) : base(monitor, settings)
 {
 }
コード例 #36
0
 private static extern bool GetMonitorInfo(IntPtr hmon, ref MonitorInfo mi);
コード例 #37
0
            public bool TryRender(SpriteBuilder sb, BoxStyle style, MonitorContent content, MonitorInfo info)
            {
                Func <IContentRenderer> provider; if (TryGetValue(content.Type, out provider))

                {
                    IContentRenderer renderer = provider();
                    if (renderer is IInfoContentRenderer)
                    {
                        InfoItem item; if (info.TryGetValue(content.Type, out item))
                        {
                            (renderer as IInfoContentRenderer).Render(sb, style, content, item); return(true);
                        }
                    }
                    else
                    {
                        renderer.Render(sb, style, content); return(true);
                    }
                }
                return(false);
            }
コード例 #38
0
 public BaseViewModel(MonitorInfo monitor, ProgramSettings settings)
 {
     _monitor = monitor;
     Settings = settings;
 }
コード例 #39
0
 public GalleryViewModel(MonitorInfo monitor, ProgramSettings settings) : base(monitor, settings)
 {
 }
コード例 #40
0
 private static extern bool GetMonitorInfo(IntPtr monitorHandle, ref MonitorInfo info);
コード例 #41
0
 public static extern bool GetMonitorInfo(IntPtr hMonitor, [In, Out] MonitorInfo lpmi);
コード例 #42
0
 public static void CaptureScreen(MonitorInfo mi, string fileName)
 {
     CaptureScreen(mi).Save(fileName);
 }
コード例 #43
0
 extern static int GetMonitorInfoA(IntPtr hmonitor, ref MonitorInfo info);
コード例 #44
0
 static extern bool GetMonitorInfo(IntPtr hmon, ref MonitorInfo mi);
コード例 #45
0
        private bool MonitorEnum(IntPtr hMonitor, IntPtr hdcMonitor, ref RectStruct lprcMonitor, IntPtr dwData)
        {
            MonitorInfo mi = new MonitorInfo();
            mi.size = (uint)Marshal.SizeOf(mi);
            GetMonitorInfo(hMonitor, ref mi);

            bool isPrimary = (mi.flags == 1) ? true : false;

            Rectangle bounds = new Rectangle(mi.monitor.left, mi.monitor.top,
                mi.monitor.right - mi.monitor.left, mi.monitor.bottom - mi.monitor.top);

            Screen screen = new Screen(m_screens.Count, bounds, isPrimary);

            if (isPrimary) m_primary = m_screens.Count;

            m_screens.Add(screen);

            return true;
        }
コード例 #46
0
 private static extern bool _GetMonitorInfo(IntPtr hMonitor, [In, Out] MonitorInfo lpmi);
コード例 #47
0
		public void AddFollowerMonitor (ProgressMonitor followerMonitor, MonitorAction actionMask)
		{
			MonitorInfo smon = new MonitorInfo ();
			smon.ActionMask = actionMask;
			smon.Monitor = followerMonitor;
			monitors.Add (smon);
			if ((actionMask & MonitorAction.FollowerCancel) != 0)
				smon.CancellationTokenRegistration = followerMonitor.CancellationToken.Register (OnFollowerCancelRequested);
		}
コード例 #48
0
        private void sendLoginReply(Server.Model.ClientInfoModel model, int dekstopRow, int desktopCol)
        {
            // get server's monitor info
            List <Session.Data.SubData.MonitorInfo> monitorList = new List <MonitorInfo>();
            int desktopLeft   = 0;
            int desktopTop    = 0;
            int desktopRight  = 0;
            int desktopBottom = 0;

            foreach (WindowsHelper.MonitorInfo monitor in Utils.Windows.WindowsHelper.GetMonitorList())
            {
                if (desktopLeft > monitor.WorkArea.Left)
                {
                    desktopLeft = monitor.MonitorArea.Left;
                }

                if (desktopTop > monitor.WorkArea.Top)
                {
                    desktopTop = monitor.MonitorArea.Top;
                }

                if (desktopRight < monitor.WorkArea.Right)
                {
                    desktopRight = monitor.MonitorArea.Right;
                }

                if (desktopBottom < monitor.WorkArea.Bottom)
                {
                    desktopBottom = monitor.MonitorArea.Bottom;
                }

                monitorList.Add(new Session.Data.SubData.MonitorInfo()
                {
                    LeftPos   = monitor.MonitorArea.Left,
                    TopPos    = monitor.MonitorArea.Top,
                    RightPos  = monitor.MonitorArea.Right,
                    BottomPos = monitor.MonitorArea.Bottom
                });
            }

            // send user data to client
            UserSettingData settingData = Server.ServerDbHelper.GetInstance().GetUserSetting(model.DbUserId);

            Session.Data.ServerUserSetting userSetting = new ServerUserSetting()
            {
                UserSetting = new UserSetting()
                {
                    gridX  = settingData.gridX,
                    gridY  = settingData.gridY,
                    isSnap = settingData.isSnap,
                }
            };

            // get user's application list
            ServerApplicationStatus serverAppStatus = new ServerApplicationStatus();

            serverAppStatus.UserApplicationList = new List <ApplicationEntry>();
            foreach (ApplicationData appData in Server.ServerDbHelper.GetInstance().GetAppsWithUserId(model.DbUserId))
            {
                serverAppStatus.UserApplicationList.Add(new ApplicationEntry()
                {
                    Identifier = appData.id,
                    Name       = appData.name
                });
            }

            // get user's preset list
            ServerPresetsStatus serverPresetStatus = new ServerPresetsStatus();

            serverPresetStatus.UserPresetList = new List <PresetsEntry>();
            foreach (PresetData presetData in Server.ServerDbHelper.GetInstance().GetPresetByUserId(model.DbUserId))
            {
                List <ApplicationEntry> presetAppEntries = new List <ApplicationEntry>();
                foreach (ApplicationData appData in presetData.AppDataList)
                {
                    presetAppEntries.Add(new ApplicationEntry()
                    {
                        Identifier = appData.id,
                        Name       = appData.name
                    });
                }

                List <VncEntry> presetVncEntries = new List <VncEntry>();
                foreach (RemoteVncData vncData in presetData.VncDataList)
                {
                    presetVncEntries.Add(new VncEntry()
                    {
                        Identifier  = vncData.id,
                        DisplayName = vncData.name,
                        IpAddress   = vncData.remoteIp,
                        Port        = vncData.remotePort,
                    });
                }

                // get all vision inputs
                List <InputAttributes> allInputList = Server.ServerVisionHelper.getInstance().GetAllVisionInputsAttributes();
                List <InputAttributes> inputEntries = new List <InputAttributes>();
                foreach (VisionData inputData in presetData.InputDataList)
                {
                    inputEntries.Add(new InputAttributes()
                    {
                        InputId     = inputData.id,
                        DisplayName = allInputList.First(inputAtt => inputAtt.InputId == inputData.id).DisplayName,
                    });
                }

                serverPresetStatus.UserPresetList.Add(new PresetsEntry()
                {
                    Identifier      = presetData.Id,
                    Name            = presetData.Name,
                    ApplicationList = presetAppEntries,
                    VncList         = presetVncEntries,
                    InputList       = inputEntries,
                });
            }

            // get user's priviledge
            ServerMaintenanceStatus maintenanceStatus = new ServerMaintenanceStatus();
            GroupData groupData = Server.ServerDbHelper.GetInstance().GetGroupByUserId(model.DbUserId);

            maintenanceStatus.AllowMaintenance   = groupData.allow_maintenance;
            maintenanceStatus.AllowRemoteControl = groupData.allow_remote;

            MonitorInfo allowViewingArea = new MonitorInfo();

            if (groupData.share_full_desktop)
            {
                // same as full desktop
                allowViewingArea.LeftPos   = desktopLeft;
                allowViewingArea.TopPos    = desktopTop;
                allowViewingArea.RightPos  = desktopRight;
                allowViewingArea.BottomPos = desktopBottom;
            }
            else
            {
                // get monitor info
                MonitorData monitorData = Server.ServerDbHelper.GetInstance().GetMonitorByGroupId(groupData.id);

                allowViewingArea.LeftPos   = monitorData.Left;
                allowViewingArea.TopPos    = monitorData.Top;
                allowViewingArea.RightPos  = monitorData.Right;
                allowViewingArea.BottomPos = monitorData.Bottom;
            }

            // prepare the VNC list
            ServerVncStatus vncStatus  = new ServerVncStatus();
            List <VncEntry> vncEntries = new List <VncEntry>();

            vncStatus.UserVncList = vncEntries;
            foreach (RemoteVncData vncData in ServerDbHelper.GetInstance().GetRemoteVncList())
            {
                vncEntries.Add(new VncEntry()
                {
                    Identifier  = vncData.id,
                    DisplayName = vncData.name,
                    IpAddress   = vncData.remoteIp,
                    Port        = vncData.remotePort,
                });
            }

            ServerLoginReply reply = new ServerLoginReply()
            {
                LoginName    = model.Name,
                UserId       = model.DbUserId,
                ServerLayout = new ServerScreenInfo()
                {
                    MatrixCol          = desktopCol,
                    MatrixRow          = dekstopRow,
                    ServerMonitorsList = monitorList
                },
                // UserApplications
                UserApplications = serverAppStatus,

                // UserPresets
                UserPresets = serverPresetStatus,

                // UserMaintenance
                UserMaintenance = maintenanceStatus,

                // allowed viewing area
                ViewingArea = allowViewingArea,

                // Current vnc list
                VncStatus = vncStatus,

                // user settings
                UserSetting = userSetting,
            };

            connectionMgr.SendData(
                (int)CommandConst.MainCommandServer.UserPriviledge,
                (int)CommandConst.SubCommandServer.DisplayInfo,
                reply,
                new List <string>()
            {
                model.SocketUserId
            });


            // send Input info to client
            Session.Data.ServerInputStatus inputStatus = new Session.Data.ServerInputStatus()
            {
                InputAttributesList = Server.ServerVisionHelper.getInstance().GetAllVisionInputsAttributes(),
            };

            connectionMgr.SendData(
                (int)CommandConst.MainCommandServer.Presents,
                (int)CommandConst.SubCommandServer.VisionInput,
                inputStatus,
                new List <string>()
            {
                model.SocketUserId
            });
        }
コード例 #49
0
ファイル: User32.cs プロジェクト: Hemlock/Pix
 private static extern bool InternalGetMonitorInfo(IntPtr hmon, ref MonitorInfo monitorInfo);
コード例 #50
0
 private static extern bool GetMonitorInfo(IntPtr monitorHandle, ref MonitorInfo info);
コード例 #51
0
		public void AddSlaveMonitor (IProgressMonitor slaveMonitor, MonitorAction actionMask)
		{
			MonitorInfo smon = new MonitorInfo ();
			smon.ActionMask = actionMask;
			smon.Monitor = slaveMonitor;
			monitors.Add (smon);
			if ((actionMask & MonitorAction.SlaveCancel) != 0)
				slaveMonitor.CancelRequested += new MonitorHandler (OnSlaveCancelRequested);
		}
コード例 #52
0
 /// <summary>
 /// The HTML Help API's HtmlHelp method forces the help window to stretch across multiple monitors if it opens at a negative location (-x, -y).
 /// This method resizes the window to the work-space size of the monitor that it is in.
 /// This method must be called immediately after opening the Help window with the Help class.
 /// </summary>
 private bool AdjustHelpWindowSize()
 {
     IntPtr helpHandle = Process.GetCurrentProcess().MainWindowHandle; // get the Help window handle
     if (helpHandle == null)
     {
         return false;
     }
     MonitorInfo monitorInfo = new MonitorInfo();
     monitorInfo.cbSize = Marshal.SizeOf(monitorInfo);
     if (!GetMonitorInfo(MonitorFromWindow(helpHandle, MONITOR_DEFAULTTONEAREST), ref monitorInfo))
     {
         return false;
     }
     Rect workSize = monitorInfo.rcWork;
     return SetWindowPos(helpHandle, IntPtr.Zero, workSize.Left, workSize.Top, workSize.Right - workSize.Left, workSize.Bottom - workSize.Top, SWP_NOZORDER);
 }
コード例 #53
0
ファイル: MonitorCommands.cs プロジェクト: emul8/emul8
        public MonitorInfo GetMonitorInfo(Type device)
        {
            var info = new MonitorInfo();
            var methodsAndExtensions = new List<MethodInfo>();
            var methods = GetAvailableMethods(device);
            if(methods.Any())
            {
                methodsAndExtensions.AddRange(methods);
            }

            var properties = GetAvailableProperties(device);
            if(properties.Any())
            {
                info.Properties = properties.OrderBy(x => x.Name);
            }

            var indexers = GetAvailableIndexers(device);
            if(indexers.Any())
            {
                info.Indexers = indexers.OrderBy(x => x.Name);
            }

            var fields = GetAvailableFields(device);
            if(fields.Any())
            {
                info.Fields = fields.OrderBy(x => x.Name);
            }

            var extensions = TypeManager.Instance.GetExtensionMethods(device).Where(x => x.IsExtensionCallable()).OrderBy(x=>x.Name);
            if(extensions.Any())
            {
                methodsAndExtensions.AddRange(extensions);
            }
            if(methodsAndExtensions.Any())
            {
                info.Methods = methodsAndExtensions.OrderBy(x => x.Name);
            }
            return info;
        }
コード例 #54
0
ファイル: MonitorWin32.cs プロジェクト: Mpdreamz/awem
 public static extern bool GetMonitorInfo(IntPtr hMonitor, ref MonitorInfo lpmi);
コード例 #55
0
		public override Xwt.Rectangle GetUsableMonitorGeometry (int screenNumber, int monitor_id)
		{
			var screen = Gdk.Display.Default.GetScreen (screenNumber);
			Gdk.Rectangle geometry = screen.GetMonitorGeometry (monitor_id);
			List<MonitorInfo> screens = new List<MonitorInfo> ();

			EnumDisplayMonitors (IntPtr.Zero, IntPtr.Zero, delegate (IntPtr hmonitor, IntPtr hdc, IntPtr prect, IntPtr user_data) {
				var info = new MonitorInfo ();

				info.Size = Marshal.SizeOf (info);

				GetMonitorInfoA (hmonitor, ref info);

				// In order to keep the order the same as Gtk, we need to put the primary monitor at the beginning.
				if ((info.Flags & MonitorInfoFlagsPrimary) != 0)
					screens.Insert (0, info);
				else
					screens.Add (info);

				return 1;
			}, IntPtr.Zero);

			MonitorInfo monitor = screens[monitor_id];
			Rect visible = monitor.VisibleFrame;
			Rect frame = monitor.Frame;

			// Rebase the VisibleFrame off of Gtk's idea of this monitor's geometry (since they use different coordinate systems)
			int x = geometry.X + (visible.Left - frame.Left);
			int width = visible.Width;

			int y = geometry.Y + (visible.Top - frame.Top);
			int height = visible.Height;

			return new Xwt.Rectangle (x, y, width, height);
		}
コード例 #56
0
ファイル: Display.cs プロジェクト: Skrylar/Allegro5Net
 public static extern bool al_get_monitor_info(int adapter, MonitorInfo *info);