Заблокирован
1

Поместить ярлык на рабочий стол Windows

17.01.2018, 23:24. Показов 1195. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не секрет, что с помощью QFile::link() можно создать ярлык на файл, теперь вопрос, как его поместить на рабочий стол?
Пробовал вычислить путь так:
C++ (Qt)
1
QString desctopPath = QStandardPaths::displayName( QStandardPaths::DesktopLocation );
возвращает 'Desctop' Ну и что это мне дало... Мне ж нужен абсолютный путь, что бы туда скопировать...
Есть идеи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2018, 23:24
Ответы с готовыми решениями:

Ярлык на рабочий стол
Только не бейте ногами, пожалуйста! Можно ли каким-то образом сделать кнопку на сайте, чтобы при...

Как создать ярлык на рабочий стол?
Господа какая winapi шная функция умеет содавать ярлык на рабочий стол ?

Создать ярлык на удаленный рабочий стол
Добрый день. Искал в поиске так и не нашел. Есть выделенный каталог на сервере например...

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

4
59 / 49 / 19
Регистрация: 16.06.2015
Сообщений: 206
18.01.2018, 09:30 2
Попробуй так
C++ (Qt)
1
QStandardPaths::standardLocations(QStandardPaths::DesktopLocation)
Добавлено через 1 минуту
Там правда возвращается QStringList, но думаю что дальше делать разберешься.
0
Заблокирован
18.01.2018, 13:31  [ТС] 3
Цитата Сообщение от terriblemike Посмотреть сообщение
но думаю что дальше делать разберешься.
я ж сказал, он ерунду возвращает. Да и потом, Qt-ешными методами не выставишь иконку. В общем вот что я себе накидал, если кому интересно:
C++ (Qt)
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
69
70
71
72
73
bool MainWindow::createLink(QString source, QString linkName)
{
    source.replace("/", "\\");
 
    HRESULT hres;
    IShellLink *psl = NULL;
    IPersistFile *pPf = NULL;
    LPITEMIDLIST pidl;
 
    CoInitialize(NULL);
    hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
    CoUninitialize();
    if(FAILED(hres))
    {
        if(pPf)
           pPf->Release();
        if(psl)
           psl->Release();
        return false;
    }
 
    hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&pPf);
    if(FAILED(hres))
    {
        if(pPf)
           pPf->Release();
        if(psl)
           psl->Release();
        return false;
    }
    hres = psl->SetPath(source.toStdWString().c_str());
    if(FAILED(hres))
    {
        if(pPf)
           pPf->Release();
        if(psl)
           psl->Release();
        return false;
    }
 
    SHGetSpecialFolderLocation((HWND)winId(), CSIDL_DESKTOP, &pidl);
 
    wchar_t path[512];
    SHGetPathFromIDList(pidl, path);
    QString targetPath = QString::fromWCharArray(path);
    targetPath += "\\";
    targetPath += linkName;
    targetPath += ".lnk";
 
    hres = pPf->Save(targetPath.toStdWString().c_str(), TRUE);
    if(FAILED(hres))
    {
        if(pPf)
           pPf->Release();
        if(psl)
           psl->Release();
        return false;
    }
 
    QString iconPath = QDir::currentPath() + "/icon.ico"; //сами думайте, откуда иконку брать
    iconPath.replace("/", "\\");
    hres = psl->SetIconLocation(iconPath.toStdWString().c_str(), 1);
    if(FAILED(hres))
    {
       if(pPf)
          pPf->Release();
       if(psl)
          psl->Release();
       return false;
    }
 
    return true;
}
0
59 / 49 / 19
Регистрация: 16.06.2015
Сообщений: 206
18.01.2018, 14:27 4
попробовал бы вывести это к примеру
C++ (Qt)
1
qDebug() << QStandardPaths::standardLocations(QStandardPaths::DesktopLocation)
и получил бы путь к десктопу. У меня он вывел нормальный путь.
1
Заблокирован
18.01.2018, 16:51  [ТС] 5
Цитата Сообщение от terriblemike Посмотреть сообщение
попробовал бы вывести это к примеру
тфу ты, я думал ты мою строку скопировал и тоже самое написал, не заметил. Да, путь показывать нормально
Но всё равно, через Qt нельзя иконку установить
0
18.01.2018, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2018, 16:51
Помогаю со студенческими работами здесь

как создать ярлык на рабочий стол в виндовс 8
я новичек. виндовс 8 пользуюсь 3-ий день. возникла проблема.... подскажите как мне создать ярлыки...

Вывести на рабочий стол как ярлык программу
Всем добра, с недавнего времени появилась необходимость работать с Lubuntu. Все бы ни чего,да...

Вывести на рабочий стол ярлык для монитора ресурсов
подскажите, пжл,как сделать ярлык на рабочий стол для программы монитор ресурсов. win7 64

Как создать ярлык exe файла на рабочий стол?
Как создать ярлык exe файла на рабочий стол, библиотеку using IWshRuntimeLibrary; я подключил

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

Как сделать, что-бы добавить на рабочий стол ярлык программы (borland c ++ buider)
*


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

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

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