C++ NET tworzenie skrótu na pulpicie lub w menu start

Odpowiedz Nowy wątek
2011-10-20 19:20
0

Tak jak w temacie. Szukam sposobu na możliwość tworzenia przez program skrótu na pulpicie lub w menu start. Piszę mały instalator i utknąłem w tym miejscu. Szukałem tu na portalu, niestety jest opis tylko dla Delphi oraz winAPI, a ja nie korzystam ani z jednego ani z drugiego. Na googlach informacje są na ten temat z reguły przestarzałe. Jakby co używam Visual C++ 2008 Express Edition i pisze aplikacje wykorzystując NET. Da się to zrobić czy lepiej dać sobie z tym spokój? :)

Pozostało 580 znaków

2011-10-21 07:56
0

jest opis tylko dla Delphi oraz winAPI, a ja nie korzystam ani z jednego ani z drugiego

to skorzystaj z WinAPI i zrób to tak samo.

Pozostało 580 znaków

2011-10-22 15:44
0

Spróbuje chociaż moje ostatnie próby łączenia NET z winAPI zakończyły się fiaskiem.

Pozostało 580 znaków

2011-10-22 16:04
ae
2011-10-25 18:12
0

Ehh. nic mi nie wychodzi. Ten kod co podałeś ae jest jakiś dziwny, a nie mogę znaleźć info jak go przerobić. Jedyne co zrobiłem to przepisałem go na C++/CLI

String^ linkName = program;
System::String^ deskDir = System::Environment::GetFolderPath(System::Environment::SpecialFolder::DesktopDirectory);
System::IO::StreamWriter^ writer = gcnew System::IO::StreamWriter(deskDir + "\\" + linkName + ".url");
System::String^ app = System::Reflection::Assembly::GetExecutingAssembly()->Location;
writer->WriteLine("[InternetShortcut]");
writer->WriteLine("URL=file:///" + app);
writer->WriteLine("IconIndex=0");
System::String^ icon = app->Replace('\\', '/');
writer->WriteLine("IconFile=" + icon);
writer->Flush();

Próbowałem zamiast "url" dać "ink", do zmiennej app wczytanie lokalizacji piku exe a zamiast "[InternetShortcut]" "[ApplicationShortcut]" ale nic nie daje.
Próbowałem również zrobić to inaczej wykorzystując IWshRuntimeLibrary ale nie mogę tego dodać do projektu za nic. Wszędzie pisze ze mam wybrać z menu kontekstowego po kliknięciu na "Solution..." Add Reference ale u mnie nie ma tego. Po prostu załamka. Albo ja już jestem taki głupi albo to dotyczy starszych wersji lub płatnych wersji. Pomóżcie...

Edit: z tego co znalazłem wynika, że nie da się łączyć funkcji winAPI i NET tak że przez winAPI tego nie zrobię, proszę pomóżcie...

edytowany 2x, ostatnio: mr_jaro, 2011-10-25 19:08

Pozostało 580 znaków

2011-10-25 19:41
/*
   dodać do projektu referencję:
   Add New Reference | COM | Windows Script Host Object Model
*/

#include "stdafx.h"

using namespace System;
using namespace System::IO;

using namespace IWshRuntimeLibrary;

void CreateShortcut(String ^shortcutPath, String ^targetPath, String ^description)
{
    WshShell ^shell = gcnew WshShell();
    IWshShortcut ^shortcut = (IWshShortcut^)shell->CreateShortcut(shortcutPath);
    shortcut->Description = description;
    shortcut->TargetPath = targetPath;
    shortcut->Save();
}

int main(array<System::String ^> ^args)
{
    String ^desktopPath = Environment::GetFolderPath(Environment::SpecialFolder::Desktop);
    CreateShortcut(Path::Combine(desktopPath, L"Nazwa skrótu.lnk"),
                   L"c:\\windows\\system32\\notepad.exe", // ścieżka do exeka
                   L"Opis skrótu widoczny po najechaniu myszką");
}

DZIĘKUJĘ ;-)

Wszędzie pisze ze mam wybrać z menu kontekstowego po kliknięciu na "Solution..." Add Reference ale u mnie nie ma tego.

jest w każdej wersji. w 2008 jest tak: solution explorer, kliknij prawym na nazwie projektu (nie na „Solution”, tylko linijkę niżej), References.

edytowany 4x, ostatnio: Azarien, 2011-10-25 19:53

Pozostało 580 znaków

2011-10-26 20:25
0

Dziękuję :) Teraz wszystko śmiga, że aż miło

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0