Как получить и изменить координаты иконок на столе? |
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; |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!