Содержание материала

Как получить и изменить координаты иконок на столе?

Previous  Top  Next

 

Code:

uses

CommCtrl,

IPCThrd; (from your Delphi\Demos\Ipcdemos directory)

 

function GetDesktopListViewHandle: THandle;

var

S: String;

begin

Result := FindWindow('ProgMan', nil);

Result := GetWindow(Result, GW_CHILD);

Result := GetWindow(Result, GW_CHILD);

SetLength(S, 40);

GetClassName(Result, PChar(S), 39);

if PChar(S) <> 'SysListView32' then Result := 0;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

type

  PInfo = ^TInfo;

  TInfo = packed record

    infoPoint: TPoint;

    infoText: array[0..255] of Char;

    infoItem: TLVItem;

    infoFindInfo: TLVFindInfo;

  end;

var

  r : TRect;

  hWnd : THandle;

  i, iCount : Integer;

 

  Info: PInfo;

  SharedMem: TSharedMem;

begin

hWnd := GetDesktopWindow();

GetWindowRect(hWnd,r);

Memo.Lines.Add('Bottom: ' +  IntToStr(r.Bottom));

Memo.Lines.Add('Right: ' + IntToStr(r.Right));

 

hWnd := GetDesktopListViewHandle;

iCount := ListView_GetItemCount(hWnd);

Memo.Lines.Add('# Icons: ' + IntToStr(iCount));

 

SharedMem := TSharedMem.Create('', SizeOf(TInfo));

Info := SharedMem.Buffer;

 

  with Info^ do

  try

    infoItem.pszText := infoText;

    infoItem.cchTextMax := 255;

    infoItem.mask := LVIF_TEXT;

    try

      begin

        for i := 0 to iCount - 1 do

        begin

          infoItem.iItem := i;

          try

            ListView_GetItem(hWnd, infoItem);

            ListView_GetItemPosition(hWnd, I, infoPoint);

            Memo.Lines.Add('Icon: ' + infoText);

            Memo.Lines.Add('   X: ' + IntToStr(infoPoint.X));

            Memo.Lines.Add('   Y: ' + IntToStr(infoPoint.Y));

          except

          end;

        end;

      end;

    finally

    end;

  finally

    SharedMem.Free;

  end;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить