带有按钮和鼠标点击拦截的自动化。 - 页 6

 
HIDDEN >> :

鼠标第一个按钮上打开的菜单是如何被拦截的?当你从终端切换到另一个程序时,菜单消失了,你就是抓不住它。也许你需要以某种方式冻结该程序?

从上下文菜单中,许多项目都有一个WM_COMMAND的代码。

 
HIDDEN >> :

以及如何拦截通过鼠标右键打开的菜单。从终端切换到另一个程序时,菜单消失了,你就是抓不住它。可能有什么办法可以停止这个程序?

当使用Spy++工具时,就没有问题了。

在软件中,从窗口列表中选择所需的窗口。启动Windows消息拦截器(Spy -> Messages...)。

在出现的窗口中配置信息过滤器(信息标签)。


然后,你可以在被调查的程序中进行各种操作,包括右键点击菜单,看看实用程序显示的内容。

 
Ilnur >> :

当使用Spy++工具时,就没有问题了。

在软件中,从窗口列表中选择所需的窗口。启动Windows消息拦截器(Spy -> Messages...)。

在出现的窗口中配置信息过滤器(信息标签)。


之后,你可以在你调查的程序中进行不同的操作,包括右键菜单,看看工具的显示。

问你一个问题,如果你在这里写的东西都有这么好的知识,为什么你不使测试器自动运行,优化它,设置正确的变量,等等。

 

如何以编程方式按下回车键

这事有些不对劲。

进入 DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

问你一个问题,如果你对你在这里写的一切都如此了解,你为什么不做一个自动测试器运行,优化,替换正确的变量,等等。

我在这里所阐述的一切,我没有很好的知识。我从来没有声称过这一点。


我从来没有对软件控制测试器感兴趣。这就是为什么我不想实施这样的东西。

在这个主题中,有一些关于使用WinAPI函数的技术问题,所以我决定参与进来。

 
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA( hButtonStart, sButtonStartName,6); //считываем текст кнопки запуска тестера
      if( sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }

我们需要

string sButtonStartName= "";

至少初始化长度为6(StringLen("Start")+1),或者最好是长度为255字符。

否则,在GetWindowTextA 返回sButtonStartName后,内存中相邻的变量会被扔掉。

在我与邻近分支 的RestoreScripts的例子中,如果不这样做,#define所定义的字符串的值就会改变。

 
Erics >> :

我们需要

string sButtonStartName= "";

至少初始化长度为6(StringLen("Start")+1),或者最好是长度为255字符。

否则,在GetWindowTextA返回sButtonStartName后,内存中相邻的变量会被扔掉。

在我的下一个分支 中的RestoreScripts的例子中,如果不这样做,#define定义的字符串的值就会改变。

是的,这是正确的。我当时写得很快,错过了这一点。

 
Ilnur >> :

在这个主题中,有一些关于使用WinAPI函数的技术问题,所以我决定参与进来。

我发现了一个有趣的窗口。几乎不可能在里面抓到任何东西。该窗口被称为 "另存为"。你能告诉我如何按 "另存为 "按钮吗?



如果你专门选择了保存按钮,那么我们的按钮代码是00000001



但当你通过这个代码访问它时,什么也没有发生。这个没有名字的窗口是什么?

 
HIDDEN >> :

发现一个有趣的窗口。几乎不可能在其中抓到任何东西。该窗口被称为 "另存为"。你能告诉我如何按 "另存为 "按钮吗?


如果你专门选择了保存按钮,那么按钮代码是0000000001


但当你通过这个代码访问它时,什么也没有发生。这个未命名的窗口是什么样子的。

该对话框是标准的壳牌IIANM。而 "保存 "按钮是一个重新命名的ID_OK按钮。

 
TheXpert >> :

该对话框是标准的壳牌IIANM。而 "保存 "按钮是一个重新命名的ID_OK按钮。

诉诸 "确定 "按钮毫无作用


PostMessageA(GetDlgItem(hTerminal,0x53),WM_COMMAND,IDOK,0);