2009-12-25 4 views
1

나는 내 바탕 화면에 큰 아이콘을 사용하고 싶지만, 보통은 보통 크기로 되돌아 가며 여전히 왜 그런지 추적 할 수 없다. 프로그래머로서 나는 아이콘 위치를 저장하고 복원하기위한 자체 유틸리티를 작성하기로 결정했습니다. 인터넷 검색은 많은 정보를 제공하지 않습니다. 누구나 시작할 수있는 링크 나 힌트를 줄 수 있습니까?Delphi에서 데스크톱 아이콘 위치 및 크기를 가져 오거나 설정하는 방법은 무엇입니까?

답변

2

신뢰할 수 없습니다. Raymond Chen explains why이 게시물에

기본적으로 바탕 화면의 특정 위치에 아이콘을 표시 할 수있는 방법이 없기 때문에 기본적으로 개별 아이콘의 위치를 ​​지정할 방법이 없습니다.

+0

고마워요, 매우 흥미 롭습니다! – kuaw26

2

시간에 한 점, 확실히 즉 윈도우 2000/WINXP에서, 바탕 화면은 실제로 ListView에의 한 유형이었다. 나는 아직도 새로운 OS에서 그렇게 확신 할 수 없다. 데스크톱 핸들을 얻고 LV API 함수를 사용하는 것이 쉽다는 것을 알면 보고서 스타일로 표시하는 것과 같은 일을하도록 조작 할 수 있습니다.

다음은 데스크톱 조작을 시작하는 방법을 보여주는 두 가지 기능입니다.

참고 : WinXP가 정상적으로 작동한다는 것을 알고 있으며, Vista 및 Win7에서도 작동한다고 가정하지만 테스트하지는 않았습니다. 이 예제를 사용하면 데스크탑의 모든 아이콘 위치를 가져 오거나 설정하는 함수 세트를 작성하는 데 오랜 시간이 걸리지 않습니다.

procedure ReportStyleDesktop; 
var 
    wHandle : THandle; 
    wStyle : Longint; 
begin 
    wHandle := GetDesktopWindow; 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'Progman', 'Program Manager'); 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'SHELLDLL_DefView', 0); 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'SysListView32', 0); 

    if wHandle <> 0 then 
    begin 
    wStyle := GetWindowLong(wHandle, GWL_STYLE); 
    wStyle := wStyle and (not LVS_TYPEMASK); 
    wStyle := wStyle or LVS_REPORT or LVS_ICON; 
    SetWindowLong(wHandle, GWL_STYLE, wStyle); 
    end; 
end; 

procedure NormalStyleDesktop; 
var 
    wHandle : THandle; 
    wStyle : Longint; 
begin 
    wHandle := GetDesktopWindow; 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'Progman', 'Program Manager'); 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'SHELLDLL_DefView', 0); 

    if wHandle <> 0 then 
    wHandle := FindWindowEx(wHandle, 0, 'SysListView32', 0); 

    if wHandle <> 0 then 
    begin 
    wStyle := GetWindowLong(wHandle, GWL_STYLE); 
    wStyle := wStyle and (not LVS_TYPEMASK); 
    wStyle := wStyle or LVS_ICON; 
    SetWindowLong(wHandle, GWL_STYLE, wStyle); 
    end; 
end; 
+0

덕분에, 시작하는 것이 좋은 지적입니다 – kuaw26

관련 문제