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

📄 frmmain.pas

📁 phonectrl是一款利用手机遥控电脑的软件
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       手机遥控器 v1.0                                 }
{                                                       }
{       版权所有 (C) 2002, 2003 MyvNet                  }
{                                                       }
{      作者:      小冬[kendling]                        }
{      邮件:      kendling@sina.com                     }
{      主页:      http://www.MyvNet.com                 }
{                                                       }
{*******************************************************}

unit frmMain;

interface

uses
  Messages,
  CnRS232Dialog, ActnList, Classes, StdActns, Windows, Forms, Menus, CnRS232,
  SysUtils, CnClasses, CnTrayIcon, StdCtrls, Controls, ExtCtrls,
  CnTimer, jpeg;

type
  TFMain = class(TForm)
    CnTrayIcon1: TCnTrayIcon;
    pmMenu: TPopupMenu;
    pmnu_ShowMainForm: TMenuItem;
    actlst1: TActionList;
    act_FileExit: TFileExit;
    act_ShowMainForm: TAction;
    mmo1: TMemo;
    btnSend: TButton;
    act_SendButton: TAction;
    btn1: TButton;
    CnEdtCmd: TEdit;
    mmMain: TMainMenu;
    miFile: TMenuItem;
    miHelp: TMenuItem;
    miHelpAbout: TMenuItem;
    miFileConnect: TMenuItem;
    miFileDisconnect: TMenuItem;
    N1: TMenuItem;
    miFileOption: TMenuItem;
    N2: TMenuItem;
    miFileExit: TMenuItem;
    act_FileConnect: TAction;
    act_FileDisconnect: TAction;
    act_FileOption: TAction;
    miHelpRegister: TMenuItem;
    N3: TMenuItem;
    act_HelpRegister: TAction;
    act_HelpAbout: TAction;
    img1: TImage;
    N4: TMenuItem;
    pmnuExit: TMenuItem;
    tMouse: TCnTimer;
    procedure act_ShowMainFormExecute(Sender: TObject);
    procedure act_SendButtonExecute(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure CnEdtCmdKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure act_FileDisconnectExecute(Sender: TObject);
    procedure act_FileConnectExecute(Sender: TObject);
    procedure act_FileOptionExecute(Sender: TObject);
    procedure act_HelpRegisterExecute(Sender: TObject);
    procedure act_HelpAboutExecute(Sender: TObject);
    procedure ComPortReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure tMouseTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FMain: TFMain;

implementation

uses UntComm, frmSetting, frmAbout, sndkey32;

{$R *.dfm}

{-------------------------------------------------------------------------------
  过程名:    TFMain.act_ShowMainFormExecute
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.01
  参数:      Sender: TObject
  返回值:    无
  说明:      显示/隐藏主窗口
-------------------------------------------------------------------------------}
procedure TFMain.act_ShowMainFormExecute(Sender: TObject);
begin
  if Self.Visible then
  begin                         
    CnTrayIcon1.HideApplication;
  end else
  begin
    CnTrayIcon1.ShowApplication;
  end;

end;

{-------------------------------------------------------------------------------
  过程名:    TFMain.act_SendButtonExecute
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.01
  参数:      Sender: TObject
  返回值:    无
  说明:      过程说明
-------------------------------------------------------------------------------}
procedure TFMain.act_SendButtonExecute(Sender: TObject);
begin
  SendCmdToComPort(CnEdtCmd.Text);
end;

{-------------------------------------------------------------------------------
  过程名:    TFMain.btn1Click
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.01
  参数:      Sender: TObject
  返回值:    无
  说明:      显示串口状态
-------------------------------------------------------------------------------}
procedure TFMain.btn1Click(Sender: TObject);
begin//
  objWinamp.StartWinamp();
  MessageBox(Handle, PChar(BoolToStr(objWinamp.IsFound)), 'Info', MB_OK);
end;

{-------------------------------------------------------------------------------
  过程名:    TFMain.CnEdtCmdKeyDown
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.07
  参数:      Sender: TObject; var Key: Word; Shift: TShiftState
  返回值:    无
  说明:      发送即时命令
-------------------------------------------------------------------------------}
procedure TFMain.CnEdtCmdKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_RETURN then act_SendButton.Execute;
end;


{-------------------------------------------------------------------------------
  过程名:    TFMain.FormCreate
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.07
  参数:      Sender: TObject
  返回值:    无
  说明:      初始化全局变量
-------------------------------------------------------------------------------}
procedure TFMain.FormCreate(Sender: TObject);
begin
  InitSystem;

  //自动连接
  if bAutoConnect then
    act_FileConnect.Execute;
end;

{-------------------------------------------------------------------------------
  过程名:    ComPortReceiveData
  作者:      小冬[kendling]
  邮件:      kendling@sina.com
  主页:      http://www.MyvNet.com
  日期:      2005.02.01
  参数:      Sender: TObject; Buffer: Pointer; BufferLength: Word
  返回值:    无
  说明:      接收串口返回数据
-------------------------------------------------------------------------------}
procedure TFMain.ComPortReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  tmpStr: array [1..4096] of Char;
  tmpStr2: UTF8String;
  tmpStr3: string;
  strCMDlst: TStrings;
  i, j: Integer;
  objCMD: TPhoneCMD;
begin
  FillMemory(@tmpStr, 4096, 0);
  Move(Buffer^, tmpStr, BufferLength);
  tmpStr2 := Copy(tmpStr, 0, BufferLength);
  tmpStr3 := Utf8ToAnsi(tmpStr2);

  if bUtf8 then
    mmo1.Lines.Add(tmpStr3)
  else
    mmo1.Lines.Add(tmpStr);
  //分析
  strCMDlst := TStringList.Create;
  objCMD    := TPhoneCMD.Create;
  strCMDlst.Clear;
  strCMDlst.Text := tmpStr3;
  for i:=0 to strCMDlst.Count-1 do
  begin
    tmpStr3 := Trim(strCMDlst[i]);
    if (UpperCase(tmpStr3) <> 'OK') and
      (tmpStr3 <> '') then
    begin
      j := Pos('=', tmpStr3);
      if j > 0 then
      begin
        objCMD.strCMD   := Copy(tmpStr3, 0, j-1);
        objCMD.strParam := Copy(tmpStr3, j+1, Length(tmpStr3)-j);
      end else
      begin
        objCMD.strCMD   := tmpStr3;
        objCMD.strParam := '';
      end;
      MessageX(objCMD);        
//      MessageBox(Handle, PChar(tmpStr3 + #13#10 + objCMD.strCMD + #13#10 +
//        objCMD.strParam), PChar('Info'), MB_OK);
    end;  //UpperCase
  end;  //for
  objCMD.Free;
  strCMDlst.Free;
end;

procedure TFMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if objComPort.Connected then
    act_FileDisconnect.Execute;
  ResetSystem;
end;

procedure TFMain.act_FileConnectExecute(Sender: TObject);
begin
  if not objComPort.Connected then
  begin
    act_FileConnect.Enabled := False;
    act_FileDisconnect.Enabled := True;
    objComPort.CommName := strComPort;
    objComPort.StartComm;
    Sleep(500);
    ReadPhoneStatus;
    SendInitCodeToComPort;
  end;
end;

procedure TFMain.act_FileDisconnectExecute(Sender: TObject);
begin
  //复位手机状态
  WritePhoneStatus;
  act_FileDisconnect.Enabled := False;
  act_FileConnect.Enabled := True;
  objComPort.StopComm;
end;

procedure TFMain.act_FileOptionExecute(Sender: TObject);
var
  FSetting: TFSetting;
begin
  FSetting := TFSetting.Create(self);
  FSetting.ShowModal;
  FSetting.Free;
end;

procedure TFMain.act_HelpRegisterExecute(Sender: TObject);
begin
  //
end;

procedure TFMain.act_HelpAboutExecute(Sender: TObject);
var
  FAbout: TFAbout;
begin
  FAbout := TFAbout.Create(Self);
  FAbout.ShowModal;
  FAbout.Free;
end;

procedure TFMain.tMouseTimer(Sender: TObject);
begin
  case iMouse of
    0: //LEFT
      mouse_event(MOUSEEVENTF_MOVE, -3*iMouseMoveSpeed, 0, 0, 0);
    1: //UP
      mouse_event(MOUSEEVENTF_MOVE, 0, -3*iMouseMoveSpeed, 0, 0);
    2: //RIGHT
      mouse_event(MOUSEEVENTF_MOVE, 3*iMouseMoveSpeed, 0, 0, 0);
    3: //DOWN
      mouse_event(MOUSEEVENTF_MOVE, 0, 3*iMouseMoveSpeed, 0, 0);
  end;
end;

end.

⌨️ 快捷键说明

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