Esempio n. 1
0
        public int InitProcess()
        {
            var fileName  = this.features.Get("fileName");
            var url       = this.features.Get("url");
            var name      = this.features.Get("name");
            var args      = this.features.Get("args").Replace("{url}", url).Replace("{name}", name);
            var workspace = this.features.Get("workspace", Application.StartupPath);

            this.process.StartInfo.FileName         = fileName;
            this.process.StartInfo.Arguments        = args;
            this.process.StartInfo.WorkingDirectory = workspace;
            this.process.StartInfo.WindowStyle      = ProcessWindowStyle.Maximized;
            this.process.Start();
            this.process.WaitForInputIdle();
            this.Handle = this.process.MainWindowHandle;

            var countDown = 1000;

            while (this.Handle == IntPtr.Zero)
            {
                if (countDown < 0)
                {
                    break;
                }
                countDown--;
                Thread.Sleep(100);
                this.Handle = Process.GetProcessById(this.process.Id).MainWindowHandle;
            }
            //改变尺寸
            IPCMessageManager.Send(this.Handle, MessageType.Size, this.features.Get("width"), this.features.Get("height"));
            IPCMessageManager.Send(this.Handle, MessageType.Site, this.features.GetInt("left"), this.features.GetInt("top"));
            IPCMessageManager.Send(this.Handle, MessageType.Show, this.features.Get("parent"));
            return(this.process.Id);
        }
Esempio n. 2
0
        protected override void WndProc(ref Message m)
        {
            var message = IPCMessageManager.GetFormMessage(m);

            if (message != null)
            {
                this.OnMessage(message);
            }
            switch (m.Msg)
            {
            case WM_NCHITTEST:
                base.WndProc(ref m);
                Point vPoint = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16 & 0xFFFF);
                vPoint = PointToClient(vPoint);
                if (vPoint.X <= 5)
                {
                    if (vPoint.Y <= 5)
                    {
                        m.Result = (IntPtr)LEFTTOP;
                    }
                    else if (vPoint.Y >= ClientSize.Height - 5)
                    {
                        m.Result = (IntPtr)LEFTBOTTOM;
                    }
                    else
                    {
                        m.Result = (IntPtr)LEFT;
                    }
                }
                else if (vPoint.X >= ClientSize.Width - 5)
                {
                    if (vPoint.Y <= 5)
                    {
                        m.Result = (IntPtr)RIGHTTOP;
                    }
                    else if (vPoint.Y >= ClientSize.Height - 5)
                    {
                        m.Result = (IntPtr)RIGHTBOTTOM;
                    }
                    else
                    {
                        m.Result = (IntPtr)RIGHT;
                    }
                }
                else if (vPoint.Y <= 5)
                {
                    m.Result = (IntPtr)TOP;
                }
                else if (vPoint.Y >= ClientSize.Height - 5)
                {
                    m.Result = (IntPtr)BOTTOM;
                }
                break;

            default:
                base.WndProc(ref m);
                break;
            }
        }
Esempio n. 3
0
        public FormForScript open(string url, string features = "")
        {
            var handle = IPCMessageManager.Send(this.globalHandle, MessageType.GlobalOpen, url, features);

            if (string.IsNullOrEmpty(handle))
            {
                return(null);
            }
            return(new FormForScript(Marshal.StringToHGlobalAnsi(handle)));
        }
Esempio n. 4
0
        public FormForScript find(string formName)
        {
            if (string.IsNullOrEmpty(formName))
            {
                return(new FormForScript(this.formHandle));
            }
            var handle = IPCMessageManager.Send(this.globalHandle, MessageType.GlobalFind, formName);

            if (string.IsNullOrEmpty(handle))
            {
                return(null);
            }
            return(new FormForScript(Marshal.StringToHGlobalAnsi(handle)));
        }
Esempio n. 5
0
        private void Window_EventCallback(FormMessage message)
        {
            switch (message.Type)
            {
            case FormMessageType.None:
                break;

            case FormMessageType.Show:
                IPCMessageManager.Send(this.Handle, MessageType.Show, this.features.Get("name"), message.Data.GetString(0));
                break;

            case FormMessageType.Close:
                IPCMessageManager.Send(this.Handle, MessageType.Close, this.features.Get("name"));
                break;

            case FormMessageType.Hide:
                IPCMessageManager.Send(this.Handle, MessageType.Hide, this.features.Get("name"));
                break;

            case FormMessageType.Size:
                IPCMessageManager.Send(this.Handle, MessageType.Size, this.features.Get("name"), message.Data.GetString(0), message.Data.GetString(1));
                break;

            case FormMessageType.Site:
                IPCMessageManager.Send(this.Handle, MessageType.Site, this.features.Get("name"), message.Data.GetString(0), message.Data.GetString(1));
                break;

            case FormMessageType.Mode:
                IPCMessageManager.Send(this.Handle, MessageType.Mode, this.features.Get("name"), message.Data.GetString(0));
                break;

            case FormMessageType.Exec:
                IPCMessageManager.Send(this.Handle, MessageType.Exec, this.features.Get("name"), message.Data.GetString(0));
                break;

            case FormMessageType.Refresh:
                IPCMessageManager.Send(this.Handle, MessageType.Refresh, this.features.Get("name"), message.Data.GetString(0));
                break;

            default:
                break;
            }
        }
Esempio n. 6
0
 public void invoke(string name, string method, params string[] args)
 {
     IPCMessageManager.Send(this.globalHandle, MessageType.GlobalInvoke, name, method, args);
 }
Esempio n. 7
0
 public void exec(string name, string script)
 {
     IPCMessageManager.Send(this.globalHandle, MessageType.GlobalExec, name, script);
 }
Esempio n. 8
0
 public FormForScript exec(string script, bool asyn = false)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Exec, script);
     return(new FormForScript(formHandle));
 }
Esempio n. 9
0
 public FormForScript mode(int status)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Mode, status);
     return(new FormForScript(formHandle));
 }
Esempio n. 10
0
 public FormForScript refresh(string url)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Refresh, url);
     return(new FormForScript(formHandle));
 }
Esempio n. 11
0
 public FormForScript site(int left, int top)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Site, left, top);
     return(new FormForScript(formHandle));
 }
Esempio n. 12
0
 public FormForScript size(int width, int height)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Size, width, height);
     return(new FormForScript(formHandle));
 }
Esempio n. 13
0
 public FormForScript hide()
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Hide);
     return(new FormForScript(formHandle));
 }
Esempio n. 14
0
 public FormForScript show(string parent)
 {
     IPCMessageManager.Send(this.formHandle, MessageType.Show, parent);
     return(new FormForScript(formHandle));
 }