Qual é a melhor maneira de tirar capturas de tela de uma janela com C ++ no Windows?

StackOverflow https://stackoverflow.com/questions/531684

  •  22-08-2019
  •  | 
  •  

Pergunta

Qual é a melhor maneira (mais fácil) de tirar uma captura de tela de um aplicativo em execução com C ++ no Windows?

Foi útil?

Solução

Você precisa obter o contexto do dispositivo da janela (GetWindowDC()) e cópia da imagem (BitBlt()) a partir dele. Dependendo do que mais você sabe sobre o aplicativo, você usará métodos diferentes para descobrir qual a alça da janela passa GetWindowDC().

Outras dicas

No keybd_event A documentação da função afirma que você pode usá -lo para tirar uma captura de tela e salvá -lo na área de transferência. Por exemplo:

keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);

Na minha versão (ajuda do Visual Studio 2005 instalado no meu computador), afirma que você pode tirar uma captura de tela de toda a área de trabalho, configurando o segundo parâmetro para 0, ou uma foto de tela apenas do aplicativo atual, configurando -o como 1.

Tirá -lo do tampão de transferência é deixado como um exercício para o leitor.

No entanto, eu pensaria cuidadosamente antes de fazer isso, pois ele fará com que os dados da imagem já estivessem presentes na área de transferência.

Aqui está um exemplo código
Você pode fazer CaptureAnImage(GetDesktopWindow()); Para fazer uma captura de tela.

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