Пример #1
0
        public KeyValuePair <uint[], int>?TakeImageRasterFromRectOffsetAndLength(int offsetX, int offsetY, int width, int height)
        {
            var arrayPtr = SmartRemote?.GetImageArray(SmartTargetHandle);

            if (!arrayPtr.HasValue)
            {
                return(null);
            }

            if (IntPtr.Zero == arrayPtr)
            {
                return(null);
            }

            var sourceWidth  = this.Width;
            var sourceHeight = this.Height;

            if (width < 0)
            {
                throw new ArgumentOutOfRangeException("width", width, "");
            }

            if (height < 0)
            {
                throw new ArgumentOutOfRangeException("height", height, "");
            }

            if (offsetX < 0 || offsetY < 0 || sourceWidth < offsetX + width || sourceHeight < offsetY + height)
            {
                throw new NotImplementedException();
            }

            var rectArray = new Int32[width * height];

            for (int destY = 0; destY < height; destY++)
            {
                var destPixelIndex = destY * width;

                Marshal.Copy(arrayPtr.Value + destPixelIndex * 4, rectArray, destPixelIndex, width);
            }

            //	set each pixel to max. opacity
            for (int i = 0; i < rectArray.Length; i++)
            {
                rectArray[i] = rectArray[i] | (0xff << 24);
            }

            return(new KeyValuePair <UInt32[], int>((UInt32[])(object)rectArray, width));
        }
Пример #2
0
        public void Start()
        {
            string url = settings.RunescapePath;

            int availableClients = SmartRemote.GetClients(true);

            for (int i = 0; i < availableClients; i++)
            {
                int    availableClient = SmartRemote.GetAvailablePID(i);
                IntPtr handle          = SmartRemote.PairClient(availableClient);
                if (handle != IntPtr.Zero)
                {
                    SmartTargetHandle = handle;
                    break;
                }
            }

            if (SmartTargetHandle == IntPtr.Zero)
            {
                SmartTargetHandle = SmartRemote.SpawnClient(settings.JavaPath, settings.SmartPath, url, "", Width, Height, null, null, null, null);
            }
        }
Пример #3
0
        public void Stop()
        {
            SmartRemote.KillClient(SmartRemote.GetClientPID(SmartTargetHandle));

            SmartTargetHandle = IntPtr.Zero;
        }
Пример #4
0
 public Session(SmartRemote smartRemote, SessionSettings settings)
 {
     SmartRemote   = smartRemote;
     this.settings = settings;
     resetEvent    = new ManualResetEvent(false);
 }
Пример #5
0
 public void KeyUp(int code) =>
 SmartRemote?.ReleaseKey(SmartTargetHandle, code);
Пример #6
0
 public void KeyDown(int code) =>
 SmartRemote?.HoldKey(SmartTargetHandle, code);
Пример #7
0
 public void TextEntry(string text, int keyWait, int keyModWait) =>
 SmartRemote?.SendKeys(SmartTargetHandle, text, keyWait, keyModWait);
Пример #8
0
 public void MouseMove(int x, int y) =>
 SmartRemote?.MoveMouse(SmartTargetHandle, x, y);
Пример #9
0
 public void MouseClick(int x, int y, bool left) =>
 SmartRemote?.ClickMouse(SmartTargetHandle, x, y, left);