使用SendMessage

时间:2015-10-04 00:27:09

标签: delphi delphi-xe

我有一个应用程序通过sendmessage在Google Chrome浏览器中执行点击。当我单击页面的所有组件而没有任何问题时,它可以完美地工作:我无法选择RadioButton。

这是我唯一无法点击的部分:

screenshot

我已经尝试过PostMessageA和SendNotifyMessage替代方案但没有成功,我也在互联网上找到了可以解决问题的代码,但没有成功 - 我在下面提供了代码。

观察:使用传统的点击系统进行我的应用是不可行的。

已经尝试过的替代品

SendMessage(Window, WM_LBUTTONDOWN, Direction, MakeLong(X, Y));
SendMessage(Window, WM_LBUTTONUP, Direction, MakeLong(X, Y));
PostMessageA(Window, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(X, Y));
PostMessageA(Window, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(X, Y));
SendNotifyMessage( Window, WM_LBUTTONDOWN, Direction, MakeLong(X, Y) );
SendNotifyMessage( Window, WM_LBUTTONUP, Direction, MakeLong(X, Y) );

承诺解决问题的代码无法正常工作

procedure TForm1.ChromeBugFix;
var
  texto: string;
  specialfolder, I: integer;
  ARQ: TStringList;
  Ln, NewLn: String;
  caminhochrome: String;
begin
 specialFolder := CSIDL_LOCAL_APPDATA;
 caminhochrome := GetSpecialFolderPath(specialFolder);
 caminhochrome := caminhochrome + '\Google\Chrome\User Data\Local State';
  if fileexists(caminhochrome) then
  begin
   ARQ:=TStringList.Create;
   ARQ.LoadFromFile(caminhochrome);
   ARQ.Text:=StringReplace(ARQ.Text,'"enabled": true','"enabled": false',[rfReplaceAll]);
   ARQ.Text:=StringReplace(ARQ.Text,'"hardware_acceleration_mode_previous": true','"hardware_acceleration_mode_previous": false',[rfReplaceAll]);
    for I := 0 to ARQ.Count - 1 do
    begin
      ARQ[0] := '{ "hardware_acceleration_mode": { "enabled": false },';
    end;
     ARQ.SavetoFile(caminhochrome);
  end;
end;

0 个答案:

没有答案