Windows
Рабочий стол перекрыт сверху компонентом ListView. Вам просто необходимо взять хэндл этого органа управления. Пример:
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Как получить и изменить координаты иконок на столе? |
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; |
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Code: |
// переменные var Srect,Drect,PosForme:TRect; iWidth,iHeight,DmX,DmY:Integer; iTmpX,iTmpY:Real; C:TCanvas; Kursor:TPoint; // Увеличиваем экран, если приложение не свёрнуто в иконку If not IsIconic(Application.Handle) then begin // Получаем координаты курсора GetCursorPos(Kursor);
// PosForm представляет прямоугольник с // координатами Form (image control). PosForme:=Rect(Form1.Left, Form1.Top, Form1.Left+Form1.Width, Form1.Top+Form1.Height);
//Показываем magnified screen //если курсор за пределами формы. If not PtInRect(PosForme,Kursor) then begin
// Далее код можно использовать для увеличения выбранной // части экрана. С небольшими модификациями его можно // использовать для уменьшения // экрана iWidth:=Image1.Width; iHeight:=Image1.Height; Drect:=Bounds(0,0,iWidth,iHeight); iTmpX:=iWidth / (Slider.Position * 4); iTmpY:=iHeight / (Slider.Position * 4); Srect:=
Rect(Kursor.x,Kursor.y,Kursor.x,Kursor.y); InflateRect(Srect,Round(iTmpX),Round(iTmpY));
//Получаем обработчик(handle) окна рабочего стола. C:=TCanvas.Create; try C.Handle:=GetDC(GetDesktopWindow); //Передаём часть изображения окна в TImage. Image1.Canvas.CopyRect(Drect,C,Srect); finally C.Free; end;
end;
// Обязательно обрабатываем все сообщения Windows. Application.ProcessMessages;
end; // IsIconic |
Автор: Zarko Gajic
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Code: |
function IsActiveDeskTopOn: Boolean; var h: hWnd; begin h := FindWindow('Progman', nil); h := FindWindowEx(h, 0, 'SHELLDLL_DefView', nil); h := FindWindowEx(h, 0, 'Internet Explorer_Server', nil); Result := h <> 0; end; |
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Как установить обои в формате jpeg. SystemParametersInfo только для bmp.
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Code: |
procedure TForm1.Button1Click(Sender: TObject); begin // скрыть иконки ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE); end;
procedure TForm1.Button2Click(Sender: TObject); begin // показать иконки ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW); end; |
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Для этого нужно найти окно "SysListView32" (которое является списком, который содержит иконки рабочего стола). Сперва будем искать главное родительское окно "Progman", которое содержит дочернее окно "SHELLDLL_DefView" , которое в свою очередь имеет дочернее окно "SysListView32". Для этого можно воспользоваться API функцией FindWindow to. Когда Мы получим дескриптор окна "SysListView32", то можно будет воспользоваться макросами ListView_SetTextBkColor и ListView_SetTextColor для установки желаемого цвета.
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Code: |
uses ComObj, ShlObj, ActiveX;
procedure EnableActiveDesktop(bValue: Boolean); const CLSID_ActiveDesktop: TGUID = (D1: $75048700; D2: $EF1F; D3: $11D0; D4: ($98, $88, $00, $60, $97, $DE, $AC, $F9)); var MyObject: IUnknown; ActiveDesk: IActiveDesktop; twpoComponentOpt: TComponentsOpt; begin MyObject := CreateComObject(CLSID_ActiveDesktop); ActiveDesk := MyObject as IActiveDesktop; with twpoComponentOpt do begin ZeroMemory(@twpoComponentOpt, SizeOf(TComponentsOpt)); dwSize := SizeOf(twpoComponentOpt); fEnableComponents := bValue; // fActiveDesktop := True; end; ActiveDesk.SetDesktopItemOptions(twpoComponentOpt, 0); ActiveDesk.ApplyChanges(AD_APPLY_ALL); end; |
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Иногда важно знать, какую часть экрана можно занимать, не перекрывая тем самым такие окна, как TaskBar. Эта программа разворачивает окно на всю рабочую область Desktop'а.
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
В принципе, все настройки на фоновый рисунок хранятся в реестре. Поэтому надо сначала скопировать картинку в какое-нибудь место (лучше в каталог Виндов) на случай удаления или переноса исходного файла. Информация по обоям хранится в разделе HKEY_CURRENT_USER\Control Panel\Desktop в параметрах TileWallpaper (если 1 - рисунок размножен, 0 - в центре), Wallpaper - путь к файлу обоев (gif, bmp, jpg), WallpaperStyle - если 2, то обои будут растянуты (отсутствует в 95 винде).
ПОсле установки всех занчений обновляешь рабочий стои и наслаждаешься эффектом.
Автор ответа: Garik
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Автор: William Egge
Весёлая программка, которая позволяет подшутить над Вашими друзьями:-]. Пример переворачивает десктоп и держит его в таком положение, до тех пор пока не кликнуть по нему мышкой. По мимо этого код содержит в себе довольно интересные моменты.
- Подробности
- Родительская категория: Windows
- Категория: Рабочий стол
Страница 19 из 42