2009-03-07 3 views
2

DDE 이벤트에서 내 프로그램이 파일을로드하고 포 그라운드로 튀어 나와야합니다. 나는 그것은 단지 내가 창을 숨긴 경우 다음과 같이 작동하는 것 같군DDE 이벤트 후 내 윈도우를 앞으로 가져 오려면 어떻게합니까?

show; 

을 사용했다.

그래서 내가 다시이이 숨겨진 경우, 작업 종료, 최소화 또는 아이콘 트레이에 있지만 그냥 다른 창에서 열려 있지 않은 경우
bringtofront; 

을 추가했다.

나는 심지어 보여 강제하려고

windowstate:=wsminimized; 
windowstate:=wsnormal; 

같은 일부 해키 물건을 시도했지만 아무 소용. 나는이 블록의 양쪽에 인쇄물을 가지고 있기 때문에 붙어있을 수있는 조건문이 없다는 것을 알고있다.

답변

1

SetForegroundWindow가 항상 작동하지 않습니다. 실제로, 요즘은 응용 프로그램이 집중하지 않아야하기 때문에 작동하지 않을 것입니다. 단지 그것을 버릴 수 있습니다. MS는 년에을 시도하여 입력 포커스를 훔치는 응용 프로그램을 방지합니다. Raymond Chen에게서이 blog entry에 대한 의견을 읽어보십시오.

포어 그라운드 앱인 경우 SetForegroundWindow를 다른 앱으로 설정하면 모든 것이 복숭아가됩니다. 전경 앱이 아니라면 작업 표시 줄 버튼이 깜박이기 시작할 가능성이 높습니다.

약간의 혼동을 추가하기 위해 정확한 동작은 Windows 버전에 따라 다르기 때문에 어떤 종류의 Windows를 실행 중인지에 따라 달라집니다. 오랫동안이 문제를 해결하지 못했습니다.

+0

DDE 이벤트를 보내는 프로그램은 AllowSetForegroundWindow를 호출하여 협력해야합니다. 나는 탐험가가 그렇게 할 것이라고 기대하지만, 다른 프로그램은 아마 그 세부 사항을 무시합니다. –

+0

너무 좋은 것입니다. 나는 다른 프로그램이 집중할 때 정말 싫어한다. – Kibbee

관련 문제