Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Miller-1981
33 / 32 / 0
Регистрация: 26.01.2009
Сообщений: 592
#1

Зарегестрировать программу в меню пуск - C++

10.08.2012, 12:56. Просмотров 596. Ответов 8
Метки нет (Все метки)

Как программно зарегестрировать программу в меню пуск - если у кого нибудь ссылочки на доку. Средствами api желательно, чтобы универсально для любого ide было
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2012, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зарегестрировать программу в меню пуск (C++):

Меню пуск, получить список Win7 - C++
Привет, как можно получить список строк в меню пуск, там где возле кнопки "Выключение" есть такая стрелка вправо и если ее нажать...

Разработать программу, в которой будет организовано меню, выбор функций меню - C++
Разработать программу, в которой будет организовано меню, выбор функций меню должно быть организовано по функциональной клавише. Вся...

Создать программу - меню «Калькулятор». - C++
Создать программу - меню «Калькулятор». В программе реализовать следующие операции: 1 очистка результата 2 добавление (вычитание) к...

Не выбирает необходимую программу. Условные операторы в меню - C++
При вводе выбора функции 2, все равно решает как первую. В чем может быть ошибка? #include "stdafx.h" #include "stdio.h" #include...

Написать программу, меню использующую оператор выбора - C++
Помогите написать программу меню использующую оператор выбора.

Разработать программу, меню которой позволяет выполнять следующие функции - C++
Разработать программу, меню которой позволяет выполнять следующие функции. 1. Ввод радиуса шара 2. Вывод площади поверхности шара 3....

8
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.08.2012, 13:08 #2
достаточно добавть ярлык в папку с ярлыками меню Пуск, разве нет?
0
TopLoader
42 / 42 / 4
Регистрация: 10.12.2011
Сообщений: 128
10.08.2012, 13:11 #3
Да, никакой особой регистрации в меню Пуск нет, достаточно создать ярлык в папке C:\Users\<Имя пользователя>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
0
Miller-1981
33 / 32 / 0
Регистрация: 26.01.2009
Сообщений: 592
10.08.2012, 13:11  [ТС] #4
Программно хотелось бы это сделать - как ярлык сформировать? файл lnk?
0
Almiqui
Почетный модератор
13981 / 3596 / 86
Регистрация: 11.06.2009
Сообщений: 11,796
10.08.2012, 13:13 #5
то в тему, то ли нет
вообще-то ТС делает так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool TInstallerForm::ProgCommand(AnsiString sCommand)
{
 char  macrocmd[255];
 TDdeClientConv *DdeClient;
 DdeClient = new TDdeClientConv(0);
 DdeClient->SetLink("PROGMAN","PROGMAN");
 DdeClient->OpenLink(); // Устанавливаем связь по DDE
 strcpy(macrocmd,("["+sCommand+"]").c_str()); //{ Подготавливаем ASCIIZ строку }
 bool PC=DdeClient->ExecuteMacro(macrocmd,false);
 DdeClient->CloseLink();// { Закрываем связь по DDE }
 delete DdeClient;
 return PC;
}
 
 AnsiString path = edtInstallFolder->Text+"\\";
  AnsiString path1 = path+"SaveFlash.exe";
  AnsiString path2 = path+"UnInstall.exe";
  ProgCommand("CreateGroup(SaveFlash,)");
  AnsiString str="AddItem("+path1+",SaveFlash,"+path1+",0,,,"+path+",,)";
  ProgCommand(str);
  str="AddItem("+path2+",UnInstall,"+path2+",0,,,"+path+",,)";
  ProgCommand(str);
но у него не получается что-то .. Это я украл его вопрос с другого форума. Хотя ТС - профи Профессионал-разработчик программного обеспечения С++/Delphi/php , чего я лезу ?
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.08.2012, 13:15 #6
Miller-1981, в гугле забанили? или с английским проблемы?
первая ссылка по запросу how to create lnk c++
http://www.codeproject.com/Articles/...uts-link-files
1
Miller-1981
33 / 32 / 0
Регистрация: 26.01.2009
Сообщений: 592
10.08.2012, 13:19  [ТС] #7
Цитата Сообщение от Almiqui Посмотреть сообщение
то в тему, то ли нет
вообще-то ТС делает так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool TInstallerForm::ProgCommand(AnsiString sCommand)
{
 char  macrocmd[255];
 TDdeClientConv *DdeClient;
 DdeClient = new TDdeClientConv(0);
 DdeClient->SetLink("PROGMAN","PROGMAN");
 DdeClient->OpenLink(); // Устанавливаем связь по DDE
 strcpy(macrocmd,("["+sCommand+"]").c_str()); //{ Подготавливаем ASCIIZ строку }
 bool PC=DdeClient->ExecuteMacro(macrocmd,false);
 DdeClient->CloseLink();// { Закрываем связь по DDE }
 delete DdeClient;
 return PC;
}
 
 AnsiString path = edtInstallFolder->Text+"\\";
  AnsiString path1 = path+"SaveFlash.exe";
  AnsiString path2 = path+"UnInstall.exe";
  ProgCommand("CreateGroup(SaveFlash,)");
  AnsiString str="AddItem("+path1+",SaveFlash,"+path1+",0,,,"+path+",,)";
  ProgCommand(str);
  str="AddItem("+path2+",UnInstall,"+path2+",0,,,"+path+",,)";
  ProgCommand(str);
