нашел на первой странице которую гугл выдает Код (Text): #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); }
На RSDN хорошо описывается. Но на с++. В качестве справочного материала пойдет. Мы тут на wasm.ru не знаем, что такое с++ )) Вдруг кому-нибудь понадобится. На wasm.ru обновленный пакет ассемблера без этого примерчика:
а без использования COM, какие еще варианты есть ? только запатчить другой ярлык или собрать свой по формату lnk?
мб кому то будет интерессно, внутри есть все структуры и код, можно написать без проблем чтобы в сырую создавать ярлыки. Просто тоже столкнулся с такой проблемой, может есть более гуманные способы и без исользования COM.
А де эти структуры документированы у макрасафака? Хотелось бы работающих структур. Самый простой тип ярлыка, правда работает через раз: Код (Text): [InternetShortcut] URL=file:///HELLO.EXE
Ну вы и придури. Есть интерфейсы системы для создания ярлыков, а вы трахаете мозг((( Если есть причина - напишите, иначе...траляля и много матных слов