2009-09-17 5 views
2

응용 프로그램을 시작하고 GetForegroundWindow()를 호출하여 시작했는지 확인하는 테스트가 있습니다. 이 테스트는 일반적으로 원격 데스크톱을 통해 액세스하는 원격 컴퓨터에서 실행됩니다. rdp 세션이 시스템에 열려 있으면 테스트가 완료되고 모두 정상입니다. 그러나 일단 원격 데스크톱을 닫으면 GetForegroundWindow가 항상 Null을 반환하기 때문에 테스트가 실패합니다. 연결을 끊은 후에도 활성 바탕 화면이 여전히 '기본값'인지 확인 했으므로 this 문제가 발생하지 않을 것입니다. 어떤 아이디어가이 원인 일 수 있습니까? 사전GetForegroundWindow는 원격 데스크톱 연결이 끊어지면 Null을 반환합니다.

+1

*이 문제 (예 : Windows 보안)에 실제로 불만이 있습니다. RDP 세션을 최소화하거나 연결을 해제하면 세션이 보안 데스크톱으로 전환되고 일부 API는 작동하지 않습니다. 여기를 확인하십시오 : http://www.tech-archive.net/Archive/Windows/microsoft.public.windows.terminal_services/2008-11/msg00472.html – Andrey

답변

0

에서

덕분에 내가 반환, 반환 된 HWND 관심있는 응용 프로그램이 아닌 다른 창에서 것을 확인 할 수있는 방법이 GetForegroundWindow 즉이 있으리라 믿고있어.

어쨌든 EnumWindows를 사용하여 화면의 모든 창을 가져옵니다. 찾고있는 앱과 일치하는 HWND를 찾으십시오.

HWND의 유효성을 검사 할 수있는 방법이없는 경우 앱을 실행하기 전에 EnumWindows를 호출하여 화면의 총 창의 수를 확인하십시오. 그런 다음 자동화 스크립트를 통해 앱을 실행하십시오. 카운트가 1 증가 할 때까지 EnumWindows를 통해 창 개수를 폴링합니다.

0

원격 데스크톱을 사용하면 tscon 명령을 사용할 수있는 가상 머신 인 경우 :

"1"활성 세션의 ID입니다

tscon 1 /dest:console.

이 명령은 RDP 연결을 끊지 만 세션을 콘솔로 보냅니다. 창을 잡아서 스크린 샷을 찍을 수 있습니다.

관련 문제