Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расположение иконок на рабочем столе, сохранение положения иконок на рабочем.. 
:(
    Опции темы
Vano-K
Дата 28.11.2005, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 4.4.2003
Где: Украина, Днепропе тровск

Репутация: нет
Всего: нет



Суть темы такова:
Необходимо сохранить расположение иконок на рабочем столе, и при неоюходимости восстановить их.
Но полностью расписать код мне не надо, мне необходимо только узнать, где хранятся такие данные.
Я уже не знаю что делать. Снахало думал в реестре. Но после нескольких дней я ничего добится не смог.
В 98 сделал себе прогу, там было легко найти, а вот в ХР что - то некак. А пользоваться какими то программами не очень хочется, так как они либо кривые, либо тупые, либо нестадильные, либо не функциональные.
Подскажите кто чем может мыло моё [removed by moderator]
буду очень признателен.

Модератор: настройте себе уведомления об изменениях (подписка на тему).

Это сообщение отредактировал(а) Akina - 1.12.2005, 09:54
PM MAIL   Вверх
~FoX~
Дата 29.11.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



Все оч просто рабочий стол покрыт компонентом ListView его Item-ы и есть ярлычки.
Тебе нужно получить хэндл этого объекта для работы с ним.
Вот как это выглядит на делфи:

Код

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;

Вот как задать позицию ярлыка с номером I
Код

ListView_SetItemPosition(GetDesktopListViewHandle,i,x,y);

Так же можно задать расположение например по правому краю:
Код

SendMessage(GetDesktopListViewHandle, LVM_ALIGN, LVA_ALIGNLEFT, 0); 

Описание всех АПИ (FindWindow, GetWindow, GetClassName) можно найти в МСДН
На барсик сам сможешь переварить


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 1.12.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



Вот тебе код модуля с описаниями всех АПИ и функция возвращающая Хэндл рабочего стола:
Код

Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
                        ByVal wCmd As Long) As Long

Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
              (ByVal hwnd As Long, _
               ByVal lpClassName As String, _
               ByVal nMaxCount As Long) As Long


Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, _
         ByVal lpWindowName As String) As Long

Declare Function SendMessage Lib "user32" Alias _
         "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
         ByVal wParam As Long, lParam As Any) As Long


Public Const GW_CHILD = 5


Public Function GetDesktopListViewHandle() As Long
Dim Hndl As Long
Dim S As String
Dim Length As String
  S = Space(13)
  Hndl = FindWindow("ProgMan", vbNullString)
  Hndl = GetWindow(Hndl, GW_CHILD)
  Hndl = GetWindow(Hndl, GW_CHILD)
  Length = GetClassName(Hndl, S, 40)
  If S <> "SysListView32" Then
    GetDesktopListViewHandle = 0
  Else
    GetDesktopListViewHandle = Hndl
  End If
End Function


Это сообщение отредактировал(а) ~FoX~ - 1.12.2005, 09:09


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
07pov23
Дата 16.1.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Цитата(~FoX~ @  29.11.2005,  14:57 Найти цитируемый пост)
Вот как задать позицию ярлыка с номером I
Выделить всёкод Pascal/Delphi
1:
    
ListView_SetItemPosition(GetDesktopListViewHandle,i,x,y);

А как получить доступ к этому ListView?
PM MAIL   Вверх
Akina
Дата 16.1.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



По полученному хендлу, собсно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 19.1.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



07pov23, Иеххх...

Код

  Const LVM_GETITEMCOUNT As Long = 4100 'волшебное число
  Const LVM_SETITEMPOSITION = 4111' ище адно волшебное число
  Dim IconCount as Integer ' количество итемов..
  dim i as Integer

  IconCount = SendMessage(SLV, LVM_GETITEMCOUNT, 0, 0) ' получаем количество итемов..
  for i = 0 to IconCount
    SendMessage(SLV,  LVM_SETITEMPOSITION , i, x, y) ' получаем количество итемов..
  next i

Все волшебные числа можно найти в МСДН. 
Для получения координат используй LVM_GETITEMPOSITION, номер найдешь в том же МСДН-е



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.