Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
1

Cоздать ярлык

15.04.2012, 15:41. Показов 2265. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите создать ярлык на рабочем столе .Средствами С++ Builder
Адрес -
Код
%WINDIR%\EXPLORER.EXE Edit1->Text;
Рабочая папка
Код
%WINDIR%
Иконка с файла Project1
В итоге должно получится что то вроде этого %WINDIR%\EXPLORER.EXE F:\
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2012, 15:41
Ответы с готовыми решениями:

Cоздать авторизацию панели администратора
В общем в курсовой подключена база данных акцес через компоненты ADOСonnection и тд, и в общем есть...

Cоздать новую форму но без шапки
Как создать новую форму но без шапки Form2, просто серый прямоунольникю

Cоздать оконное приложение для работы с углами на плоскости
создать оконное приложение для работы с углами на плоскости, задаваемыми величиной в 0,30,45,60 и...

Cоздать класс для объектов и сравнить объекты с друг другом
Надо создать 2 объекта, создать класс для объектов и сравнить объекты с друг другом, вот такое ...

10
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2012, 15:46 2
Поиск всемогущий

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
68
#include <objidl.h> 
#include <shlobj.h> 
 
... 
 
//--------------------------------------------------------------------- 
#define HOTKEY(modifier,key) ((((modifier)&0xff)<<8)|((key)&0xff)) 
//--------------------------------------------------------------------- 
// Создание ярлыка 
// Входные параметры: 
//  pwzShortCutFileName - путь и имя ярлыка, например, "C:\\Блокнот.lnk" 
//  Если не указан путь, ярлык будет создан в папке, указанной в следующем параметре. 
//  Прим.: Windows сама НЕ добавляет к имени расширение .lnk 
//  pszPathAndFileName  - путь и имя exe-файла, например, "C:\\Windows\\NotePad.Exe" 
//  pszWorkingDirectory - рабочий каталог, например, "C:\\Windows" 
//  pszArguments        - аргументы командной строки, например, "C:\\Doc\\Text.Txt" 
//  wHotKey             - горячая клавиша, например, для Ctrl+Alt+A     HOTKEY(HOTKEYF_ALT|HOTKEYF_CONTROL,'A') 
//  iCmdShow            - начальный вид, например, SW_SHOWNORMAL 
//  pszIconFileName     - путь и имя файла, содержащего иконку, например, "C:\\Windows\\NotePad.Exe" 
//  int iIconIndex      - индекс иконки в файле, нумеруется с 0 
bool __fastcall CreateShortCut( 
                LPWSTR pwzShortCutFileName, 
                LPTSTR pszPathAndFileName, 
                LPTSTR pszWorkingDirectory, 
                LPTSTR pszArguments, 
                WORD wHotKey, 
                int iCmdShow, 
                LPTSTR pszIconFileName, 
                int iIconIndex) { 
   IShellLink * pSL; 
   IPersistFile * pPF; 
   HRESULT hRes; 
   // Получение экземпляра компонента "Ярлык" 
   hRes = CoCreateInstance(CLSID_ShellLink,
                           0,
                           CLSCTX_INPROC_SERVER,
                           IID_IShellLink,
                           (LPVOID *)&pSL); 
   if( SUCCEEDED(hRes) ) { 
      hRes = pSL->SetPath(pszPathAndFileName); 
      if( SUCCEEDED(hRes) ) { 
         hRes = pSL->SetArguments(pszArguments); 
         if( SUCCEEDED(hRes) ) { 
            hRes = pSL->SetWorkingDirectory(pszWorkingDirectory); 
            if( SUCCEEDED(hRes) ) { 
               hRes = pSL->SetIconLocation(pszIconFileName,iIconIndex); 
               if( SUCCEEDED(hRes) ) { 
                  hRes = pSL->SetHotkey(wHotKey); 
                  if( SUCCEEDED(hRes) ) { 
                     hRes = pSL->SetShowCmd(iCmdShow); 
                     if( SUCCEEDED(hRes) ) { 
                        // Получение компонента хранилища параметров 
                        hRes = pSL->QueryInterface(IID_IPersistFile,(LPVOID *)&pPF); 
                        if( SUCCEEDED(hRes) ) { 
                           // Сохранение созданного ярлыка 
                           hRes = pPF->Save(pwzShortCutFileName,TRUE); 
                           pPF->Release(); 
                        } 
                     } 
                  } 
               } 
            } 
         } 
      } 
      pSL->Release(); 
   } 
   return SUCCEEDED(hRes); 
}
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
15.04.2012, 15:50  [ТС] 3
MikeSoft, этот код я видел, а по проще не как нельзя?
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2012, 15:59 4
EdarGp, если бы у вас был ярлык на интернет ресурс - то можно было бы...
Проще, думаю, никак...

Для каталога можно создать символьную ссылку:
C++
1
CreateSymbolicLink(L"C:\\DriveD",L"D:\\",0x01);
0
LK
Заблокирован
15.04.2012, 16:05 5
EdarGp, куда уж проще - Copy, Paste ...
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.04.2012, 16:33 6
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
#include <shlobj.h>
 
void CreateLink(String PathObj,String WorkDir,String PathLink,
                     String Description,String Arguments,
                     int ShowCmd)
{
 HRESULT hres;
 IShellLink *NewLink;
 CoInitialize(NULL);
 hres = CoCreateInstance(CLSID_ShellLink, NULL,
           CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&NewLink);
 if(SUCCEEDED(hres))
   {
     NewLink->SetPath(PathObj.c_str());
     NewLink->SetWorkingDirectory(WorkDir.c_str());
     NewLink->SetDescription(Description.c_str());
     NewLink->SetArguments(Arguments.c_str());
     NewLink->SetShowCmd(ShowCmd);
     IPersistFile *ppf;
     NewLink->QueryInterface(IID_IPersistFile, (void**)&ppf);
     ppf->Save(PathLink.w_str(), true);
   }
 CoUninitialize();
}
Добавлено через 2 минуты
Пример использования
C++
1
CreateLink(Application->ExeName,ExtractFileDir(Application->ExeName),L"Ярлык.lnk",L"Описание","",SW_SHOWNORMAL);
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
15.04.2012, 16:38  [ТС] 7
при подключении #include <shlobj.h>
ошибки
C++
1
2
3
4
[C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
  [C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
  [C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'
  [C++ Error] shlobj.h(3457): E2238 Multiple declaration for 'SHELLFLAGSTATE'
0
LK
Заблокирован
15.04.2012, 16:47 8
C++
1
#define NO_WIN32_LEAN_AND_MEAN
самой первой строкой программы, перед подключением shlobj.h
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.04.2012, 16:50 9
У меня ф-ции в отдельном модуле лежали
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2012, 16:51 10
EdarGp, какие ещё заголовочные файлы подключены?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.04.2012, 16:53 11
Как вариант закоментить
C++
1
//#include <vcl.h>
0
15.04.2012, 16:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2012, 16:53
Помогаю со студенческими работами здесь

Изменить ярлык программы
Все делаю как обычно Project - Options - Application. Но при выборе иконки вылетает ошибка...

Как открыть ярлык
Доброго времени суток, пишу программу, и надо открыть ярлык, чего у меня не получается. AnsiString...

Программно создать ярлык
Всем привет. Необходимо создать ярлык сетевого диска и поместить на рабочий стол. Подскажите как...

Запуск программы через ярлык
Здравствуйте всем.Задумал сделать конфигуратор для игрового устройства(я виртуальный пилот)В ходе...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru