#import "user32.dll"int FindWindowExA(int hwndParent,int hwndChildAfter, string lpClassName, string lpWindowName);
int GetWindowThreadProcessId(int hWnd,int lpdwProcessId);
int GetWindowTextA(int hWnd,string lpString,int nMaxCount);
#import//инициализируем текстовый буффер длиной 128 байт. Вообще должен быть 255 байт! Но он не влезает на экран, из-за чего окно форума сильно растягивается :)
string textbuf="АбвгдежзийклмнопрстуфхцчшщъыьэюяАбвгдежзийклмнопрстуфхцчшщъыьэюяАбвгдежзийклмнопрстуфхцчшщъыьэюяАбвгдежзийклмнопрстуфхцчшщъыьэюя";
int FindWindow(stringclass, string caption, bool captionexactly=false)
{
//int CurrentThreadID=GetWindowThreadProcessId(WindowHandle(Symbol(),Period()),0);string null_string;
int h=0;
while(true)
{
if (captionexactly)
h=FindWindowExA(0,h,class,caption);
else
h=FindWindowExA(0,h,class,null_string);
if (h==0) return(0);
//if (GetWindowThreadProcessId(h,0)!=CurrentThreadID) continue;if (captionexactly) return(h);
int len=StringLen(caption);
if (GetWindowTextA(h,textbuf,128)<len) continue;
if (StringSubstr(textbuf,0,len)==caption) return(h);
}
return(0);
}
你能告诉我如何抓住由F9(命令)调用的窗口吗?
靠文字找不到。
到目前为止,它被抓到的情况如下。
你好!
你能告诉我如何从测试器中运行的EA中确定MT描述符吗?
的构造。
不起作用,因为返回0。
在这个时候,这样的图表是否开放?(用指定的符号和句号)
在这个时候,这样的图表是否开放?(带指定符号和句号)
是的,当然了。
两种方式都试过了。
还是说这是WindowHandle函数的一个特性(虽然在帮助中没有提到它......)。
或者,也许我是哑巴...
是的,当然了。
两种方式都试过了。
或者是WindowHandle函数的特殊性(虽然帮助中没有提到...)。
或者,也许我是哑巴...
在这种情况下,唯一的出路是使用FindWindowExA(...)在所有窗口的列表中搜索Metatrader窗口。
在可视化模式下,获得手柄没有任何问题。但你必须是在非视觉模式下进行测试。那么就有意义了:没有窗口,就没有把手。至于其他打开的窗口,我理解它们是无法从测试者那里获得的。
在这种情况下,唯一的出路是使用FindWindowExA(...)在所有窗口的列表中搜索所需的窗口。
是的,我试着应用第5页 中Ilnur 的代码。
下面是一个启动策略测试器并等待其完成的脚本的例子。用GetWindowTextA() 读取按钮文本。
有趣的是,在这种情况下,测试器窗口不一定要可见。
但从测试者来看,这一招并不奏效。 (我正在启动另一个终端,从测试者那里进行优化,并希望跟踪这一过程的完成情况)。
如果不是太困难的话,你能给我一个FindWindowExA(...)的例子或一个链接吗?
我这里有这样一个寻找窗口的函数。
在SPY++中查找所需窗口的类名和标题。
我注释了线程ID检查,因为在这种情况下不需要(没有源窗口可以比较)。
一般来说,我建议你处理WinAPI函数,如果你要使用它们的话。请参考MSDN(http://msdn.microsoft.com/en-us/library/ff818516.aspx)的详细功能描述。
请教如何正确地在订单窗口(F9)中获得工具清单?
我得到了元素的数量,但不能准确地得到行的数量,返回-1。
#define ID_SYMBOL 0x053E //要选择的字符名称
cmhandle ComboBox
在这里我有这样的功能,用于窗口搜索。
阿列克谢,谢谢,该功能可以使用,但...
我已经注释了流量ID检查,因为在这种情况下不需要(我们没有源窗口可以比较)。
只需要螺纹ID,因为我有两个终端参与。
我通过头的识别摆脱了它,但我仍然想知道如何从测试器下面确定流量ID?