📄 mcecontrol.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 + -