怎样怎么用手机控制电脑播放音乐乐知道的能告诉下吗

foobar2000手机控制电脑播放音乐【potplayer吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:22,151贴子:
foobar2000手机控制电脑播放音乐收藏
我们在躺着休息时,听着音乐,想要切换或指定播放一首音乐,还要去电脑切换,是多么不爽的一件事,有没有好的一个解决方案,蓝牙音响或蓝牙音响转换器,对于没有这些设备苦逼大学生或上班族来说,有没有一个方案解决这个通点,答案是肯定,通过手机来控制电脑来播放,但他们之间需要一个无线来进行链接,路由器或使用笔记来建立热点,
电脑上需要安装foobar2000,如果你不知道这款播放器请自行百度,这些年这个播放器一直处于被其他播放器秒与被秒之间,不管怎么说他是我电脑的默认播放器,三年了,没用腻了,要离开的时候,还是过不了多久还是会回来的。之后装插件,手机上安装相应的app,通过无线来链接就可以了。觉得好玩的吧友可以试试,做了个小视频略渣,轻喷视频来自:图片来自:图片来自:
需要文件的私信吧,现在贴吧吞的太狠
来错吧了?为何不发在隔壁FB2K吧?
几百年前的东西
楼主私信我吧
登录百度帐号如何用手机控制电脑QQ音乐?手机控制电脑QQ音乐教程
  如何使用想必大家都知道,那你们知道如何用控制电脑的音乐吗?一起来看看用手机控制电脑音乐教程吧!&& 使用手机控制电脑qq音乐的教程:   再说之前首先我们要确保几个前提:  (1)手机和电脑都要下载安装QQ音乐;  (2)手机和电脑要连接同一个网络;  (3)手机和电脑的QQ音乐要登录同一个账号。  1、首先我们打开手机上的QQ音乐,然后找到更多下的Qplay,打开它;  2、接着打开你要播放的歌曲,在歌曲播放页面右下角能看到一个Qplay的标志,打开;  3、再然后打开电脑上最新版本的qq音乐,并且手机开始搜索你的电脑设备,搜索到后进行连接;  4、连接成功后我们就可以操控电脑上的QQ音乐啦,我们在手机上切换歌曲或者改变音量等电脑上的也会做出相应的动作哦!  5、如果不想连接了,这时候在电脑上的qq音乐中点击断开Qplay连接就可以啦!  以上就是用手机控制电脑QQ音乐教程,希望可以帮助到大家。
