Pergunta

Eu estou fazendo um bot para um jogo Flash, e eu descobri como importar todo o AutoIt funções em meu código C #.

string title = "Minesweeper";
string full = auto.WinGetTitle(title,"");
string handle = auto.WinGetHandle(full, "");
if (auto.WinExists(full, "") == 1)
    textBox1.Text = "window exists";
addressBox.Text = full;

for (int r = 1; r < 40; r++)
{
    auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10);
    //auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10);
}

(eu tenho certeza que o descomentada deve ser o único com alça e vice-versa, mas isso funciona para Minesweeper .)

Assim, ele funciona para Campo Minado e não requer que seja a janela ativa. Quando eu tento fazê-lo funcionar no meu jogo flash requer a janela do Internet Explorer para ser o único ativo. Isto é algo em Flash requer ou há algo mais que eu poderia fazer para que ele funcione quando o jogo é minimizado?

Este não tem que ser feito usando as importações AutoIt. Tentei SendMessage a partir user32 em um ponto também, mas isso não funcionou para conteúdo flash em tudo para mim.

Eu só testei isso em um site aleatório em vez de um site em Flash ou Campo Minado e por alguma razão o código funciona se eu executá-lo de dentro do programa scripting Autoit, mas não do meu programa C # ...

20 de junho de 2012 : Eu tenho certeza que isso tem algo a ver com a forma como o identificador é passado. Eu fiz alguns testes com a chamada de um arquivo AutoIt EXE e usando a alça que começa a partir do código C # como um argumento, eu tenho que adicionar um 0x a ele, e também, em seguida, dentro do código AutoIt tenho de lançá-lo de uma string a um HWnd, de modo que poderia ser algo, caso em que eu não sei o que fazer uma vez que a função importada depende de uma entrada de cadeia para a alça.

Foi útil?

Solução

Algo que você pode querer tentar descartar identificador de janela e questões de manipulação de variáveis. Não deve haver nenhuma necessidade de usar WinGetTitle o título da janela "Campo Minado" deve funcionar bem. De acordo com a minha ferramenta AutoIt v3 janela de informações no Windows 7 o título e classe da janela Campo Minado são ambos Minesweeper. Tão difícil de codificação

auto.ControlClick ( "[TITLE: Minesweeper; CLASSE: Minesweeper], "", "", "esquerda", 2, r * 10, R * 10);

trabalho poder. Para saber mais sobre como isso funciona veja Descrições janela Avançado no arquivo AutoIt ajuda. Se este olhar ainda não está funcionando até WinTitleMatchMode no arquivo de ajuda. Ele permite que você configure algumas regras de clemência na janela correspondente título que poderia tornar isso mais fácil para você.

AutoIt X é a versão controle de DLL / COM da AutoIt é como você gostaria de acrescentar AuotIt a qualquer linguagem que tenha suporte DLL / COM. No caso de alguém estava pensando como você usaria AutoIt em C # . Infelizmente AutoIt X muitas vezes fica para trás no desenvolvimento e teste do idioma principal. Embora não têm nenhuma razão para pensar que o problema é causado por um bug apenas dando algumas informações sobre o projeto AutoItX. Se você não tiver você deve postar uma cópia desta questão ao ActiveX / Ajuda COM and Support (AutoItX) fórum. Um a das melhores coisas sobre AutoIt na minha experiência ao longo dos anos é a comunidade (que não mudou muito aqui). Essa seção do fórum particular é frequentada por alguns dos desenvolvedores da linguagem que ficaria feliz em ajudar.

Quanto à sua 20 de junho nota, AutoIt trata todas as variáveis ??como cordas até que ele detecta que o seu algo especial. Ele não sabe é um valor hexadecimal, a menos que começa com o 0x você mencionou. Isso fez com que todos os tipos de problemas estranhos para mim no passado. Eu tenho em várias ocasiões teve que adicionar zero a uma variável para obter AutoIt para avaliá-lo corretamente depois. Isso não acontece muitas vezes com AutoIt3 mas apenas algo para manter em mente.

Se você precisar de alguma AutoIt referência de código abundância de membros da fórum AutoIt noreferrer nofollow fizeram bots Minesweeper você pode conferir e possivelmente ver algo útil.

Outras dicas

Verifique se o seu executar o seu programa C # como admin. Esta é a única diferença que posso ver por um trabalho método e o outro não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top