친구가 근무 중에 필요하다 하여 한 번 만들어 본 것.
MSN 2008 8.5.1302.1018 버전 기준
포인트는 'MSN 대화창의 ClassName 은 IMWindowClass 이고 Caption 에는 반드시 '- 대화하기' 라는 문구가 들어간다.' 라는 것이다.
윈도우를 다 뒤져서 MSN 대화창일 경우 투명도 조절폼을 붙여버리면 끝.
우선, Trackbar가 하나 박힌 AutoSize=True 인 폼을 하나 만든다.
이 폼을 나중에 MSN 대화창마다 생성하여 붙일 예정.
Trackbar 의 OnChange 에서 ParentWindow(=MSN 대화창)의 AlphaBlend 를 조절하면 됨.
// pHWND = MSN 대화창의 핸들
SetWindowLong(pHWND, GWL_EXSTYLE, GetWindowLong(pHWND, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(pHWND, 0, Round((255*tbrAlpha.Position)/100), LWA_ALPHA);
뭐, 이런식으로...
투명도 조절창을 붙이기 위해 MSN 대화창을 찾아 뒤지는 건 EnumWindows 를 이용했다.
아래와 같은 함수를 만들어 놓고
function EnumWindowsProc(Wnd: HWND; lParam: DWORD): Boolean; stdcall;
var
ClassName: String;
Caption: String;
CountfrmHide: Integer;
begin
// String 배열 초기화
SetLength(ClassName, MAX_PATH);
SetLength(Caption, MAX_PATH);
// ClassName, Caption 을 받아옴
GetClassName(Wnd, PChar(ClassName), Length(ClassName));
GetWindowText(Wnd, PChar(Caption), Length(Caption));
// MSN 대화창일 경우 투명도 조절기를 붙임
if (Pos('IMWindowClass', ClassName)>0) and (Pos('- 대화하기', Caption)>0) then begin
CountfrmHide:=High(frmMain.frmSlide)+1;
SetLength(frmMain.frmSlide, CountfrmHide+1);frmMain.frmSlide[CountfrmHide]:=TfrmHide.Create(Application);
frmMain.frmSlide[CountfrmHide].pClassName:=ClassName;
frmMain.frmSlide[CountfrmHide].pCaption:=Caption;
frmMain.frmSlide[CountfrmHide].Show;SetParent(frmMain.frmSlide[CountfrmHide].Handle, Wnd);
end;
Result:=True;
end;
EnumWindows(@EnumWindowsProc,0);
하는 식으로 불러다 사용.
이 정도 힌트로 직접 만들어 보고 싶은 사람은 직접 만들어 보는 게 좋겠고,
귀찮은 사람은 첨부파일 다운로드 받아서 컴파일해서 사용하면 됨.
사용법
시작하면 트레이로 바로 들어감.
1. 트레이 아이콘에서 우클릭하면 나오는 메뉴 중 '조절기 달기'를 클릭하면 현재 떠 있는 모든 MSN 대화창의 우측 하단에 투명도 조절창이 달림. 샥샥 조절해서 쓰면 됨.
2. Ctrl + Shift 를 동시에 눌러도 같은 효과가 나게 만들어 놨음.
3. 트레이 메뉴든 Ctrl+Shift 를 하든 투명도 조절기를 달 때 마다 모든 창의 투명도는 100%로 됨.
'Delphi' 카테고리의 다른 글
[Delphi] 문자열 형식 변경 - 숫자 좌우에 '0' 붙이기 (0) | 2009.04.18 |
---|---|
MSN 대화창 투명도 조절 (0) | 2009.04.18 |
확장자에 연결된 프로그램이 있는지 알아보는 함수 (0) | 2009.04.18 |
[Delphi] 시작메뉴의 바로가기 파일을 뒤져서 원하는 바로가기 파일의 실행파일 변경하기 (0) | 2009.04.18 |
[Delphi] 로컬 파일의 날짜 가져오기 (0) | 2009.04.18 |