PPT輔助工具


在台上講解PPT內容的時候,想翻頁也不是件容易的事情。當然一只電子筆就搞定了,不過如果我們有只能手機和wifi環境,直接用手機來控制不是更好。

本來想利用手機的觸摸屏,以及加速度感應來操作PPT。由於Android編程水平十分有限,所以,就直接做了一個WebApp。

利用手機訪問目標電腦(演示ppt的電腦),然后目標電腦根據訪問的頁面截取參數,並作出反應。

 

1、響應http請求,因為之間簡單的截取url參數,所以自己寫一個http服務程序。

private void button1_Click(object sender, EventArgs e)
        {
            this.button1.Enabled = false;

            HttpListener listener = new HttpListener();
            listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
            string port = string.Format("http://*:{0}/", textBox1.Text);
            listener.Prefixes.Add(port);
            listener.Start();
            listener.BeginGetContext(new AsyncCallback(GetContext), listener);

        }
        private void GetContext(IAsyncResult result)
        {
            HttpListener listener = result.AsyncState as HttpListener;
            HttpListenerContext context = listener.EndGetContext(result);
            new System.Threading.Thread(delegate()
            {
                this.Command(context.Request.RawUrl);
            }).Start();
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            context.Response.StatusCode = 200;
            //string fileName = AppDomain.CurrentDomain.BaseDirectory + "ppt.html";
            //string content = System.IO.File.ReadAllText(fileName);
            string content = html;
            System.IO.StreamWriter writer = new System.IO.StreamWriter(context.Response.OutputStream, context.Response.ContentEncoding);
            writer.Write(content);
            writer.Close();
            context.Response.Close();
            listener.BeginGetContext(new AsyncCallback(GetContext), listener);
        }

  這個地方主要用到了HttpListener這個類。因為上一頁,下一頁等操作都在同一個頁面,所以,所有的請求都返回同一個頁面。可以把html放到文件然后讀取,我這邊為了生成后程序的簡潔性,直接寫道cs代碼里面了。(這是一個非常不好的習慣,雖然這個只是一個測試程序)

2、第二就是要根據web的請求參數,轉換為本地電腦的模擬鍵盤操作。

public class VirtualControl
    {
        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

        public static void SendKeys(string keys)
        {
            System.Windows.Forms.SendKeys.Send(keys);
        }
        public static void PageDown()
        {
            System.Windows.Forms.SendKeys.SendWait("{PGDN}");
        }
        public static void PageUp()
        {
            System.Windows.Forms.SendKeys.SendWait("{PGUP}");
        }
        public static void Home()
        {
            System.Windows.Forms.SendKeys.SendWait("{HOME}");
        }
        public static void Esc()
        {
            System.Windows.Forms.SendKeys.SendWait("{ESC}");
        }
        public static void MouseEvent(MouseOption option, int x, int y)
        {
            mouse_event((int)option, x, y, 0, 0);
        }
        public static void MouseContext()
        {
            MouseEvent(MouseOption.RIGHTDOWN, 0, 0);
            MouseEvent(MouseOption.RIGHTUP, 0, 0);
        }
        public static void MouseClick()
        {
            MouseEvent(MouseOption.LEFTDOWN, 0, 0);
            MouseEvent(MouseOption.LEFTUP, 0, 0);
        }

        public enum MouseOption : int
        {
            MOVE = 0x0001,
            LEFTDOWN = 0x0002,
            LEFTUP = 0x0004,
            RIGHTDOWN = 0x0008,
            RIGHTUP = 0x0010,
            MIDDLEDOWN = 0x0020,
            MIDDLEUP = 0x0040,
            ABSOLUTE = 0x8000
        }
    }

  所以呢,在http服務接收到請求,解析請求url,轉換為相應的命令。這樣,就可以使用我們的手機控制電腦上的ppt演示稿了。

我原本的設想是利用智能手機的屏幕,作為畫筆,還有加速度感應來控制上下頁。這里提供一個思路,希望哪天有牛人實現以下,並共享出來。

最后附上源碼。

http://files.cnblogs.com/Linjianyu/ControlServer.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM