Programming/Delphi

작업표시줄에 프로그램 표시하기/숨기기

통통만두 2010. 6. 30. 15:37
반응형

 

 procedure CreateParams(var params:TCreateParams); override;

 

window class 속성에 보면 WndParent라는게 있습니다.
TForm 속성이 아니구요

WndParent 속성이 Application의 MainForm의 Handle로 되어있지 않고
DesktopWindow로 되어있는 경우 그렇게 나타납니다.

주로 dll에 Form이 포함되어잇는경우
Dll안에 Form들이 작업창에 나타나곤 하죠

 

[방법1]

TForm의 CreateParams 함수롤 오버라이드 해서
아래와 같이 Params에서 WndParnet를 메인윈도우핸들로 설정해주면 됩니다.

 

 procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
// Params.WndParent:=Application.MainForm.Handle; //==> Form이 TaskBar에 나타나지 않게 할때
// Params.WndParent:=GetDesktopWindow; //==> Form이 TaskBar에 나타나게 할때

end;


//------------------------------------------------------------------


[방법2]

윈리는 같은데요

 

 hMain:=FindWindow('TForm1', nil);
SetWindowLong(Form2.Handle, GWL_HWNDPARENT,(LPARAM)hMain); //==> Form이 TaskBar에 나타나지 않게 할때
SetWindowLong(Form2.Handle, GWL_HWNDPARENT,GetDesktopWindow; //==> Form이 TaskBar에 나타나게 할때

 

위와같이 SetWindowLong 함수로
현재 윈도우 핸들의 WndParent를 바꿔주시면 됩니다.


참고 Dll에서 Application.MainForm.Handle을 exe의 Application.MainForm.Handle과 다를수 있습니다.

반응형

'Programming > Delphi' 카테고리의 다른 글

COM+ 만드는 방법  (0) 2010.06.30
프로그램 화면을 이미지로 저장하기  (0) 2010.06.30
Access violation 난 곳 찾기  (0) 2010.06.30
웹브라우저 POST로 호출하기  (0) 2010.06.30
윈도우 종료 5가지 방법  (0) 2010.06.30