手机控制电脑上的酷狗切换歌曲

国庆回家,喜欢听歌,音响接上电脑,由于电脑和音响放在三楼上,要是遇到不喜欢听的歌就得爬到3楼去换歌,太麻烦。想个办法就弄了这么个控制程序。人在一楼吃饭,可以通过手机控制三楼上的电脑播放歌曲,只要PC和手机端都可以接入互联网,没有距离的限制。

 思路:手机和pc机通过中转站通信,中转站选择美国的免费服务器空间,手机上通过浏览器提交换歌的参数,服务端接受并保存参数到数据库上。pc端的程序每隔5秒去读取服务器数据库上的数据,根据取回的数据作简单的判断,然后调用win32 API键盘操作函数, 模拟键盘操作来控制酷狗切换歌曲。

1. 推荐使用免费的服务器空间:http://www.freewebhostingarea.com/,我申请空间的地址是,http://fjut.ueuo.com/

2. 在数据库上建表KuGouController,如下图:

(MN~`HJAD4{{@2[WB@PNNGQ

三个字段分别表示 操作类型、当前播放状态、是否改变状态

3. 编写php文件,上传到服务器根目录。

/**KuGouInfo_PC1_Rec.php 读取手机端是否提交播放状态*/

<?php
//连接数据库
$con = mysql_connect("localhost","506129","密码是什么呢?") or die("连接服务器失败!");
//查询状态
$sql = "SELECT * FROM KuGouController WHERE ActionType = 'TrackSwitch'";
$result = mysql_db_query("506129", $sql, $con) or die("查询数据库失败!");
while($row = mysql_fetch_array($result))
{
	echo $row['IsChange'];
}
?>

/**KuGouInfo_PC2_Rec.php 读取手机端提交的播放状态*/

<?php
//接收参数
$Type = $HTTP_POST_VARS["postType"];
//连接数据库
$con = mysql_connect("localhost","506129","密码是什么呢?") or die("连接服务器失败!");
//输出状态
$sql = "SELECT * FROM KuGouController WHERE ActionType = 'TrackSwitch'";
$result = mysql_db_query("506129", $sql, $con) or die("查询数据库失败!");
while($row = mysql_fetch_array($result))
{
    echo $row['CurrentState'];
}
//切换状态
$sql = "UPDATE KuGouController SET IsChange = 'N' WHERE ActionType = 'TrackSwitch'";
$query = mysql_db_query("506129", $sql, $con) or die("更新数据库失败!");
?>

/**KuGouInfo_Mobile_Rec.php 接收手机端提交的播放状态并存入数据库*/

<?php
//接收参数
$Type = $_GET["actionType"];
//连接数据库
$con = mysql_connect("localhost","506129","密码?") or die("连接服务器失败!");
//上一曲
if($Type == "PreviousTrack")
{
    $sql = "UPDATE KuGouController SET CurrentState = 'PreviousTrack', IsChange = 'Y' WHERE ActionType = 'TrackSwitch'";
    $query = mysql_db_query("506129", $sql, $con) or die("更新数据库失败!");
}
//下一曲
else if($Type == "NextTrack")
{
    $sql = "UPDATE KuGouController SET CurrentState = 'NextTrack', IsChange = 'Y' WHERE ActionType = 'TrackSwitch'";
    $query = mysql_db_query("506129", $sql, $con) or die("更新数据库失败!");
}
else
{
    echo "非法提交,会发生吗? http://www.cnblogs.com/fjut";
}
?>

4.手机上访问的html文件,上传到服务器根目录。

<html>
<body>
<title>酷狗播放远程控制</title>
<a href="http://fjut.ueuo.com/KuGouInfo_Mobile_Rec.php?actionType=PreviousTrack"><h3>上一曲</h3></a></br>
<a href="http://fjut.ueuo.com/KuGouInfo_Mobile_Rec.php?actionType=NextTrack"><h3>下一曲</h3></a>
</body>
</html>

5. PC端上的Delphi程序。

//使用idhttp控件提交和获取数据
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Timer1: TTimer;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  postList: TStrings;
  Response: TStringStream;
  result: string;
  done: Boolean;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  Response := TStringStream.Create('');
  postList := TStringList.Create;
  Timer1.Enabled := True;
  Button2.Caption := 'Controlling'; 
  button2.Enabled := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  str: string;
begin
  //获取状态是否改变
  //IdHTTP1.IOHandler.Close;
  try
    str := IdHTTP1.Get('http://fjut.ueuo.com/KuGouInfo_PC1_Rec.php');
  except
    Edit1.text := '连接服务器出错!';
  end;
  if( str= 'Y') then
    begin
      try
        //Post数据
        IdHTTP1.HandleRedirects := True;
        postList.add('postType=fjut');
        IdHTTP1.Post('http://fjut.ueuo.com/KuGouInfo_PC2_Rec.php', postList, Response);
        done := True;
      except
        done := False;
      end;
      //获取服务端响应的数据
      if(done) and (Pos('200 OK', IdHTTP1.ResponseText) <> 0) then
        begin
          try
            result := IdHTTP1.Get('http://fjut.ueuo.com/KuGouInfo_PC2_Rec.php');
            Edit1.text := result;
            except
            Edit1.text := '连接服务器出错!';
          end;
          //模拟键盘操作
          //下一首
          if(result = 'NextTrack') then
            begin
              keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);                //按下Ctrl键
              keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);                      //按下Alt键
              keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), 0, 0);                    //按下->键
              keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);  //放开Ctrl键
              keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);        //放开Alt键
              keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), KEYEVENTF_KEYUP, 0);      //放开->键
            end
          //上一首
          else if(result = 'PreviousTrack') then
            begin
              keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);                //按下Ctrl键
              keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);                      //按下Alt键
              keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), 0, 0);                      //按下<-键
              keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);  //放开Ctrl键
              keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);        //放开Alt键
              keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), KEYEVENTF_KEYUP, 0);        //放开<-键
            end
          else
            begin
              ;//other function such as......fjut 
            end;
        end;
    end;
end;
end.

6. 打开酷狗,打开delphi程序,点击 “开始” 控制,然后就可以使用手机上的浏览器打开http://fjut.ueuo.com/可以进行歌曲的上下切换。不受距离的影响,不管人在哪,只要PC和手机端都可以介入互联网就可以切歌操作。
7. 截图:

(1).PC端:

QQ截图20121005185527

(2). 手机端:

QQ截图20121005185546

8. OK,现在人坐在一楼吃饭,可以拿出手机打开浏览器控制三楼电脑上的音乐切换,哈哈

原文地址:https://www.cnblogs.com/fjut/p/2712417.html