2012-07-20 2 views
1

다른 응용 프로그램을 시작하는 시스템 서비스가 있습니다. 이 응용 프로그램 (C#으로 작성)은 열려있는 모든 창 (응용 프로그램)을 가져 와서 이름을 나열해야합니다.C# - 열려있는 창이 제대로 작동하지 않습니다.

프로세스 : UI0Detect

창 제목 : 대화 형 서비스 감지

나는 EnumWindow은 (는 Win32에서), 내가 얻을 수있는 모든이있다 (C 번호에서) Process.GetProcesses()process.MainWindowTitle를 사용하여 사용

만약 내가 손으로 그 응용 프로그램을 실행하면 모든 창을 제공합니다. 하지만 시스템 서비스가 실행되면이 모든 서비스가 하나의 서비스가됩니다.

어떻게하면 응용 프로그램이 올바른 활성 창 목록을 표시하게 할 수 있습니까?

+1

시스템 서비스는 어떤 계정에서 실행됩니까? 컴퓨터에 대한 관리 수준 권한이있는 프로그램입니까? – mellamokb

+0

예. 내 계정에서 (관리자 권한으로) 설치하고 관리자로부터 실행 중입니다. –

+3

Windows 7을 사용하고 있습니까? 그렇다면 서비스가 해당 정보에 액세스 할 수 있는지 확신 할 수 없습니다. – Marco

답변

1

Windows 서비스가 정상 프로그램과 같은 "세션"에서 실행되지 않습니다 감사, 그래서 2는 프로그램을 시작하여 서비스를 시작할 때 특별 세션에서 시작됩니다. CreateProcessAsUser을 사용하고 모니터링 할 사용자 세션에서 두 번째 앱을 만들어야합니다.

자세한 내용은 대화 형 서비스 작성시 this MSDN article을 참조하십시오.

+0

uuuuuu 당신은 너무 영리합니다! 감사! 이게 정말 도움이됩니다. 이제 작동합니다. –

관련 문제