Como posso determinar se o botão de rolagem é pressionado ou deprimido e, em caso afirmativo, pressioná-lo! - página 4

 
Zhunko:

Se Leo estava atento, o link para a biblioteca é meu WinUser32.mqh. Tem todos os comandos e funções necessárias. Não há necessidade de exportar nada.


33017 - remover/ajustar autoscroll;
ou algo mais ?
 
LEOK:

33017 - remover/ajustar autoscroll;
ou algo mais ?
Spy++ é uma ajuda.
Pegue as informações diretamente da fonte.
 
LEOK:

33017 - remover/setar autoscroll;
ou algo mais ?
Para controle, sim. Para o status, você precisa das propriedades do gráfico.
 

Pessoalmente, ainda não entendo qual é o problema com o uso do TB_GETSTATE. De que atividade de janela estávamos falando? É uma mensagem de janela normal enviada ao controle, assim como WM_GETTEXT, BM_GETSTATE etc. Sempre usei estas mensagens - sem nenhum problema. E a aplicação recebe informações dos controles com estas mensagens da mesma forma.

E não importa se a janela está ativa ou não.

 
Meat:

Pessoalmente, ainda não entendo qual é o problema com o uso do TB_GETSTATE. De que atividade de janela estávamos falando? É uma mensagem de janela normal enviada ao controle, assim como WM_GETTEXT, BM_GETSTATE etc. Sempre usei estas mensagens - sem nenhum problema. E a aplicação recebe informações dos controles com estas mensagens da mesma forma.

Não importa realmente se a janela está ativa ou não.

Este painel funciona apenas com o gráfico ativo. O que acontecerá se, no momento antes de enviar a mensagem, a atividade da janela mudar? Outra janela de gráficos ficará ativa. Assim, você terá a posição do botão para a outra janela e não para a sua. Neste caso, como você pode sincronizar a atividade da janela para a qual você deseja obter a posição do botão com a mensagem a ser enviada? Se isto não for feito, haverá uma série de erros inesperados. Mesmo com DLL, isto não é óbvio.

É mais fácil e mais confiável fazê-lo através de propriedades gráficas.

 
Zhunko:

Este painel só funciona com o horário ativo. O que acontece se a atividade da janela mudar um momento antes de a mensagem ser enviada? Outra janela gráfica torna-se ativa. De forma correspondente, você terá a posição do botão para outra janela em vez da sua própria. Neste caso, como você pode sincronizar a atividade da janela para a qual você deseja obter a posição do botão com a mensagem a ser enviada? Se isto não for feito, haverá uma série de erros inesperados. Mesmo com DLL, isto não é óbvio.

É mais fácil e mais confiável fazê-lo através de propriedades gráficas.


Por favor me dê um exemplo de como usar (código): como obtê-lo através de propriedades gráficas?!
 
LEOK:
Por favor me dê um exemplo de como usar (código): como conseguir isso através das propriedades do gráfico ?!
Imitar o comando para abrir as propriedades do gráfico.
Aguarde o diálogo modal.
Encontre-o.
Encontre o elemento necessário.
Fechar o diálogo modal.

Que perguntas você tem...
 
Zhunko:

Este painel só funciona com o horário ativo. O que acontece se a atividade da janela mudar um momento antes de a mensagem ser enviada? Outra janela gráfica torna-se ativa. De forma correspondente, você terá a posição do botão para outra janela em vez da sua própria. Neste caso, como você pode sincronizar a atividade da janela para a qual você deseja obter a posição do botão com a mensagem a ser enviada? Se isto não for feito, haverá uma série de erros inesperados. Mesmo com DLL, isto não é óbvio.

É mais fácil e mais confiável fazê-lo através das propriedades do gráfico.

Bem, você pode forçar a ativação da tabela necessária primeiro. E também para a confiabilidade, verifique o nome da janela principal do terminal. Deve conter o nome da tabela desejada. Entretanto, não insisto, talvez sua versão ainda seja mais conveniente, porque você não precisa trocar a tabela. Mas a janela das propriedades do gráfico estará piscando :)

 
Meat:

Bem, você pode primeiro ativar à força a tabela necessária. Verifique também o nome da janela principal do terminal para ter certeza. Deve conter o nome da tabela necessária. Entretanto, não insisto, provavelmente, que sua versão ainda seja mais conveniente, pois não há necessidade de trocar a tabela. Mas a janela das propriedades do gráfico irá aparecer :).

Certamente, é possível ativar. Mas como sincronizá-lo? A atividade da janela pode ser desativada por qualquer programa ou pelo próprio usuário a qualquer momento. Como isso pode ser resolvido? É uma maneira muito inconveniente.

Sim. A janela cintila, mas muito rapidamente. Se o computador não estiver ocupado, ele é quase imperceptível.

LEOK:

Dê-me um caso de uso (código): como você pode obter isso através de propriedades gráficas ?!

Veja em meu WinUser32.mqh. Há códigos de comando ali. Você não precisa procurar em Espião. Você já sabe o resto.

Andrei escreveu-o corretamente:

jartmailru:
Simular o comando para abrir as propriedades do gráfico.
Aguarde o diálogo modal.
Encontre-o.
Encontre o item desejado.
Fechar o diálogo modal.
Somente você terá que trocar a guia antes de encontrar o item.
 
Meat:

Bem, você pode primeiro ativar à força a tabela necessária. Verifique também o nome da janela principal do terminal para ter certeza. Deve conter o nome da tabela necessária. Entretanto, não insisto, provavelmente, que sua versão ainda seja mais conveniente, pois não há necessidade de trocar a tabela. Mas a janela das propriedades do gráfico estará piscando :)

A velocidade na qual a MT atualizará o estado do botão é desconhecida. Portanto, é desejável inserir uma pausa entre a ativação da janela e a leitura do status, que em alguns casos será insuficiente e a lógica do programa falhará. Portanto, o que Vadim está fazendo é, em certo sentido, um "modo industrial".