⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcecontrol.cs

📁 通过手机蓝牙控制个人电脑上的幻灯片的播放
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
namespace UtilControl
{
    public class MCEControl
    {
        int iHandle;
        Process mce;
        bool IsMax;
        public MCEControl()
        {
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");   
        }

        public MCEControl(int hwnd)
        {
            iHandle = hwnd;
            IsMax = false;
        }

        //-----------------Media Control---------------------
        public void VolumeUp()
        {
            SendWindowMessage(0x0001018E, (int)Win32.APPCOMMAND.VOLUME_UP);
        }

        public void VolumeDown()
        {
            SendWindowMessage(0x000A0190, (int)Win32.APPCOMMAND.VOLUME_DOWN);
        }

        public void VolumeMute()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.VOLUME_MUTE);
        }

        public void Play()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_PLAY);
        }

        public void Pause()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_PAUSE);
        }

        public void Stop()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_STOP);
        }

        public void Record()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_RECORD);
        }

        public void FastForward()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_FAST_FORWARD);
        }

        public void Rewind()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_REWIND);
        }

        public void NextTrack()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_NEXTTRACK);
        }

        public void PrevTrack()
        {
            SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_PREVIOUSTRACK);
        }

        public void ChannelUp()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.ADD);
            //SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_CHANNEL_UP);
        }

        public void ChannelDown()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.SUBTRACT);
            //SendWindowMessage(0, (int)Win32.APPCOMMAND.MEDIA_CHANNEL_DOWN);
        }

        //------------------D- pad-------------------------------
        public void Up()
        {
            SendKBStroke((ushort)Win32.VK.UP);
        }

        public void Down()
        {
            SendKBStroke((ushort)Win32.VK.DOWN);
        }

        public void Left()
        {
            SendKBStroke((ushort)Win32.VK.LEFT);
        }

        public void Right()
        {
            SendKBStroke((ushort)Win32.VK.RIGHT);
        }

        public void Ok()
        {
            PressKeyDownUp((ushort)Win32.VK.RETURN);
        }

        public void Execute()
        {
            SendKBStroke((ushort)Win32.VK.EXECUTE);
        }

        public void Back()
        {
            SendKBStroke((ushort)Win32.VK.BACK);
        }

        public void Clear()
        {
            SendKBStroke((ushort)Win32.VK.ESCAPE);
        }

        public void MoreInfo()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.KEY_D);
        }

        public void ToggleMaxMin()
        {
            if (IsMax == true)
            {
                this.Minimize();
            }
            else
            {
                this.Maximize();
            }
        }

        //---------------------------shortcut My series---------------------------------
        public void MyTV()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.SHIFT, (ushort)Win32.VK.KEY_T);
        }

        public void MyMusic()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.KEY_M);
        }

        public void MyPicture()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.KEY_I);
        }

        public void MyVideo()
        {
            PressKeyDownUp((ushort)Win32.VK.CONTROL, (ushort)Win32.VK.KEY_E);
        }

        public void MCEMainMenu()
        {
            PressKeyDownUp((ushort)Win32.VK.LWIN, (ushort)Win32.VK.MENU, (ushort)Win32.VK.RETURN);
        }

        //------------------NumPad--------------------------
        public void Num0()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD0);
        }
        public void Num1()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD1);
        }
        public void Num2()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD2);
        }
        public void Num3()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD3);
        }
        public void Num4()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD4);
        }
        public void Num5()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD5);
        }
        public void Num6()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD6);
        }
        public void Num7()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD7);
        }
        public void Num8()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD8);
        }
        public void Num9()
        {
            SendKBStroke((ushort)Win32.VK.NUMPAD9);
        }

        public void StartMCE()
        {
            if (iHandle == 0)
            {
                mce = new Process();
                mce.StartInfo.FileName = "C:\\windows\\ehome\\ehshell.exe";
                mce.Start();
            } 
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");
            SetActivate();
        }

        public void Minimize()
        {
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");
            if (iHandle != 0)
            {
                IsMax = false;
                Win32.SendMessage(iHandle, (int)Win32.WM_SYSCOMMAND, (int)Win32.SC.MINIMIZE,0);
            }
        }

        public void Maximize()
        {
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");
            if (iHandle != 0)
            {
                IsMax = true;
                Win32.SendMessage(iHandle, (int)Win32.WM_SYSCOMMAND, (int)Win32.SC.MAXIMIZE, 0);
            }
        }

        public void CloseMce()
        {
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");
            if (iHandle != 0)
            {
                mce.Close();
                mce.Dispose();
                Win32.SendMessage(iHandle, (int)Win32.WM_SYSCOMMAND, (int)Win32.SC.CLOSE, 0);
            }
        }

        private void SendWindowMessage(int wParam,int lParam)
        {
            SetActivate();
            Win32.SendMessage(iHandle, Win32.WM_APPCOMMAND, wParam, lParam);
        }

        private void SendKBStroke(ushort usKBCommand)
        {
            Win32.INPUT[] structInput = new Win32.INPUT[2];
            structInput[0].type = Win32.INPUT_KEYBOARD;
            structInput[0].ki.wVk = (short)usKBCommand;
            structInput[0].ki.wScan = 0;
            structInput[0].ki.time = 0;
            structInput[0].ki.dwFlags = Win32.KEYEVENTF_KEYDOWN;
            structInput[0].ki.dwExtraInfo = Win32.GetMessageExtraInfo();

            structInput[1] = structInput[0];
            structInput[1].ki.dwFlags |= Win32.KEYEVENTF_KEYUP;

            this.SetActivate();
            Win32.SendInput(2, structInput, Marshal.SizeOf(structInput[0]));
        }

        public void SendText(string strText)
        {
            int StructInputSize = strText.Length * 2;
            Win32.INPUT[] structInput = new Win32.INPUT[StructInputSize];
            char[] chrArray = strText.ToCharArray();
            for (int i = 0; i < chrArray.Length; i++)
            {
                //key down
                structInput[2 * i].type = Win32.INPUT_KEYBOARD;
                structInput[2 * i].ki.wVk = 0;
                structInput[2 * i].ki.wScan = (short)(Convert.ToInt32(chrArray[i]));
                structInput[2 * i].ki.time = 0;
                structInput[2 * i].ki.dwFlags = Win32.KEYEVENTF_UNICODE;
                structInput[2 * i].ki.dwExtraInfo = Win32.GetMessageExtraInfo();

                //keyup
                structInput[2 * i + 1] = structInput[2 * i];
                structInput[2 * i + 1].ki.dwFlags |= Win32.KEYEVENTF_KEYUP;
            }
            this.SetActivate();
            Win32.SendInput((uint)StructInputSize, structInput, Marshal.SizeOf(structInput[0]));
        }


        private void PressKeyDownUp(ushort usKey)
        {
            PressKeyDown(usKey);
            PressKeyUp(usKey);
        }
        private void PressKeyDownUp(ushort usKey1, ushort usKey2)
        {
            PressKeyDown(usKey1);
            PressKeyDownUp(usKey2);
            PressKeyUp(usKey1);
        }
        private void PressKeyDownUp(ushort usKey1, ushort usKey2,ushort usKey3)
        {
            PressKeyDown(usKey1);
            PressKeyDownUp(usKey2,usKey3);
            PressKeyUp(usKey1);
        }

        private void PressKeyDown(ushort usKey)
        {
            this.SetActivate();
            Win32.keybd_event(Convert.ToByte(usKey), (byte)0, 0, UIntPtr.Zero);
        }

        private void PressKeyUp(ushort usKey)
        {
            this.SetActivate();
            Win32.keybd_event(Convert.ToByte(usKey), (byte)0, Win32.KEYEVENTF_KEYUP, UIntPtr.Zero);
        }

        private void SetActivate()
        {
            this.Maximize();
            iHandle = Win32.FindWindow("eHome Render Window", "Media Center");
            if (iHandle != Win32.GetForegroundWindow())
            {
                Win32.SetForegroundWindow(iHandle);
                //System.Threading.Thread.Sleep(100);
            }
        }

        public void Swap()
        {
            this.Minimize();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -