Düğme ve fare tıklamalarının durdurulmasıyla otomasyon. - sayfa 5

 
xeon >> :

Terminal iyiydi :-)))

Her birimizin böyle bir terminali var. Ve içinde bir anlamda kırmızı bir düğme var.

Sadece bir kulüple kendi kafanıza vurmanız gerekir. :))

 

İlnur , buton metni de bir şekilde okunabilir. Spy++ programı okur.



onlar. düğme "Durdur" olarak ayarlandığında daha fazla eylem gerçekleştirmeyi bekler.

User32.dll'den, düğmenin metnini doğru şekilde çıkaran komut istemi işlevi.



GetDlgItemText İşlevi

Tanım:
function GetDlgItemText(Dlg: HWnd; IDDlgItem: Tamsayı; Str: PChar; MaxCount: Tamsayı): Tamsayı;
Kontrolün metnini okur.
parametreler:
Dlg: İletişim kutusunun tanımlayıcısı.
IDDlgItem: Öğe kimliği.
Str: Metin almak için arabellek.
MaxCount: Tampon boyutu.
Geri dönüş değeri:
Kopyalanan gerçek karakter sayısı.


#import "user32.dll"

string GetDlgItemText(int hWnd, int IDDlgItem, string PChar, int MaxCount);

#içe aktarmak


Fonksiyonu doğru şekilde mi bağlıyorum?


Ve sonra terminal bana günlükleri veriyor

2008.11.15 21:03:41 test cihazı EURUSD,H1: 'user32.dll' dll'sinden 'GetDlgItemText' işlevini çağıramıyor (hata 127)

 
xeon >> :

Terminal iyiydi :-)))

Xeon, her şeyi sen başlattın...

Ben kendim bu bozkıra tırmanmazdım ... bu yüzden gerek yok ....

 
HIDDEN >> :

. . .

#import "user32.dll"

string GetDlgItemText(int hWnd, int IDDlgItem, string PChar, int MaxCount);

#içe aktarmak


Fonksiyonu doğru şekilde mi bağlıyorum?


Ve sonra terminal bana günlükleri veriyor

2008.11.15 21:03:41 test cihazı EURUSD,H1: 'user32.dll' dll'sinden 'GetDlgItemText' işlevini çağıramıyor (hata 127)

Daha doğrusu öyle. . .
 #import "user32.dll"
   int GetDlgItemTextA ( int hWnd , int IDDlgItem , string PChar , int MaxCount ) ;
#import
 
Ilnur >> :
Daha doğrusu öyle. . .

Sonuçta, bu bir tamsayı döndürür, ancak düğmenin metnine ihtiyaç vardır.

 
HIDDEN >> :

Sonuçta, bu bir tamsayı döndürür, ancak düğmenin metnine ihtiyaç vardır.

Metin, bir PChar dize arabelleğinde döndürülür.

İşlevin kendisi, okunan gerçek karakter sayısını döndürür.

 
HIDDEN >> :

İlnur , buton metni de bir şekilde okunabilir. Spy++ programı okur.


İşte strateji test cihazını başlatan ve tamamlanmasını bekleyen bir komut dosyası örneği. Düğme metni GetWindowTextA() işlevi kullanılarak okunur.

İlginç bir şekilde, test penceresinin görünür olması gerekmez.


 #include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor ( int hWnd , int gaFlags ) ;
   int GetDlgItem ( int hDlg , int nIDDlgItem ) ;
#import

void start ( )
{
   int hMetaTrader , hTerminal , hTester , hButtonStart ;
      
   hMetaTrader = GetAncestor ( WindowHandle ( Symbol ( ) , Period ( ) ) , 2 ) ; //дескриптор основного окна терминала
	
   hTerminal = GetDlgItem ( hMetaTrader , 0xE81E ) ;
   hTester = GetDlgItem ( hTerminal , 0x53 ) ;
   hButtonStart = GetDlgItem ( GetDlgItem ( hTester , 0x81BF ) , 0x40A ) ;  //дескриптор кнопки "Старт"
	
   PostMessageA ( GetDlgItem ( hTester , 0x81BF ) , WM_COMMAND , 0x40A , hButtonStart ) ; //нажимаем кнопку старт
   
   Print ( "Запуск тестера стратегий" ) ;
   string sButtonStartName = "" ;
   while ( ! IsStopped ( ) ) 
   {
      Sleep ( 3000 ) ;
      GetWindowTextA ( hButtonStart , sButtonStartName , 6 ) ; //считываем текст кнопки запуска тестера
      if ( sButtonStartName = = "Старт" )                    
      {
         Print ( "Работа тестера завершена" ) ;
         break ;
      }
   }
}
 
Ilnur >> :

İşte strateji test cihazını başlatan ve tamamlanmasını bekleyen bir komut dosyası örneği. Düğme metni GetWindowTextA() işlevi kullanılarak okunur.

İlginç bir şekilde, test penceresinin görünür olması gerekmez.


Çok teşekkür ederim. En azından tüm bu işlevler hakkında mantıklı bir şekilde okuyabileceğiniz yerlerde, kullanım örneklerini düşünün. Aramak için tüm interneti karıştırdım, ama pek bir anlamı yok. Belki Win API hakkında iyi bir kitap vardır? Sanki işlevin ne yaptığının çıplak bir açıklaması hala yeterli değil.

 
HIDDEN >> :

Çok teşekkür ederim. En azından tüm bu işlevler hakkında mantıklı bir şekilde okuyabileceğiniz yerlerde, kullanım örneklerini düşünün. Aramak için tüm interneti karıştırdım, ama pek bir anlamı yok. Belki Win API hakkında iyi bir kitap vardır? Sanki işlevin ne yaptığının çıplak bir açıklaması hala yeterli değil.

WinAPI işlevleriyle ilgili tüm bilgileri MSDN'den alıyorum. Ben buna çok alışkınım. . .

Not Ne yazık ki, WinAPI hakkında hiç iyi bir kitap görmedim.

 
Ilnur >> :

WinAPI işlevleriyle ilgili tüm bilgileri MSDN'den alıyorum. Ben buna çok alışkınım. . .


Not Ne yazık ki, WinAPI hakkında hiç iyi bir kitap görmedim.

Ve farenin sağ tuşuyla açılan menüleri nasıl engellediklerini. Terminalden başka bir programa geçerken menü kaybolur ve bu basitçe algılanamaz. Belki bir şekilde programı durdurmanız gerekir?