Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 31

Вопрос по ярлыкам

14.08.2011, 21:05. Показов 770. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код создания ярлыка и помещения его на рабочий стол, и в любую указанную папку. Как поместить ярлык в Windows-Меню Пуск и в Windows-меню Пуск->Программы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2011, 21:05
Ответы с готовыми решениями:

Вопрос по ярлыкам
Как в Delphi определить на какой фаил или на какую папку ссылается ярлык( например С:\Delphi.lnk ) и такие аспекты как ярлык "Мой...

Как вернуться к прежним ярлыкам программ?
люди! sos! в меню "пуск", в программах(не знаю как) нажала открыть с помощью фотоальбома W..теперь все программы отражаются через ярлык...

Все файлы на флешке стали ярлыкам
Все файлы на флешке стали ярлыками, сами файлы и папки становятся скрытыми и также создается файл "sdvnbqyxng.vbs". Лог-файлы:

9
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
14.08.2011, 21:16
Эти действия можно сделать при помощи програмы изготовления инсталяционного файла,

например
Миниатюры
Вопрос по ярлыкам  
0
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 31
14.08.2011, 21:22  [ТС]
У меня этих инсталяционных пакетов до усрачки. Но раз уж я разобрал код создания ярлыка, почему бы не узнать как его поместить в Windows-меню.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
14.08.2011, 21:29
Цитата Сообщение от MorozSergei Посмотреть сообщение
У меня этих инсталяционных пакетов до усрачки. Но раз уж я разобрал код создания ярлыка, почему бы не узнать как его поместить в Windows-меню.
Но раз уж вы так разбираетесь почемубы вам не показать как вы разбераетесь, всмысле написать код самому...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.08.2011, 21:39
как-нибудь-так:
C++
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
void __fastcall TFormMain::CreateProgramsLink(void)
{
  AnsiString s=Application->ExeName;
  while(1)
  {
    s=s.SubString(s.Pos("\\")+1,s.Length());
    if(s.Pos("\\") == 0)
    {
//      int i=0; // оригінал
//      i = s.Length()+1; // оригінал
      int i;
      i =s.Length()+1;
      s = Application->ExeName.SubString(1,Application->ExeName.Length()-i); // WorkingDirectory
      break;
    }
  }
// путь для размещения ярлыка
  char StartPath[MAX_PATH];
  LPITEMIDLIST pidl;
// CSIDL_DESKTOP, CSIDL_STARTUP, CSIDL_STARTMENU, CSIDL_PROGRAMS
  SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &pidl);
  SHGetPathFromIDList(pidl, StartPath);
//
  HRESULT hres;
  IShellLink *psl;
  IPersistFile *ppf;
  wchar_t wsz[MAX_PATH]; //имя файла ярлыка для сохранения
  CoInitialize(NULL);
  hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&psl);
  if (SUCCEEDED(hres)) {
    psl->SetPath(Application->ExeName.c_str());
    psl->SetWorkingDirectory(s.c_str());
    psl->SetDescription("Ваш комментарий".c_str());
    hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
    if (SUCCEEDED(hres)) {
      MultiByteToWideChar(CP_ACP, 0, (AnsiString(StartPath) + "\\" + "Название программы" + ".lnk").c_str(), -1, wsz, MAX_PATH);
//      hres = ppf->Save(wsz, true); // оригінал
      ppf->Save(wsz, true);
      ppf->Release();
    }
    psl->Release();
  }
  CoUninitialize();
  if (sCheckBox618OtherWarnings->Checked)
    Application->MessageBox("Этикетка добавлена".c_str(), "Название программы".c_str(), MB_OK + MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::RemoveProgramsLink(void)
{
// удалить ярлык
  TCHAR buf[MAX_PATH];
  LPITEMIDLIST pidl;
  SHGetSpecialFolderLocation(Handle, CSIDL_PROGRAMS, &pidl);
  SHGetPathFromIDList(pidl, buf);
  lstrcat(buf,"\\");
  lstrcat(buf,("Название программы" + ".lnk").c_str());
  DeleteFile(buf);
  if (sCheckBox618OtherWarnings->Checked)
    Application->MessageBox("Этикетка удалена".c_str(), "Название программы".c_str(), MB_OK + MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
интересно, а как же вы на рабочий стол добавляли ...
1
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 31
14.08.2011, 22:11  [ТС]
Спасибо

Добавлено через 31 минуту
C++
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
67
#define NO_WIN32_LEAN_AND_MEAN
#include <shlobj.h>
void __fastcall TForm1::pehat2(const AnsiString &file)
{
IShellLink* pLink;
    IPersistFile* pPersistFile;
    LPMALLOC      ShellMalloc;
    LPITEMIDLIST  DesktopPidl;
    char DesktopDir[MAX_PATH];
 
    // Мы собираемся получить pidl и нам нам нужен shell mallocator.
    // Получим shell mallocator используя API-функцию SHGetMalloc.
    if(FAILED(SHGetMalloc(&ShellMalloc)))
        return;
 
    // используем API для получения pidl для папки рабочема стола
    // если ошибка выполнения функции - выходим
    if(FAILED(SHGetSpecialFolderLocation(NULL,
                                         CSIDL_DESKTOPDIRECTORY,
                                         &DesktopPidl)))
        return;
 
    // Теперь переведем pidl в строку символов
    // выходим если произошла ошибка выполнения функции
    if(!SHGetPathFromIDList(DesktopPidl, DesktopDir))
    {
        ShellMalloc->Free(DesktopPidl);
        ShellMalloc->Release();
        return;
    }
 
    // Освободим все что занятые ресурсы pidl
    ShellMalloc->Free(DesktopPidl);
    ShellMalloc->Release();
 
    if(SUCCEEDED(CoInitialize(NULL)))
    {
        if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
                                      CLSCTX_INPROC_SERVER,
                                      IID_IShellLink, (void **) &pLink)))
        {
            pLink->SetPath(file.c_str());
            pLink->SetDescription("Woo hoo, look at Homer's shortcut");
            pLink->SetShowCmd(SW_SHOW);
 
            if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
                                               (void **)&pPersistFile)))
            {
 
                WideString strShortCutLocation(DesktopDir);
                strShortCutLocation += "\\bcbshortcut.lnk";
                pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
                pPersistFile->Release();
            }
            pLink->Release();
        }
        CoUninitialize();
    }
}
/////////////////////////////////
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
pehat2(OpenDialog1->FileName);
}
}[CPP]
[/CPP]
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.08.2011, 22:22
а OpenDialog зачем ? как правило, такие вещи делаются без участия пользователя, за исключением, разве что, его согласия на добавление этикетки
0
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 31
14.08.2011, 22:51  [ТС]
Путь к обьекту, для которого будет создаваться ярлык. Если я делаю к примеру инсталлятор, то участие пользователя необходимо.
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
14.08.2011, 23:10
Можно елать через API в тихом режиме тогда участие не нужно сам ПК вс1ё установит)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.08.2011, 23:13
ну, если инсталлятор , тогда конечно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2011, 23:13
Помогаю со студенческими работами здесь

как вернуть ярлыкам нормальный вид?
Ярлыки на панели приобрели такой вид Как исправить и вернуть ярлыкам первоначальное обличие?

К ярлыкам браузера добавляется "browser0.bat"
Добрый день. На машине было много разной вирусни. Запускал: - cureit - KAV - adwcleaner - avz - malwarebytes Каждая из...

Программы не запускаются на рабочем столе, ко всем ярлыкам на рабочем столе добавляется приставка .Ink
Помогите пожалуйста, использовал рекомендованную вами программу CureIT (нашел 18 вредоносных объектов) и вылечил, но проблема с рабочим...

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама по себе она нигде не используется: лишь...

VBulletin [ВОПРОС]: Меню и вопрос при регистрации
Помогите пожалуйста. У меня vbulletin 4.0.7 и после установки в верхнем меню есть лишняя навигация. Например: Главная Форум Blogs ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru