Q&A

  • 트레이아이콘의 활성화 방법
프로그램을 최소화 시키면 트레이 아이콘으로 등록이 되도록 했습니다.



만약 이 프로그램을 최소화 시켜서 트레이 아이콘에 등록이 되게 하고, 이 프로그램을



또 실행 시키면 "프로그램이 이미 실행 중입니다." 라는 메시지와 함께



트레이에 등록된 프로그램을 활성화 시키려 합니다.



프로그램이 두번 이상 실행 안 되게 했지만, 트레이에 등록된 프로그램을 활성화 시키지



는 못했습니다.



그 이유인 즉슨 트레이 아이콘의 핸들을 못얻어 오는 것 같습니다.



코드는



var

Handul : HWND;

begin

Handul := FindWindow('TrayNotifyWnd',nil);

if Handul <> 0 then // 핸들값이 0으로 나옵니다.

SendMessage(Handul,WM_COMMAND,IDC_SHOWMAIN,0);

end;



트레이 아이콘의 핸들을 얻어와 이것을 활성화 시키는 방법을 부탁드립니다.

1  COMMENTS
  • Profile
    구창민 2000.01.19 23:02
    신영일 wrote:

    > 프로그램을 최소화 시키면 트레이 아이콘으로 등록이 되도록 했습니다.

    >

    > 만약 이 프로그램을 최소화 시켜서 트레이 아이콘에 등록이 되게 하고, 이 프로그램을

    >

    > 또 실행 시키면 "프로그램이 이미 실행 중입니다." 라는 메시지와 함께

    >

    > 트레이에 등록된 프로그램을 활성화 시키려 합니다.

    >

    > 프로그램이 두번 이상 실행 안 되게 했지만, 트레이에 등록된 프로그램을 활성화 시키지

    >

    > 는 못했습니다.

    >

    > 그 이유인 즉슨 트레이 아이콘의 핸들을 못얻어 오는 것 같습니다.

    >

    > 코드는

    >

    > var

    > Handul : HWND;

    > begin

    > Handul := FindWindow('TrayNotifyWnd',nil);

    > if Handul <> 0 then // 핸들값이 0으로 나옵니다.

    > SendMessage(Handul,WM_COMMAND,IDC_SHOWMAIN,0);

    > end;

    >

    > 트레이 아이콘의 핸들을 얻어와 이것을 활성화 시키는 방법을 부탁드립니다.





    //아래는 제가 사용한 트레이 아이콘을 클릭하여

    //특정동작을 시킬시의 코드입니다.

    //참고하셔서 즐거운 프로그래밍 하시길~.

    procedure TMainForm.WndProc;

    var pt : Tpoint;

    begin

    case Message.Msg of

    MY_SHOWFORM_ID:

    case Message.lParam of

    WM_LBUTTONDBLCLK: begin //마우스 왼쪽버튼 더블클릭시 나타나게 합니다.

    ShowWindow(Application.Handle,SW_SHOWNORMAL);

    Self.Show;

    SetForegroundWindow(MainForm.Handle);

    end;

    wm_rbuttondown : begin //마우스 오른쪽 버튼을 클릭시 사용자정의 팝업메뉴가 뜨게 합니다.

    getcursorpos(pt);

    SetForegroundwindow(handle);

    popupmenu1.popup(pt.x,pt.y);//<-- 요 팝업메뉴는 임의대로 미리 만들어 두셔야 합니다.

    end;

    end;

    end;

    inherited;

    end;