Exemple #1
0
        private void BtnHello_Click(object sender, EventArgs e)
        {
            if (c != null && !c.IsClosed())
            {
                // Closing a connection
                c.Close();
                TxtLog.Text += "\r\nDisconnected.";
                return;
            }

            TxtLog.Text = "Initialized";

            // Create a new connection factory to create
            // a connection.
            ConnectionFactory cf = new ConnectionFactory();

            c = cf.CreateConnection();


            TxtLog.Text += "\r\nSending hello world";
            ChannelMessage msg = new ChannelMessage();

            msg.From    = "csharp";
            msg.Message = "Hello, World!";
            msg.ChanNum = 5;


            c.Publish("world.channel_message", msg.ToByteArray());

            // Simple synchronous subscriber
            sSync = c.SubscribeSync("world.channel_message");

            TxtLog.Text       += "\r\nWaiting for message...";
            TmrMessage.Enabled = true;
        }
Exemple #2
0
        public bool WriteMessage(ChannelMessage msg)
        {
            var data = msg.ToByteArray();
            var len  = 4 + data.Length;
            var ptr  = Marshal.AllocHGlobal(len);

            Marshal.WriteInt32(ptr, 0, data.Length);
            Marshal.Copy(data, 0, new IntPtr(ptr.ToInt32() + 4), data.Length);
            var ret = entryPoints.VirtualChannelWrite(OpenChannel, ptr, (uint)len, ptr);

            return(ret == ChannelReturnCodes.Ok);
        }
Exemple #3
0
        public bool WriteMessage(ChannelMessage msg)
        {
            var data = msg.ToByteArray();
            int written;
            var ret = WtsApi32.WTSVirtualChannelWrite(mHandle, data, data.Length, out written);

            if (ret)
            {
                return(true);
            }
            var ex = new Win32Exception();

            if (!SeenHello && ex.NativeErrorCode == 1 /* Incorrect Function */)
            {
                return(false);
            }
            Log("RDP Virtual channel Write Failed: " + ex.Message);
            return(false);
        }
Exemple #4
0
        public void PublishMessage(string channel, string messageString)
        {
            var channelMessage = new ChannelMessage()
            {
                User = _user, Password = _pwd, Channel = channel, MessageString = messageString
            };

            _sendMessageQueue.Enqueue(new Database.Message()
            {
                Channel = channelMessage.Channel, ByteMessageString = Encoding.ASCII.GetString(channelMessage.ToByteArray())
            });
            SendMessages();
        }