но у него не получается что-то .. Это я украл его вопрос с другого форума. Хотя ТС - профи Профессионал-разработчик программного обеспечения С++/Delphi/php , чего я лезу ?
получил удовлетворение? что у профи чтото не получается? и такое бывает. Тут через dde в названии каталоге если присутсвуют символы "(" и ")" - то метод не работает а именно для папки Program files (x86) - если можешь помоги если нет не хай стебаться. поэтому решил полностью прописать алгоритм по шагово -а тут спрашиваюб вдруг у кого готовый есть алгоритм создания lnk.
0
Almiqui
Почетный модератор
13981 / 3596 / 86
Регистрация: 11.06.2009
Сообщений: 11,796
10.08.2012, 14:02 #8
to TC
Цитата Сообщение от Miller-1981 Посмотреть сообщение
получил удовлетворение?
нет. Душа моя в печали.
0
Miller-1981
33 / 32 / 0
Регистрация: 26.01.2009
Сообщений: 592
10.08.2012, 18:31  [ТС] #9
Все супер получилось. Всем спасибо.
ссылки с доступным описанием:
http://msdn.microsoft.com/en-us/libr...ating_Shortcut
http://www.realcoding.net/teach/Delphi7_prof/Glava31/Index4.html

Делюсь кодом. На билдере правда, но кому надо тот типы поменяет:
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
//путь к объекту, на который ссылается ярлык (lpszPathObj);
// рабочий каталог для этого объекта (lpszWorkDir);
// путь к значку, соответствующему объекту (lpszIcon);
// описание объекта (lpszDesc);
// lpszPathLink -путь к файлу lnk
HRESULT CreateLink(LPCSTR lpszPathObj, LPCSTR lpszWorkDir, LPCSTR lpszIcon, LPCSTR lpszPathLink, LPCSTR lpszDesc)
{
    HRESULT hres;
    IShellLink* psl;
 
    hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
    if (SUCCEEDED(hres))
    {
        IPersistFile* ppf;
 
        psl->SetPath(lpszPathObj);
        psl->SetWorkingDirectory(lpszWorkDir);
        psl->SetIconLocation(lpszIcon,0);
        psl->SetDescription(lpszDesc);
 
        hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
 
        if (SUCCEEDED(hres))
        {
            WCHAR wsz[MAX_PATH];
 
            MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH);
 
            hres = ppf->Save(wsz, TRUE);
            ppf->Release();
        }
        psl->Release();
    }
    return hres;
}
//----------------------------------------------------------------------------
AnsiString __fastcall GetProramFilesFolder(int FoldID)
{
  char szDir[MAX_PATH];
  SHGetFolderPath(0, FoldID/*CSIDL_PROGRAM_FILES*/, 0, 0, szDir);
  return szDir;
}
 
Функция вызова:
 
  AnsiString path = GetProramFilesFolder(CSIDL_PROGRAM_FILES)+"\\SaveFlash\\";
  AnsiString path1 = path+"SaveFlash.exe";
  AnsiString path2 = GetProramFilesFolder(CSIDL_COMMON_PROGRAMS)+"\\SaveFlash\\";
  CreateDir(path2);
  DeleteFile(path2+"SaveFlash.lnk");
  CreateLink(path1.c_str(), path.c_str(), path1.c_str(), (path2+"SaveFlash.lnk").c_str(),"SaveFlash");
  path1 = path+"UnInstall.exe";
  DeleteFile(path2+"UnInstall.lnk");
  CreateLink(path1.c_str(), path.c_str(), path1.c_str(), (path2+"UnInstall.lnk").c_str(),"SaveFlash");
0
10.08.2012, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2012, 18:31
Привет! Вот еще темы с ответами:

Написать программу, навигацию по меню которой осуществить с помощью switch - C++
кто поможет с этим (всё в скриншоте)?

Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню - C++
Мальчикии ,помогите и желательно поясните ,нужно написать программу,которая сортирует двумерный массив и разбить её на функции по пунктам...

Написать программу обработки файла типа запись, содержащую следующие пункты меню: - C++
Различные цеха завода выпускают продукцию нескольких наиме¬нований. Сведения о выпущенной продукции включают: - наименование; ...

Написать программу, вычисления площади фигуры Программа должна управляться с помощью меню из шести пунктов: - C++
Написать программу, вычисления площади фигуры Программа должна управляться с помощью меню из шести пунктов: Текст задачи, Ввод данных...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.