Usuário com melhor resposta
C# [ Console ] - AJUDA EM CÓDIGO!

Pergunta
-
Olá amigos, preciso de um help em relação a ferramenta que estou desenvolvendo.
O programa em si, está executando perfeitamente a ação de validar a abertura do otPokemon, também executando corretamente a ação de fechamento do GAME. MAS, a validação só é realizada após o método InsertKEY( );.
OBJETIVO PRINCIPAL - Gostaria que, o programa validasse instantaneamente quando o GAME fosse fechado e voltasse para o status de [otPokemon] OFF.
Explicando o Processo!
1 - Etapa em que é realizada a inicialização do programa.
2 - Assim que o (GAME) "otPokemon" é aberto, o programa realiza a validação e solicita que a tecla enter seja pressionada para continuar.
3 - Suponhamos que, o usuário finalize o (GAME) "otPokemon" conforme mostra a imagem abaixo... , o correto seria que o programa voltasse ao seu status inicial de [otPokemon] OFF, mas isso não acontece.
4 - Conforme mostra o Gerenciador de Tarefas, o (GAME) já foi finalizado, mas o programa solicita que seja pressionado a tecla INSERT.
5 - Novamente o Gerenciador de Tarefas mostra que o (GAME) está finalizado, porém o programa solicita a nova etapa e que o usuário pressione a tecla INSERT.
6 - Mais uma vez, Gerenciador de Tarefas mostrando que o (GAME) já foi finalizado, mas o programa solicita a sua etapa e que o usuário pressione INSERT novamente.
7 - Somente após a função InsertKEY(); ser executada pelo programa o mesmo valida que o (GAME) foi fechado.
Lembrando que:OBJETIVO PRINCIPAL - Gostaria que, o programa validasse instantaneamente quando o GAME fosse fechado e voltasse para o status de [otPokemon] OFF.
Segue abaixo o código do programa. . .
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Threading; namespace autoFISHING { class Program { static void Main(string[] args) { while (true) { if (Process.GetProcessesByName("otpdx").Length != 0) { Console.Write("\n [otPokemon] ", Console.ForegroundColor = ConsoleColor.Cyan); Console.ResetColor(); Console.Write("ON\n", Console.ForegroundColor = ConsoleColor.Green); Console.ResetColor(); Console.WriteLine("\n Press the ENTER KEY to continue . . .", Console.ForegroundColor = ConsoleColor.Yellow); Console.ResetColor(); if (Console.ReadKey().Key == ConsoleKey.Enter) { InsertKEY(); } else { Console.Clear(); } /* new method */ } else { Console.Clear(); Console.Write("\n [otPokemon] ", Console.ForegroundColor = ConsoleColor.Cyan); Console.ResetColor(); Console.Write("OFF\n", Console.ForegroundColor = ConsoleColor.Red); Console.ResetColor(); Console.Write("\n Waiting for OtPokemon", Console.ForegroundColor = ConsoleColor.Yellow); Console.ResetColor(); Console.WriteLine(". . ."); Thread.Sleep(3000); Console.Clear(); } } } private static void InsertKEY() { /* Beginning of method. */ int i = 0; /* List to store the coordinates. */ List<POINT> coordinates = new List<POINT>(); /* Lists to store messages. */ List<string> messages = new List<string> { "\n {1} Move the mouse pointer over the white fish icon and press the INSERT KEY.", "\n {2} Move the mouse pointer over the river and press the INSERT KEY.", "\n {3} Move the mouse pointer over the battlefield and press the INSERT KEY." }; Console.Clear(); Console.WriteLine("\n [A U T O][F I S H I N G]", Console.ForegroundColor = ConsoleColor.Blue); Console.ResetColor(); while (i < messages.Count()) { POINT coordinate; Console.WriteLine(messages.ElementAt(i)); if (Console.ReadKey().Key == ConsoleKey.Insert) { GetCursorPos(out coordinate); coordinates.Add(coordinate); Console.WriteLine("\n Successfully!!", Console.ForegroundColor = ConsoleColor.Green); Console.ResetColor(); i++; } else { Console.Clear(); Console.WriteLine("\n [A U T O][F I S H I N G]", Console.ForegroundColor = ConsoleColor.Blue); Console.ResetColor(); Console.WriteLine("\n Sorry, you need to press the INSERT KEY to continue!", Console.ForegroundColor = ConsoleColor.Red); Console.ResetColor(); } } } /* Import the DLL user32, which contains the method that captures the coordinates of the mouse pointer. */ [DllImport("user32.dll")] static extern bool GetCursorPos(out POINT lpPoint); /* Define a "struct" to store the coordinates of the mouse pointer. */ public struct POINT { public int X; public int Y; } } }
Respostas
-
Gabriel,
Para que isso fique bom, precisará trabalhar em multi-thead.
Crie uma variavel global que definirá se o processo está rodando ou não.
Crie um método asincrono, que apenas ficara consultando se o programa esta em execução.
caso não esteja, ele mudará essa variavel global para false.Crie o segundo método asincrono, que ficará olhando para essa variavel, e quando ela for true, ira rodar o processo.
Sei que parece complexo, mas da uma pesquisada.
Att,
- Marcado como Resposta Gabriel Castilho Oliveira quinta-feira, 30 de maio de 2019 16:06
-
O ideal é sempre esgotar as pesquisas antes de pedir um exemplo.
Sem dúvidas a internet está cheia deles rs
Mas vi que respondi uma outra pergunta sua, e lá deixei um exemplo.
Vlw
- Sugerido como Resposta José Franco Corrêa Neto quinta-feira, 30 de maio de 2019 13:13
- Marcado como Resposta Gabriel Castilho Oliveira quinta-feira, 30 de maio de 2019 16:06
Todas as Respostas
-
Gabriel,
Para que isso fique bom, precisará trabalhar em multi-thead.
Crie uma variavel global que definirá se o processo está rodando ou não.
Crie um método asincrono, que apenas ficara consultando se o programa esta em execução.
caso não esteja, ele mudará essa variavel global para false.Crie o segundo método asincrono, que ficará olhando para essa variavel, e quando ela for true, ira rodar o processo.
Sei que parece complexo, mas da uma pesquisada.
Att,
- Marcado como Resposta Gabriel Castilho Oliveira quinta-feira, 30 de maio de 2019 16:06
-
-
O ideal é sempre esgotar as pesquisas antes de pedir um exemplo.
Sem dúvidas a internet está cheia deles rs
Mas vi que respondi uma outra pergunta sua, e lá deixei um exemplo.
Vlw
- Sugerido como Resposta José Franco Corrêa Neto quinta-feira, 30 de maio de 2019 13:13
- Marcado como Resposta Gabriel Castilho Oliveira quinta-feira, 30 de maio de 2019 16:06