powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание папок
8 сообщений из 8, страница 1 из 1
Создание папок
    #32088338
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как програмно создать "папку", и, соответсвенно, ярлыки в ней
в Пуск - Программы ?
...
Рейтинг: 0 / 0
Создание папок
    #32088381
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотря под какую операционку,
(см. var Win32Platform)
но всё сводится к поиску

под 98 : папки Винды и в ней "главное меню/программы" (см. GetWindowsDirectory)

под 2000 : папки с профилем юзера/all users, и там start menu/programs

и вызова
function CreateDir(const Dir: string): Boolean;
...
Рейтинг: 0 / 0
Создание папок
    #32088391
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, неужели в WinAPI нету такой функции? Странно...
...
Рейтинг: 0 / 0
Создание папок
    #32088580
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
В Проводнике есть встроенный DDE сервер. Надо просто в инете порыться насчет команд. Там есть все это.
...
Рейтинг: 0 / 0
Создание папок
    #32088645
Mich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такие.
Насколько я помню в названии фигурирует подстрока shell. Подробности - winapi help, а то у меня он упал.
...
Рейтинг: 0 / 0
Создание папок
    #32088646
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, как создавать ярлыки к программам и др. я знаю
Мне немного непонятен принцип работы создания "ярлыка", скажем так, для папки, и как далее в ней создавать ярлыки.
...
Рейтинг: 0 / 0
Создание папок
    #32088667
Micha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для создания ярлыков следует использовать COM интефрейс IShellLink. Поробнее в справке по WinAPI.
А папку можно CreateDir.
...
Рейтинг: 0 / 0
Создание папок
    #32090844
Фотография Groove
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как програмно создать ярлык?
Группа ссылок: Диски, Папки и Файлы

Функция CreateShortcut создает ярлык в указанном месте.

Параметры
ShortcutDir - Каталог в котором надо создавать ярлык.Можно передавать непосредственно путь каталога или одну из следующих констант:
Desktop - Рабочий стол
Favorites - Избранное
Programs - Пуск\Программы
SendTo - Отправить
Start Menu - Главное меню
Startup - Автозагрузка
CmdLine - Путь к обьекту открытия(файл или папка)

Param - Параметры
WorkDir - Рабочий каталог
DirName - Имя подпапки. Оно необходимо в том случае если вы создаете ярлыки например в "Пуск\Программы" и вам необходимо чтобы ярлыки были в подпапке.
LinkFile - Имя файла ярлыка.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
uses
  ...Registry, ShlObj, ActiveX, ComObj, FileUtil;

......

function CreateShortcut(const ShortcutDir, CmdLine, Param, WorkDir,DirName: string;
   LinkFile:String): Boolean;
var
  MyObject  : IUnknown;

  MySLink   : IShellLink;
  MyPFile   : IPersistFile;
  WideFile  : WideString;
  Directory, TempStr: String;
  Reg:TRegistry;
begin
  Result:=False;Directory:='';
  If (ShortcutDir='Desktop') or (ShortcutDir='Favorites') or
     (ShortcutDir='Programs') or (ShortcutDir='SendTo') or
     (ShortcutDir='Start Menu') or (ShortcutDir='Startup') then
    begin
      Reg:=TRegistry.Create;
      Reg.OpenKey('Software\MicroSoft\Windows\CurrentVersion\Explorer\Shell 
Folders',False);

      Directory := Reg.ReadString(ShortcutDir);
      Reg.Free;
      If not(DirName='') then
        Directory:=Directory+'\'+DirName;
    end;
  If DirExists(ShortcutDir)  then
    Directory:=ShortcutDir
  else
    If Directory='' then  Exit;
  If not(FileExists(CmdLine)) and not
(DirExists(CmdLine)) then Exit;
  If linkFile='' then Exit;
  TempStr:=linkFile;

  If Length(linkFile)> 4  then
    Delete(TempStr, 1 ,Length(TempStr)- 3 );
  If not(AnsiUpperCase(TempStr)='LNK') then
    linkFile:=linkFile+'.lnk';
  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  with MySLink do
    begin
      SetPath(PChar(CmdLine));
      SetArguments(PChar(Param));
      SetWorkingDirectory(PChar(WorkDir));
    end;

  if Directory[Length(Directory)]='\' then
    WideFile := Directory+LinkFile
  else
    WideFile := Directory+'\'+LinkFile;
  if MyPFile.Save(PWChar(WideFile), False)= S_OK then
    Result:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:=ExtractFilePath(Edit1.Text);
  Delete(s,Length(s), 1 );
  CreateShortcut( 'Programs', 'C:\my.txt', '', 'C:\', '', 'my');
end;


текст взят из справки Rus WinAPI Help
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание папок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]