最新资讯离线随时看
聊天吐槽赢奖品
相关软件:
大小:1.95MB
授权:免费
大小:7.77 MB
授权:免费手机控制电脑开关机,调音量,放音乐
前段时间无聊,发现现在手机功能越来越强大,并且支持开发,所以用android手机做了一个通过手机wifi或gprs实现远程控制开关机调节音量等功能的小软件。在这里发出来留作纪念。
&请转载者注明出处:条码射频
先发个效果图:
点击功能 增大声音, 可使被控电脑声音增大,
其他功能同样可用。
下面简单说下实现方法:
原理很简单 ,通过 sorket 将“控制信息”发给电脑中的“控制服务程序”,然后服务程序对电脑进行控制。
服务程序c#源码:
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.ServiceP
using System.T
using System.Runtime.InteropS
using System.IO.P
using System.N
using Net.TCPU
using System.C
namespace cputerctr
&&& public
partial class Service1 : ServiceBase
public Service1()
&&&&&&&&&&&
InitializeComponent();
protected override void OnStart(string[] args)
&&&&&&&&&&&
StartListen();
protected override void OnStop()
&&&&&&&&&&&
myServer.Stop();
public TcpSvr myS
#region 属性
private ushort _port = 9101, _count = 100;
private string _endTag = "\r";
public ushort ServerPort
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
public ushort ClientCount
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
public string EndTag
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
return _endT
&&&&&&&&&&&
#endregion
#region 获取本机IP地址
/// &summary&
/// GetIp 获取本机IP地址
/// &/summary&
public IPAddress GetIp()
&&&&&&&&&&&
System.Net.IPHostEntry ihe =
Dns.GetHostByName(Dns.GetHostName());
&&&&&&&&&&&
return ihe.AddressList[0];
#endregion
public void StartListen()
&&&&&&&&&&&
myServer = new TcpSvr(this.ServerPort, this.ClientCount);
&&&&&&&&&&&
myServer.Resovlver = new DatagramResolver(this.EndTag);
&&&&&&&&&&&
#region ///定义服务器的4个事件
&&&&&&&&&&&
myServer.ServerFull += new NetEvent(myServer_ServerFull);
&&&&&&&&&&&
myServer.ClientConn += new NetEvent(myServer_ClientConn);
&&&&&&&&&&&
myServer.ClientClose += new NetEvent(myServer_ClientClose);
&&&&&&&&&&&
myServer.RecvData += new NetEvent(myServer_RecvData);
&&&&&&&&&&&
#endregion
&&&&&&&&&&&
myServer.Start();
public void StopListen()
&&&&&&&&&&&
myServer.Stop();
#region 4个事件处理程序
void myServer_RecvData(object sender, NetEventArgs e)
&&&&&&&&&&&
string ipandport =
e.Client.ClientSocket.RemoteEndPoint.ToString();
&&&&&&&&&&&
string TermIP = ipandport.Substring(0,
ipandport.LastIndexOf(':'));
&&&&&&&&&&&
string receiveData = e.Client.Datagram.Substring(0,
e.Client.Datagram.Length - 1);
&&&&&&&&&&&
string msg = receiveD
&&&&&&&&&&&
switch (receiveData)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "yinyue":
&&&&&&&&&&&&&&&&&&&
msg = OpenBrowser("");
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "QQ":
&&&&&&&&&&&&&&&&&&&
msg = OpenExe("");
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "RestartC":
&&&&&&&&&&&&&&&&&&&
msg = RestartComputer("10");
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "CloseC":
&&&&&&&&&&&&&&&&&&&
msg = CloseComputer("10");
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "VolumeUp":
&&&&&&&&&&&&&&&&&&&
msg = VolumeUp();
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "VolumeDown":
&&&&&&&&&&&&&&&&&&&
msg = VolumeDown();
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "MuteOpen":
&&&&&&&&&&&&&&&&&&&
msg = MuteOpen();
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
case "MuteClose":
&&&&&&&&&&&&&&&&&&&
msg = MuteClose();
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
myServer.Send(e.Client, msg);
void myServer_ClientClose(object sender, NetEventArgs e)
void myServer_ClientConn(object sender, NetEventArgs e)
&&&&&&&&&&&
myServer.Send(e.Client, "OK");
void myServer_ServerFull(object sender, NetEventArgs e)
#endregion
#region close computer
public string CloseComputer(string closetime)
&&&&&&&&&&&
string msg = "OK";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
System.Diagnostics.Process.Start("cmd.exe", "/cshutdown -s -t " +
closetime);
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
#endregion
#region RestartComputer
public string RestartComputer(string Restarttime)
&&&&&&&&&&&
string msg = "OK";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
System.Diagnostics.Process.Start("cmd.exe", "/cshutdown -r -t " +
Restarttime);
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
#endregion
#region WebPrint
public string webprint(string epzl, string port)
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
SerialPort serialport = new SerialPort();
&&&&&&&&&&&&&&&
serialport.PortName =
&&&&&&&&&&&&&&&
serialport.Open();
&&&&&&&&&&&&&&&
serialport.Write(epzl);
&&&&&&&&&&&&&&&
serialport.Close();
&&&&&&&&&&&&&&&
return "打印成功";
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
return "打印失败!" + ex.M
&&&&&&&&&&&
#endregion
#region Volume Ctr
private const byte VK_VOLUME_MUTE = 0xAD;
private const byte VK_VOLUME_DOWN = 0xAE;
private const byte VK_VOLUME_UP = 0xAF;
private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001;
private const UInt32 KEYEVENTF_KEYUP = 0x0002;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, UInt32
dwFlags, UInt32 dwExtraInfo);
[DllImport("user32.dll")]
static extern Byte MapVirtualKey(UInt32 uCode, UInt32
uMapType);
public string VolumeUp()
&&&&&&&&&&&
string msg = "ok";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0),
KEYEVENTF_EXTENDEDKEY, 0);
&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0),
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
public string VolumeDown()
&&&&&&&&&&&
string msg = "ok";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0),
KEYEVENTF_EXTENDEDKEY, 0);
&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0),
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
public string MuteOpen()
&&&&&&&&&&&
//IsMuted()& true-静音 false-开启
&&&&&&&&&&&
MixerInfo mi = GetMixerControls();
&&&&&&&&&&&
string msg = "ok";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if (IsMuted(mi))
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0),
KEYEVENTF_EXTENDEDKEY, 0);
&&&&&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0),
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
public string MuteClose()
&&&&&&&&&&&
//IsMuted()& true-静音 false-开启
&&&&&&&&&&&
MixerInfo mi= GetMixerControls();
&&&&&&&&&&&
string msg = "ok";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if (!IsMuted(mi))
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0),
KEYEVENTF_EXTENDEDKEY, 0);
&&&&&&&&&&&&&&&&&&&
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0),
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
#endregion
#region VolumeISmute
const int MAXPNAMELEN = 32;
const int MIXER_SHORT_NAME_CHARS = 16;
const int MIXER_LONG_NAME_CHARS = 64;
enum MIXERLINE_LINEF : uint
&&&&&&&&&&&
ACTIVE = 0x,
&&&&&&&&&&&
DISCONNECTED = 0x,
&&&&&&&&&&&
SOURCE = 0x
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct MIXERLINE
&&&&&&&&&&&
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
&&&&&&&&&&&
public struct TargetInfo
&&&&&&&&&&&
&&&&&&&&&&&&&&&
public uint dwT
&&&&&&&&&&&&&&&
public uint dwDeviceID;
&&&&&&&&&&&&&&&
public ushort wM
&&&&&&&&&&&&&&&
public ushort wP
&&&&&&&&&&&&&&&
public uint vDriverV
&&&&&&&&&&&&&&&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAXPNAMELEN)]
&&&&&&&&&&&&&&&
public string szP
&&&&&&&&&&&
&&&&&&&&&&&
public uint cbS
&&&&&&&&&&&
public uint dwD
&&&&&&&&&&&
public uint dwS
&&&&&&&&&&&
public uint dwLineID;
&&&&&&&&&&&
public MIXERLINE_LINEF fdwL
&&&&&&&&&&&
public uint dwU
&&&&&&&&&&&
public uint dwComponentT
&&&&&&&&&&&
public uint cC
&&&&&&&&&&&
public uint cC
&&&&&&&&&&&
public uint cC
&&&&&&&&&&&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst =
MIXER_SHORT_NAME_CHARS)]
&&&&&&&&&&&
public string szShortN
&&&&&&&&&&&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst =
MIXER_LONG_NAME_CHARS)]
&&&&&&&&&&&
public string szN
&&&&&&&&&&&
public TargetInfo T
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct MIXERCONTROL
&&&&&&&&&&&
[StructLayout(LayoutKind.Explicit)]
&&&&&&&&&&&
public struct BoundsInfo
&&&&&&&&&&&
&&&&&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&&&&&
public int lM
&&&&&&&&&&&&&&&
[FieldOffset(4)]
&&&&&&&&&&&&&&&
public int lM
&&&&&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&&&&&
public uint dwM
&&&&&&&&&&&&&&&
[FieldOffset(4)]
&&&&&&&&&&&&&&&
public uint dwM
&&&&&&&&&&&&&&&
[FieldOffset(8), MarshalAs(UnmanagedType.ByValArray, SizeConst =
&&&&&&&&&&&&&&&
public uint[] dwR
&&&&&&&&&&&
&&&&&&&&&&&
[StructLayout(LayoutKind.Explicit)]
&&&&&&&&&&&
public struct MetricsInfo
&&&&&&&&&&&
&&&&&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&&&&&
public uint cS
&&&&&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&&&&&
public uint cbCustomD
&&&&&&&&&&&&&&&
[FieldOffset(4), MarshalAs(UnmanagedType.ByValArray, SizeConst =
&&&&&&&&&&&&&&&
public uint[] dwR
&&&&&&&&&&&
&&&&&&&&&&&
public uint cbS
&&&&&&&&&&&
public uint dwControlID;
&&&&&&&&&&&
public MIXERCONTROL_CONTROLTYPE dwControlT
&&&&&&&&&&&
public uint fdwC
&&&&&&&&&&&
public uint cMultipleI
&&&&&&&&&&&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst =
MIXER_SHORT_NAME_CHARS)]
&&&&&&&&&&&
public string szShortN
&&&&&&&&&&&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst =
MIXER_LONG_NAME_CHARS)]
&&&&&&&&&&&
public string szN
&&&&&&&&&&&
public BoundsInfo B
&&&&&&&&&&&
public MetricsInfo M
[StructLayout(LayoutKind.Explicit)]
struct MIXERLINECONTROLS
&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&
public uint cbS
&&&&&&&&&&&
[FieldOffset(4)]
&&&&&&&&&&&
public uint dwLineID;
&&&&&&&&&&&
[FieldOffset(8)]
&&&&&&&&&&&
public uint dwControlID;
&&&&&&&&&&&
[FieldOffset(8)] // not a typo! overlaps previous field
&&&&&&&&&&&
public uint dwControlT
&&&&&&&&&&&
[FieldOffset(12)]
&&&&&&&&&&&
public uint cC
&&&&&&&&&&&
[FieldOffset(16)]
&&&&&&&&&&&
&&&&&&&&&&&
[FieldOffset(20)]
&&&&&&&&&&&
public IntP
[StructLayout(LayoutKind.Explicit)]
struct MIXERCONTROLDETAILS
&&&&&&&&&&&
[FieldOffset(0)]
&&&&&&&&&&&
public uint cbS
&&&&&&&&&&&
[FieldOffset(4)]
&&&&&&&&&&&
public uint dwControlID;
&&&&&&&&&&&
[FieldOffset(8)]
&&&&&&&&&&&
public uint cC
&&&&&&&&&&&
[FieldOffset(12)]
&&&&&&&&&&&
public IntPtr hwndO
&&&&&&&&&&&
[FieldOffset(12)] // not a typo!
&&&&&&&&&&&
public uint cMultipleI
&&&&&&&&&&&
[FieldOffset(16)]
&&&&&&&&&&&
public uint cbD
&&&&&&&&&&&
[FieldOffset(20)]
&&&&&&&&&&&
public IntPtr paD
[StructLayout(LayoutKind.Sequential)]
struct VOLUME
&&&&&&&&&&&
&&&&&&&&&&&
public struct MixerInfo
&&&&&&&&&&&
public uint volumeC
&&&&&&&&&&&
public uint muteC
&&&&&&&&&&&
public int minV
&&&&&&&&&&&
public int maxV
enum MIXERCONTROL_CT : uint
&&&&&&&&&&&
CLASS_MASK = 0xF0000000,
&&&&&&&&&&&
CLASS_CUSTOM = 0x,
&&&&&&&&&&&
CLASS_METER = 0x,
&&&&&&&&&&&
CLASS_SWITCH = 0x,
&&&&&&&&&&&
CLASS_NUMBER = 0x,
&&&&&&&&&&&
CLASS_SLIDER = 0x,
&&&&&&&&&&&
CLASS_FADER = 0x,
&&&&&&&&&&&
CLASS_TIME = 0x,
&&&&&&&&&&&
CLASS_LIST = 0x,
&&&&&&&&&&&
SUBCLASS_MASK = 0x0F000000,
&&&&&&&&&&&
SC_SWITCH_BOOLEAN = 0x,
&&&&&&&&&&&
SC_SWITCH_BUTTON = 0x,
&&&&&&&&&&&
SC_METER_POLLED = 0x,
&&&&&&&&&&&
SC_TIME_MICROSECS = 0x,
&&&&&&&&&&&
SC_TIME_MILLISECS = 0x,
&&&&&&&&&&&
SC_LIST_SINGLE = 0x,
&&&&&&&&&&&
SC_LIST_MULTIPLE = 0x,
&&&&&&&&&&&
UNITS_MASK = 0x00FF0000,
&&&&&&&&&&&
UNITS_CUSTOM = 0x,
&&&&&&&&&&&
UNITS_BOOLEAN = 0x,
&&&&&&&&&&&
UNITS_SIGNED = 0x,
&&&&&&&&&&&
UNITS_UNSIGNED = 0x,
&&&&&&&&&&&
UNITS_DECIBELS = 0x,
&&&&&&&&&&&
UNITS_PERCENT = 0x,
enum MIXER : uint
&&&&&&&&&&&
GETLINEINFOF_DESTINATION = 0x,
&&&&&&&&&&&
GETLINEINFOF_SOURCE = 0x,
&&&&&&&&&&&
GETLINEINFOF_LINEID = 0x,
&&&&&&&&&&&
GETLINEINFOF_COMPONENTTYPE = 0x,
&&&&&&&&&&&
GETLINEINFOF_TARGETTYPE = 0x,
&&&&&&&&&&&
GETLINEINFOF_QUERYMASK = 0x0000000F,
&&&&&&&&&&&
GETLINECONTROLSF_ALL = 0x,
&&&&&&&&&&&
GETLINECONTROLSF_ONEBYID = 0x,
&&&&&&&&&&&
GETLINECONTROLSF_ONEBYTYPE = 0x,
&&&&&&&&&&&
GETLINECONTROLSF_QUERYMASK = 0x0000000F,
&&&&&&&&&&&
GETCONTROLDETAILSF_VALUE = 0x,
&&&&&&&&&&&
GETCONTROLDETAILSF_LISTTEXT = 0x,
&&&&&&&&&&&
GETCONTROLDETAILSF_QUERYMASK = 0x0000000F,
&&&&&&&&&&&
OBJECTF_MIXER = 0x,
&&&&&&&&&&&
OBJECTF_WAVEOUT = 0x,
&&&&&&&&&&&
OBJECTF_WAVEIN = 0x,
&&&&&&&&&&&
OBJECTF_MIDIOUT = 0x,
&&&&&&&&&&&
OBJECTF_MIDIIN = 0x,
&&&&&&&&&&&
OBJECTF_AUX = 0x,
&&&&&&&&&&&
OBJECTF_HANDLE = 0x,
&&&&&&&&&&&
OBJECTF_HMIXER = OBJECTF_HANDLE | OBJECTF_MIXER,
&&&&&&&&&&&
OBJECTF_HWAVEOUT = OBJECTF_HANDLE | OBJECTF_WAVEOUT,
&&&&&&&&&&&
OBJECTF_HWAVEIN = OBJECTF_HANDLE | OBJECTF_WAVEIN,
&&&&&&&&&&&
OBJECTF_HMIDIOUT = OBJECTF_HANDLE | OBJECTF_MIDIOUT,
&&&&&&&&&&&
OBJECTF_HMIDIIN = OBJECTF_HANDLE | OBJECTF_MIDIIN
enum MIXERCONTROL_CONTROLTYPE : uint
&&&&&&&&&&&
CUSTOM = MIXERCONTROL_CT.CLASS_CUSTOM |
MIXERCONTROL_CT.UNITS_CUSTOM,
&&&&&&&&&&&
BOOLEANMETER = MIXERCONTROL_CT.CLASS_METER |
MIXERCONTROL_CT.SC_METER_POLLED |
MIXERCONTROL_CT.UNITS_BOOLEAN,
&&&&&&&&&&&
SIGNEDMETER = MIXERCONTROL_CT.CLASS_METER |
MIXERCONTROL_CT.SC_METER_POLLED |
MIXERCONTROL_CT.UNITS_SIGNED,
&&&&&&&&&&&
PEAKMETER = SIGNEDMETER + 1,
&&&&&&&&&&&
UNSIGNEDMETER = MIXERCONTROL_CT.CLASS_METER |
MIXERCONTROL_CT.SC_METER_POLLED |
MIXERCONTROL_CT.UNITS_UNSIGNED,
&&&&&&&&&&&
BOOLEAN = MIXERCONTROL_CT.CLASS_SWITCH |
MIXERCONTROL_CT.SC_SWITCH_BOOLEAN |
MIXERCONTROL_CT.UNITS_BOOLEAN,
&&&&&&&&&&&
ONOFF = BOOLEAN + 1,
&&&&&&&&&&&
MUTE = BOOLEAN + 2,
&&&&&&&&&&&
MONO = BOOLEAN + 3,
&&&&&&&&&&&
LOUDNESS = BOOLEAN + 4,
&&&&&&&&&&&
STEREOENH = BOOLEAN + 5,
&&&&&&&&&&&
BASS_BOOST = BOOLEAN + 0x,
&&&&&&&&&&&
BUTTON = MIXERCONTROL_CT.CLASS_SWITCH |
MIXERCONTROL_CT.SC_SWITCH_BUTTON |
MIXERCONTROL_CT.UNITS_BOOLEAN,
&&&&&&&&&&&
DECIBELS = MIXERCONTROL_CT.CLASS_NUMBER |
MIXERCONTROL_CT.UNITS_DECIBELS,
&&&&&&&&&&&
SIGNED = MIXERCONTROL_CT.CLASS_NUMBER |
MIXERCONTROL_CT.UNITS_SIGNED,
&&&&&&&&&&&
UNSIGNED = MIXERCONTROL_CT.CLASS_NUMBER |
MIXERCONTROL_CT.UNITS_UNSIGNED,
&&&&&&&&&&&
PERCENT = MIXERCONTROL_CT.CLASS_NUMBER |
MIXERCONTROL_CT.UNITS_PERCENT,
&&&&&&&&&&&
SLIDER = MIXERCONTROL_CT.CLASS_SLIDER |
MIXERCONTROL_CT.UNITS_SIGNED,
&&&&&&&&&&&
PAN = SLIDER + 1,
&&&&&&&&&&&
QSOUNDPAN = SLIDER + 2,
&&&&&&&&&&&
FADER = MIXERCONTROL_CT.CLASS_FADER |
MIXERCONTROL_CT.UNITS_UNSIGNED,
&&&&&&&&&&&
VOLUME = FADER + 1,
&&&&&&&&&&&
BASS = FADER + 2,
&&&&&&&&&&&
TREBLE = FADER + 3,
&&&&&&&&&&&
EQUALIZER = FADER + 4,
&&&&&&&&&&&
SINGLESELECT = MIXERCONTROL_CT.CLASS_LIST |
MIXERCONTROL_CT.SC_LIST_SINGLE |
MIXERCONTROL_CT.UNITS_BOOLEAN,
&&&&&&&&&&&
MUX = SINGLESELECT + 1,
&&&&&&&&&&&
MULTIPLESELECT = MIXERCONTROL_CT.CLASS_LIST |
MIXERCONTROL_CT.SC_LIST_MULTIPLE |
MIXERCONTROL_CT.UNITS_BOOLEAN,
&&&&&&&&&&&
MIXER = MULTIPLESELECT + 1,
&&&&&&&&&&&
MICROTIME = MIXERCONTROL_CT.CLASS_TIME |
MIXERCONTROL_CT.SC_TIME_MICROSECS |
MIXERCONTROL_CT.UNITS_UNSIGNED,
&&&&&&&&&&&
MILLITIME = MIXERCONTROL_CT.CLASS_TIME |
MIXERCONTROL_CT.SC_TIME_MILLISECS |
MIXERCONTROL_CT.UNITS_UNSIGNED
[DllImport("WinMM.dll", CharSet = CharSet.Auto)]
static extern uint mixerGetLineInfo(IntPtr hmxobj, ref MIXERLINE
pmxl, MIXER flags);
[DllImport("WinMM.dll", CharSet = CharSet.Auto)]
static extern uint mixerGetLineControls(IntPtr hmxobj, ref
MIXERLINECONTROLS pmxlc, MIXER flags);
[DllImport("WinMM.dll", CharSet = CharSet.Auto)]
static extern uint mixerGetControlDetails(IntPtr hmxobj, ref
MIXERCONTROLDETAILS pmxcd, MIXER flags);
[DllImport("WinMM.dll", CharSet = CharSet.Auto)]
static extern uint mixerSetControlDetails(IntPtr hmxobj, ref
MIXERCONTROLDETAILS pmxcd, MIXER flags);
private static bool IsMuted(MixerInfo mi)
&&&&&&&&&&&
MIXERCONTROLDETAILS mcd = new MIXERCONTROLDETAILS();
&&&&&&&&&&&
mcd.cbStruct =
(uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS));
&&&&&&&&&&&
mcd.dwControlID = mi.muteC
&&&&&&&&&&&
mcd.cMultipleItems = 0;
&&&&&&&&&&&
mcd.cChannels = 1;
&&&&&&&&&&&
mcd.cbDetails = 4;
&&&&&&&&&&&
mcd.paDetails = Marshal.AllocHGlobal((int)mcd.cbDetails);
&&&&&&&&&&&
mixerGetControlDetails(IntPtr.Zero, ref mcd,
MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);
&&&&&&&&&&&
int rtn = Marshal.ReadInt32(mcd.paDetails);
&&&&&&&&&&&
Marshal.FreeHGlobal(mcd.paDetails);
&&&&&&&&&&&
return rtn != 0;
public static MixerInfo GetMixerControls()
&&&&&&&&&&&
MIXERLINE mxl = new MIXERLINE();
&&&&&&&&&&&
MIXERLINECONTROLS mlc = new MIXERLINECONTROLS();
&&&&&&&&&&&
mxl.cbStruct = (uint)Marshal.SizeOf(typeof(MIXERLINE));
&&&&&&&&&&&
mlc.cbStruct = (uint)Marshal.SizeOf(typeof(MIXERLINECONTROLS));
&&&&&&&&&&&
mixerGetLineInfo(IntPtr.Zero, ref mxl, MIXER.OBJECTF_MIXER |
MIXER.GETLINEINFOF_DESTINATION);
&&&&&&&&&&&
mlc.dwLineID = mxl.dwLineID;
&&&&&&&&&&&
mlc.cControls = mxl.cC
&&&&&&&&&&&
mlc.cbmxctrl = (uint)Marshal.SizeOf(typeof(MIXERCONTROL));
&&&&&&&&&&&
mlc.pamxctrl = Marshal.AllocHGlobal((int)(mlc.cbmxctrl *
mlc.cControls));
&&&&&&&&&&&
mixerGetLineControls(IntPtr.Zero, ref mlc, MIXER.OBJECTF_MIXER |
MIXER.GETLINECONTROLSF_ALL);
&&&&&&&&&&&
MixerInfo rtn = new MixerInfo();
&&&&&&&&&&&
for (int i = 0; i & mlc.cC i++)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
MIXERCONTROL mxc =
(MIXERCONTROL)Marshal.PtrToStructure((IntPtr)((int)mlc.pamxctrl +
(int)mlc.cbmxctrl * i), typeof(MIXERCONTROL));
&&&&&&&&&&&&&&&
switch (mxc.dwControlType)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
case MIXERCONTROL_CONTROLTYPE.VOLUME:
&&&&&&&&&&&&&&&&&&&&&&&
rtn.volumeCtl = mxc.dwControlID;
&&&&&&&&&&&&&&&&&&&&&&&
rtn.minVolume = mxc.Bounds.lM
&&&&&&&&&&&&&&&&&&&&&&&
rtn.maxVolume = mxc.Bounds.lM
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
case MIXERCONTROL_CONTROLTYPE.MUTE:
&&&&&&&&&&&&&&&&&&&&&&&
rtn.muteCtl = mxc.dwControlID;
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
Marshal.FreeHGlobal(mlc.pamxctrl);
&&&&&&&&&&&
#endregion
#region Browser Ctr
public string OpenBrowser(string url)
&&&&&&&&&&&
string BrowserEXE =
ConfigurationManager.AppSettings["BrowserEXE"].ToString();
&&&&&&&&&&&
string msg = "OK";
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if (url.Length == 0)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
ConfigurationManager.AppSettings["BrowserUrl"].ToString();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
System.Diagnostics.Process.Start(BrowserEXE, url);
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
public void CloseBrowser(string url)
&&&&&&&&&&&
if (url.Length == 0)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
#endregion
#region exe Ctr
public string OpenExe(string path)
&&&&&&&&&&&
string Exefile =
ConfigurationManager.AppSettings["Exefile"].ToString();
&&&&&&&&&&&
string msg = "OK";
&&&&&&&&&&&
System.Diagnostics.Process myP = new
System.Diagnostics.Process();
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if (path.Length == 0)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
myP.StartInfo.FileName =
&&&&&&&&&&&&&&&
myP.StartInfo.UseShellExecute =
&&&&&&&&&&&&&&&
myP.StartInfo.RedirectStandardOutput =
&&&&&&&&&&&&&&&
myP.StartInfo.Arguments = "1";
&&&&&&&&&&&&&&&
myP.Start();
&&&&&&&&&&&&&&&
myP.WaitForExit();
&&&&&&&&&&&
&&&&&&&&&&&
catch (Exception ex)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
msg = ex.M
&&&&&&&&&&&
&&&&&&&&&&&
#endregion
下面是手机上的android源码:
package mars.
import java.io.DataInputS
import java.io.DataOutputS
import java.io.OutputS
import java.io.IOE
import java.io.PrintW
import java.net.S
import java.net.UnknownHostE
import android.app.A
import android.app.AlertD
import android.content.DialogI
import android.content.SharedP
import android.os.B
import android.os.H
import android.view.KeyE
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
import android.widget.TextV
import android.widget.T
import android.widget.ZoomC
public class SocketActivity extends Activity {
&private Button startButton =
&private Button playButton =
&private Button pauseButton =
&private Button previousButton =
&private Button ejectButton =
&private Button unejctionButton =
&private Button setip =
&private EditText IP
&private String Tcpip="";
&private TextView msgView =
&private Socket s =
&private String InstantMsg =
&private S
&private SharedP
&//UI update handler
&private final Handler cwjHandler = new
Handler();
&//UI update thread
&final Runnable mUpdateResults = new Runnable()
&&public void run() {
&&&//updateUI();
&&&msgView.append(InstantMsg);
&&&System.out.println("test");
&&& public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button)findViewById(R.id.MuteClose);
startButton.setOnClickListener(new MuteClose());
playButton = (Button) findViewById(R.id.MuteOpen);
playButton.setOnClickListener(new MuteOpen());
pauseButton = (Button) findViewById(R.id.QQ);
pauseButton.setOnClickListener(new QQ());
ZoomControls zoomControls = (ZoomControls)
this.findViewById(R.id.zoomControls1);
// setOnZoomInClickListener() - 响应单击放大按钮的事件
zoomControls.setOnZoomInClickListener(new VolumeUp());
// setOnZoomOutClickListener() - 响应单击缩小按钮的事件
zoomControls.setOnZoomOutClickListener(new VolumeDown());
previousButton = (Button) findViewById(R.id.yinyue);
previousButton.setOnClickListener(new yinyue());
ejectButton = (Button) findViewById(R.id.CloseC);
ejectButton.setOnClickListener(new CloseC());
unejctionButton = (Button) findViewById(R.id.RestartC);
unejctionButton.setOnClickListener(new RestartC());
sp = getSharedPreferences("192.168.220.66", MODE_PRIVATE);
IPtext = (EditText) findViewById(R.id.SetEtext);
Tcpip = sp.getString("TcpIp", "");
if(Tcpip=="")
&Tcpip="192.168.220.66";
IPtext.setText(Tcpip);&
setip=(Button) findViewById(R.id.set);
setip.setOnClickListener(new SetTcpIp());
setTitle("电脑控制--连接");
//&& IPtext = (TextView)
findViewById(R.id.editText1);
//& IPtext.setText("192.168.220.66");
&&& //yinyue
&&& class yinyue
implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"yinyue\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] = sendmsg.getBytes("UTF-8");
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
&&& class QQ
implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
//RestartC button
RestartC implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"RestartC\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
AlertDialog.Builder(SocketActivity.this)&&&&&
&&&&&&&&&&&&&&&
.setMessage("确定要重启电脑吗?")&&&&&
&&&&&&&&&&&&&&&
.setNegativeButton("取消",&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int which) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
.setPositiveButton("确定",&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int whichButton)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&OutputStream
&&&&&&&&&Dout
= s.getOutputStream();
&&&&&&&&&&&&&&&&
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&&&&&&&&&&&&&
&&&&Dout.write(buffer);&&
&&&&&&&&&&&&&&&&
&&&&Dout.flush();&
catch (IOException e) {
&&&&&&&&&//
TODO Auto-generated catch block
&&&&&&&&&e.printStackTrace();
&&&&&&&&}&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
}).show();
&&& //CloseC
&&& class CloseC
implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"CloseC\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
AlertDialog.Builder(SocketActivity.this)&&&&&
&&&&&&&&&&&
.setMessage("确定要关闭电脑吗?")&&&&&
&&&&&&&&&&&
.setNegativeButton("取消",&&&&&
&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int which) {
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
.setPositiveButton("确定",&&&&&
&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int whichButton)
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&OutputStream
&&&&&&&&Dout
= s.getOutputStream();
&&&&&&&&&&&&&&&
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&&&&&&&&&&&&
&&&&Dout.write(buffer);&&
&&&&&&&&&&&&&&&
&&&&Dout.flush();&
catch (IOException e) {
&&&&&&&&//
TODO Auto-generated catch block
&&&&&&&&e.printStackTrace();
&&&&&&&}&&&&
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
}).show();
//VolumeUp button
VolumeUp implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"VolumeUp\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
&&& //VolumeDown
VolumeDown implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"VolumeDown\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
//MuteOpen button
MuteOpen implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"MuteOpen\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
&&& //MuteClose
MuteClose implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&if(s==null)
&&&sendmsg =
"MuteClose\r";
&&&//SendThread
send = new SendThread(s);
Thread(send).start();
&&&&OutputStream
Dout=s.getOutputStream();
buffer[] =
sendmsg.getBytes("UTF-8");&&
&&&&Dout.write(buffer);&&
&&&&Dout.flush();&
&&&} catch
(IOException e) {
TODO Auto-generated catch block
&&&&e.printStackTrace();
&&& //Receive
RecvThread implements Runnable{
&private DataInputStream inS
&&public RecvThread(Socket s)
&&&&inStream
= new DataInputStream(s.getInputStream());
&&&} catch
(IOException e) {
&&&&e.printStackTrace();
&&@Override
&&public void run() {
&&&String str =
&&&while(true){
= inStream.readUTF();
&&&&&if("bye".equals(str))
&&&&&System.out.println("Client
received message:" + str);
&&&&&//use
handler to handle the text view
&&&&&//msgView.append(str);
&&&&&InstantMsg
&&&&&cwjHandler.post(mUpdateResults);
&&&&&//Thread.sleep(5000);
catch (IOException e) {
&&&&&e.printStackTrace();
&&& //send
SendThread implements Runnable{
&private PrintWriter pW
&//get the output stream from socket
&&public SendThread(Socket s)
&&&DataOutputStream
&&&&oStream
= new DataOutputStream(s.getOutputStream());
&&&&pWriter
= new PrintWriter(oStream,true);
&&&} catch
(IOException e) {
&&&&e.printStackTrace();
&&@Override
&&public void run() {
&&&//pWriter.println("Hello!");
&&&pWriter.println(sendmsg);
& //setip Click
SetTcpIp implements OnClickListener{
&&@Override
&&public void onClick(View v)
&&&&&sp.edit()&&
&&&&&&&&&&&&&&&&
.putString("TcpIp",
IPtext.getText().toString())&&
&&&&&&&&&&&&&&&&
.commit();&&
&&&&&Toast.makeText(SocketActivity.this,"IP地址设置成功!",
Toast.LENGTH_LONG).show();
= new Socket(IPtext.getText().toString(),9101);
catch (UnknownHostException e) {
TODO Auto-generated catch block
&&&&&e.printStackTrace();
catch (IOException e) {
TODO Auto-generated catch block
&&&&&e.printStackTrace();
&&& public
boolean onKeyDown(int keyCode, KeyEvent event)
按下键盘上返回按钮&&&&&
if (keyCode == KeyEvent.KEYCODE_BACK) {
&&&&&&&&&&&
AlertDialog.Builder(this)&&&&&
&&&&&&&&&&&&&&&&&&&
.setMessage("确定退出系统吗?")&&&&&
&&&&&&&&&&&&&&&&&&&
.setNegativeButton("取消",&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int which) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
.setPositiveButton("确定",&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
new DialogInterface.OnClickListener()
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void onClick(DialogInterface
dialog,&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int whichButton)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
finish();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
}).show();
&&&&&&&&&&&
&&&&&&&&&&&
return super.onKeyDown(keyCode, event);
@Override&&&&&
&&& protected
void onDestroy()
super.onDestroy();&&&&&
或者下面这种方式&&&&&
//System.exit(0);&&&&&
//建议用这种&&&&&
android.os.Process.killProcess(android.os.Process.myPid());&&&&&
通过两个程序的通讯控制 即可进行电脑远程遥控。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 手机控制电脑播放音乐 的文章

 

随机推荐