C#:Software para tirar Screenshot a programas

pedro1449

Membro
Boas,
Necessito de ajuda para começar um novo projeto meu.


Eu quero fazer um programa em C# que consiga tirar Screenshots a um especifico jogo aberto...

Não sei como começar.... Alguem me dê um empurraõzinho? :)
Basicamente é isto.
Abraço
 
Última edição:
Bem, essa versão tem um problema, pelo que estive a ver...

Se eu quiser tirar SS a algo que use DirectX vai dar uma foto preta :(

Por exemplo: Tirar SS a um jogo, as fotos saiem todas pretas ou ele apenas tira foto ao ambiente de trabalho windows
 
Boas,
Eu tenho este código (que serve para tirar SS de 3 em 3 segs)

Código:
button1.Enabled = false;
            button2.Enabled = true;
            var path =@"FPSS";
            if (path != string.Empty)
                _path = path;


            _timespan = 3000;

            DirectoryInfo dir = new DirectoryInfo(_path);
            PrintScreen ps = new PrintScreen();

            if (!dir.Exists) dir.Create();

            var countScreens = 0;

            while (true)
            {
                var task=StartPrinting(ps);

                task.Wait();

                Thread.Sleep(_timespan);

                if (countScreens == 20)
                {
                    System.GC.Collect();
                    countScreens = 0;
                }
                countScreens++;
            }


Porém tenho aqui um problema.
A minha ideia inicial era Quando clico no button1 o ciclo começava etc e quando clicava no button2 isto tudo parava.

MAS como é obvio, enquanto o while tiver a circular, no windows forms, não consegues mexer no resto do programa.

Alguma ideia? :)

Abraço
 
Boas,

Não devias fazer dessa forma, cria uma classe que faz a gestão da tua logica (vou chamar-lhe controlador de captura).
Crias uma instancia do controlador, guardas uma referencia no teu form, a cada tick do timer mandas o controlador continuar a captura.
Quando clicas no button2 paras o timer e limpas a instancia do controlador de captura.

Ainda assim, se quiseres seguir a tua abordagem actual, faz o seguinte dentro do while:

Código:
while (true) {
  // ...
 
  Application.DoEvents();
}

Mas como te digo, isso não se deve fazer assim, porque se o teu Sleep for longo, a app não responde correctamente, depois tens de te preocupar outras coisas, nomeadamente se o user fecha o form, tens de quebrar o while infinito.

Good luck
 
Back
Topo