예제 #1
0
        private MLResult InternalGetScreensInfo(out List <MLScreensScreenInfo> info)
        {
            info = new List <MLScreensScreenInfo>();
            _screenInfoList.Initialize();
            MLResult.Code resultCode = MLScreensNativeBindings.MLScreensGetScreenInfoListEx(ref _screenInfoList);
            var           result     = MLResult.Create(resultCode);

            if (!result.IsOk)
            {
                return(result);
            }

            long screensArrayAddress = _screenInfoList.Entries.ToInt64();

            for (var i = 0; i < _screenInfoList.Count; ++i)
            {
                long entryAddress = screensArrayAddress +
                                    i * Marshal.SizeOf(typeof(MLScreensNativeBindings.MLScreensScreenInfoExNative));
                var entryPtr    = new IntPtr(entryAddress);
                var entryNative = (MLScreensNativeBindings.MLScreensScreenInfoExNative)Marshal.PtrToStructure(entryPtr,
                                                                                                              typeof(MLScreensNativeBindings.MLScreensScreenInfoExNative));
                MLScreensScreenInfo entry = entryNative.Data;
                info.Add(entry);
            }
            resultCode = MLScreensNativeBindings.MLScreensReleaseScreenInfoListEx(ref _screenInfoList);
            result     = MLResult.Create(resultCode);
            return(result);
        }
예제 #2
0
        private MLResult InternalUpdateScreenInfo(MLScreensScreenInfo info)
        {
            MLScreensNativeBindings.MLScreensScreenInfoExNative nativeScreenInfo = MLScreensNativeBindings.MLScreensScreenInfoExNative.Create();
            nativeScreenInfo.Data = info;

            MLResult.Code resultCode = MLScreensNativeBindings.MLScreensUpdateScreenInfo(ref nativeScreenInfo);
            var           result     = MLResult.Create(resultCode);

            return(result);
        }
예제 #3
0
        private MLResult InternalGetScreensInfo(ulong id, out MLScreensScreenInfo screenInfo)
        {
            var screenNative = MLScreensNativeBindings.MLScreensScreenInfoExNative.Create();

            MLResult.Code resultCode = MLScreensNativeBindings.MLScreensGetScreenInfo(id, ref screenNative);
            var           result     = MLResult.Create(resultCode);

            if (!result.IsOk)
            {
                screenInfo = new MLScreensScreenInfo();
                return(result);
            }
            else
            {
                screenInfo = screenNative.Data;
            }

            return(result);
        }
예제 #4
0
 /// <summary>
 /// Updates screen info.
 /// Only the screen this app was launched from is a valid one.
 /// </summary>
 /// <param name="screenInfo"/>
 /// <returns>
 /// MLResult.Result will be MLResult.Code.Ok if successful.
 ///
 /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter.
 ///
 /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error.
 ///
 /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service.
 ///
 /// MLResult.Result will be MLResult.Code.PrivilegeDenied if necessary privilege is missing.
 ///
 /// MLResult.Result will be MLResult.Code.PermissionDenied if application does not have permission to get information about the specific screen.
 ///
 /// MLResult.Result will be MLResult.Code.InvalidScreenId if the id for the screen is invalid.
 /// </returns>
 public static MLResult UpdateScreenInfo(MLScreensScreenInfo screenInfo)
 {
     return(Instance.InternalUpdateScreenInfo(screenInfo));
 }
예제 #5
0
 /// <summary>
 /// Gets information for all system saved screens.
 /// </summary>
 /// <returns>
 /// MLResult.Result will be MLResult.Code.Ok if successful.
 ///
 /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter.
 ///
 /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error.
 ///
 /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service.
 ///
 /// MLResult.Result will be MLResult.Code.PrivilegeDenied if necessary privilege is missing.
 ///
 /// MLResult.Result will be MLResult.Code.PermissionDenied if application does not have permission to get information about the specific screen.
 ///
 /// MLResult.Result will be MLResult.Code.InvalidScreenId if the id for the screen is invalid.
 /// </returns>
 public static MLResult GetScreensInfo(ulong id, out MLScreensScreenInfo info)
 {
     return(Instance.InternalGetScreensInfo(id, out info));
 }