Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

skipik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#include <windows.h>
#include <shlobj.h>
//#include <stdio.h>
//#include <iostream>
 
int main(int argc, char* argv[])
{
    char desktopDir[MAX_PATH], currentDir[MAX_PATH], workingDir[MAX_PATH];
    OLECHAR lnkPath[MAX_PATH];
    int nSuccess = 0;
    SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, NULL, 0, desktopDir);
    strcat(desktopDir, "\\Far.lnk");
    GetCurrentDirectory(MAX_PATH, currentDir);
    strcpy(workingDir, currentDir);
    strcat(currentDir, "\\Far.exe");
    //printf("%s\n",desktopDir);
 
    if (SUCCEEDED(CoInitializeEx(0, COINIT_APARTMENTTHREADED)))
    {
        IShellLink*   link;
        if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
                                       CLSCTX_INPROC_SERVER, IID_IShellLink, (void**) &link)))
        {
            //link->SetPath(TEXT(argv[1]));
            link->SetPath(TEXT(currentDir));
            link->SetDescription(TEXT("Far Manager"));
            link->SetWorkingDirectory(TEXT(workingDir));
            link->SetShowCmd(SW_SHOW);
 
            IShellLinkDataList* pdl;
            if (SUCCEEDED(link->QueryInterface(IID_IShellLinkDataList, (void**)&pdl)))
            {
                NT_CONSOLE_PROPS props =
                {
                    {                           // DATABLOCKHEADER dbh
                        sizeof(NT_CONSOLE_PROPS), // DWORD cbSize
                        NT_CONSOLE_PROPS_SIG        // DWORD dwSignature
                    },
                    7,                          // WORD wFillAttribute;
                    245,                        // WORD wPopupFillAttribute;
                    { 125, 40 },              // COORD dwScreenBufferSize;
                    { 125, 40 },                // COORD dwWindowSize;
                    { 0, 0 },                   // COORD dwWindowOrigin;
                    0,                          // DWORD nFont;
                    0,                          // DWORD nInputBufferSize;
                    { 8, 18 },                  // COORD dwFontSize;
                    54,                         // UINT uFontFamily;
                    400,                        // UINT uFontWeight;
                    L"Consolas",          // WCHAR FaceName[LF_FACESIZE];
                    15,                         // UINT uCursorSize;
                    0,                          // BOOL bFullScreen;
                    1,                          // BOOL bQuickEdit;
                    1,                          // BOOL bInsertMode;
                    0,                          // BOOL bAutoPosition;
                    50,                         // UINT uHistoryBufferSize;
                    4,                          // UINT uNumberOfHistoryBuffers;
                    0,                          // BOOL bHistoryNoDup;
                    {                           // COLORREF ColorTable[16];
                        RGB(0, 0, 0),
                        RGB(31, 59, 105),
                        RGB(56, 150, 56),
                        RGB(50, 135, 145),
                        RGB(128, 0, 68),
                        RGB(142, 92, 147),
                        RGB(128, 128, 0),
                        RGB(192, 192, 192),
                        RGB(128, 128, 128),
                        RGB(41, 69, 255),
                        RGB(0, 255, 0),
                        RGB(70, 255, 255),
                        RGB(245, 15, 15),
                        RGB(250, 60, 250),
                        RGB(255, 230, 70),
                        RGB(255, 255, 255)
                    }
                };
                if (SUCCEEDED(pdl->AddDataBlock(&props)))
                {
                    IPersistFile* file;
                    if (SUCCEEDED(link->QueryInterface(IID_IPersistFile,
                                                       (void**) &file)))
                    {
            mbstowcs((OLECHAR*)&lnkPath, (char*)&desktopDir, sizeof(desktopDir));
            BSTR name = SysAllocString(lnkPath);
                        if (name)
                        {
                            if (SUCCEEDED(file->Save(name, TRUE)))
                            {
                              //  std::cout << "done\n";
                              //printf("done.\n");
                              nSuccess = 1;
                            }
                            SysFreeString(name);
                        }
                    }
                }
                pdl->Release();
            }
            link->Release();
        }
        CoUninitialize();
    }
 
    if(!nSuccess)
    {
        MessageBox(0, "Failed to create shortcut!", "Error!", MB_OK|MB_ICONERROR);
    }

Всего записей: 4808 | Зарегистр. 07-07-2006 | Отправлено: 23:26 26-03-2022 | Исправлено: skipik, 10:52 27-03-2022
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru