2012-07-11 2 views
2

핸들을 가져 왔을 때 어떤 화면이 표시되는지 감지하고 싶습니다. Win API에서 SetWindowPos() 함수를 찾았지만 불행히도 인 GetWindowPos()이 없지만이 결과는 이상한 값입니다.응용 프로그램이 실행중인 화면을 가져옵니다.

두 개의 장치가 있는데 하나는 1280x1024이고 나머지 하나는 오른쪽 (기본) 1680x1050입니다. 최소화 된 파이어 폭스의 위치를 ​​얻으려는 경우 두 화면 중 하나에 대해 b/l/r/t -31973/-32000/-31840/-32000이 표시됩니다.

왼쪽 또는 오른쪽 화면인지 어떻게 알 수 있습니까?

+1

실제로, 창은 여러 개의 화면으로 확장 될 수 있습니다 ... –

+3

최소화 된 창의 창 위치를 묻지 마십시오. 그것은 최소화되어 있으며, 위치가 없습니다. –

답변

2

WinAPI의 기능은 MonitorFromRect이며 필요한 기능을 제공합니다. C#과 동일한 기능이 있는지 확실하지 않지만 interop을 통해 호출 할 수 있습니다.

창은 두 모니터 모두에 있거나 둘 모두에있을 수 없습니다. API에 플래그가 있습니다 (예 : MONITOR_DEFAULTTONEAREST.

+0

관리 된 API도있다. 'GetWindowPlacement'를 사용하여 창 좌표를 가져 오면 어떤 화면에 포함되어 있는지 찾기 위해 p/invoke 할 필요가 없습니다. –

2

GetWindowPlacement을 시도하여 창을 복원했을 때 사용할 사각형을 찾습니다.

+0

@David : 현재 활성화 된 화면 목록과 일치해야합니다. UNeverNo가 이미이 일을 계획하고있는 것 같습니다. –

+0

와우, 나는 읽을 수 없다, 내가 말한 것을 무시한다. (나는 그가 최대화 된 창에서 이상한 결과를 얻고 있다고 생각했다. 최소화 된 창은 아니라고 생각했다.) –

관련 문제