【问题标题】:Can not click on control无法点击控制
【发布时间】:2021-01-20 10:44:05
【问题描述】:

我正在使用 AutoItX.Dotnet 3.3.14.5 from here 这是我的代码:

var win = AutoIt.AutoItX.WinGetHandle(txtWindowTitle.Text);
if (win != (IntPtr) 0)
{
    var cont = AutoIt.AutoItX.ControlGetHandle(win, "&Next >");
    AutoIt.AutoItX.ControlClick(win, cont);
}

一切正常,它会执行控制点击(它会返回 1,因为我知道它点击了),但什么也不会发生。我的意思是点击那个按钮应该会发生一些事情,但不会发生点击。我哪里错了?

【问题讨论】:

  • 呃,你的意思是一切都运行良好......不管它运行良好还是不运行?或者你是说不抛出异常?正如您所说,正在调用 ControlClick 函数的预期结果是什么?您是否与 ISpy 确认您拥有正确的窗口句柄和控制句柄?

标签: c# autoit-c#-wrapper


【解决方案1】:

确保您以管理员权限运行应用程序。

ControlClick ( "title", "text", controlID [, button = "left" [, clicks = 1 [, x [, y]]]] )

此外,某些 Windows 应用程序不会响应 ControlClick,除非它们处于活动状态/焦点位置。 试试这个:

var win = AutoIt.AutoItX.WinGetHandle(txtWindowTitle.Text);
if (win != (IntPtr) 0)
{
    AutoIt.AutoItX.WinActivate(win);
    var cont = AutoIt.AutoItX.ControlGetHandle(win, "&Next >");
    AutoIt.AutoItX.ControlClick(win, "", cont);
}

【讨论】:

  • 我用 IntPtr 重载而不是字符串正确调用 ControlClick :)
  • 问题出在管理员权限上。我必须使用“以管理员身份运行”显式运行我的程序。请用此信息更新您的答案,我会接受它:)
  • @InsideMan 是的,缺少管理员权限是 controlClick 最常见的问题!干杯
  • 用管理员权限提示更新你的答案,所以我接受它 Milos :)
  • @InsideMan 我确实注意到二进制文件必须以管理员权限运行。这与 autoitX 无关。您需要在 IDE 应用程序设置中进行设置,以便在需要管理员权限的情况下进行编译,或者只需使用管理员权限运行 exe
猜你喜欢
  • 2015-05-31
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 2010-11-29
相关资源
最近更新 更多