看了一段delphi android模拟点击的代码,但是不会用,留着以后研究

procedure TForm1.Button2Click(Sender: TObject);

var

myrun:JRunTime;

myclass:JRunTimeClass;

proc:JProcess;

strs:Androidapi.JNIBridge.TJavaObjectArray;

begin

strs:=Androidapi.JNIBridge.TJavaObjectArray.Create(21);

Sleep(8000);

strs.Items[0]:=StringToJString('su');

strs.Items[1]:=StringToJString('-c');

strs.Items[2]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 53 120');

strs.Items[3]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 54 125');

strs.Items[4]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 57 0');

strs.Items[5]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 48 10');

strs.Items[6]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 50 10');

strs.Items[7]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 2 0');

strs.Items[8]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 0 0');

strs.Items[9]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 53 120');

strs.Items[10]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 54 125');

strs.Items[11]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 57 0');

strs.Items[12]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 48 12');

strs.Items[13]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 50 12');

strs.Items[14]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 2 0');

strs.Items[15]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 0 0');

strs.Items[16]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 57 0');

strs.Items[17]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 48 0');

strs.Items[18]:=StringToJString('/system/bin/sendevent /dev/input/event3 3 50 0');

strs.Items[19]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 2 0');

strs.Items[20]:=StringToJString('/system/bin/sendevent /dev/input/event3 0 0 0');

myrun:=TJRunTime.JavaClass.getRuntime;

proc:=myrun.exec(strs);

end;

把sendevent命令放到一个SH文件中,然后用SH命令启动该文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Delphi 10.3 代码示例,用于接收事件订阅: ```delphi unit MainForm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.JSON; type TMainForm = class(TForm) MemoLog: TMemo; ButtonSubscribe: TButton; TimerLog: TTimer; procedure ButtonSubscribeClick(Sender: TObject); procedure TimerLogTimer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } FSubscriber: TEventSubscriber; public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.dfm} type TEventSubscriber = class(TThread) private FEvent: THandle; FLogMemo: TMemo; protected procedure Execute; override; public constructor Create(Event: THandle; LogMemo: TMemo); end; constructor TEventSubscriber.Create(Event: THandle; LogMemo: TMemo); begin inherited Create(False); FEvent := Event; FLogMemo := LogMemo; end; procedure TEventSubscriber.Execute; var WaitResult: DWORD; Buffer: array [0..255] of Char; JsonValue: TJSONValue; begin while not Terminated do begin WaitResult := WaitForSingleObject(FEvent, INFINITE); if WaitResult = WAIT_OBJECT_0 then begin if ReadConsole(GetStdHandle(STD_INPUT_HANDLE), @Buffer, SizeOf(Buffer), nil, nil) then begin JsonValue := TJSONObject.ParseJSONValue(Buffer); if Assigned(JsonValue) then begin Synchronize( procedure begin FLogMemo.Lines.Add(JsonValue.ToString); end ); JsonValue.Free; end; end; end; end; end; procedure TMainForm.ButtonSubscribeClick(Sender: TObject); var Event: THandle; begin Event := CreateEvent(nil, True, False, nil); if Event <> 0 then begin FSubscriber := TEventSubscriber.Create(Event, MemoLog); SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT or ENABLE_LINE_INPUT or ENABLE_ECHO_INPUT); ButtonSubscribe.Enabled := False; MemoLog.Lines.Add('正在等待事件...'); FSubscriber.Start; end; end; procedure TMainForm.TimerLogTimer(Sender: TObject); begin MemoLog.Lines.Add('正在等待事件...'); end; procedure TMainForm.FormCreate(Sender: TObject); begin TimerLog.Enabled := True; end; end. ``` 这个示例代码创建了一个 `TEventSubscriber` 类,用于在后台线程中接收事件订阅。在主窗体上,有一个按钮 `ButtonSubscribe`,点击这个按钮会创建一个 `TEventSubscriber` 对象,并在后台线程中等待事件的到来。`TEventSubscriber` 等待事件的方式是调用 `WaitForSingleObject` 函数,当事件到来时,`ReadConsole` 函数将读取控制台输入的数据,并使用 `TJSONObject.ParseJSONValue` 函数解析 JSON 数据。如果 JSON 数据解析成功,就将 JSON 字符串添加到主窗体的 `TMemo` 控件上。 在 `ButtonSubscribeClick` 事件处理程序中,我们使用 `CreateEvent` 函数创建一个事件对象,并将它传递给 `TEventSubscriber` 对象。`SetConsoleMode` 函数用于配置控制台输入模式,以便可以读取控制台输入的数据。在 `TEventSubscriber.Execute` 方法中,我们使用 `Synchronize` 函数将日志消息添加到主窗体的 `TMemo` 控件上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值