Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Utworzenie skrótu z linii polecen

fantom 08 May 2005 17:04 3674 11
  • #1
    fantom
    Level 31  
    Czy wie ktos jak mozna utworzyc skrot do aplikacji z poziomu shella windowsowego ? Nie chodzi mi bynajmniej o programik shortcut.exe dostepny tylko w serwerach NT ale sposob za pomoca ktorego moge utworzyc skrot na kazdym windowsie.Uratuje mnie rowniez jesli ktos bedzie znal odpowiednia funkcje API wraz z dll-ka w ktorej wystepuje.
  • #3
    Akane
    Level 27  
    no to masz wprawne oko :)

    to poniżej robi skrót na pulpicie do programu w którym się znajdzie :)
    sub ZrobSkrot()
    	CHAR skrot[300], exe[300], title[100]
    	INT typ, size, ok
    	POINTER ShellFolders
    
    	IShellLinkA isl
    	IPersistFile ipp
    	CoInitialize(NULL)
    	ok = 0
    
    	ShellFolders = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
    
    	if S_OK = CoCreateInstance(_CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, _IID_IShellLinkA, &isl)
    
    		GetModuleFilename(NULL, exe, 260)
    		GetFileTitle(exe, title, 100)
    		isl->SetPath(exe)
    		isl->SetIconLocation(exe, 0)
    		isl->SetDescription("opis mojego super progsa")
    
    		if S_OK = isl->QueryInterface(_IID_IPersistFile, &ipp)
    
    			size = 260
    			if S_OK = ShGetValue(HKEY_CURRENT_USER, ShellFolders, "Desktop", &typ, skrot, &size)
    				strcat(skrot, "\\"+title)
    				PathRenameExtension(skrot, ".lnk")
    				ipp->Save(strToUnicode(skrot), TRUE)
    				ok=TRUE
    			endif
    
    			ipp->Release()
    		endif
    		isl->Release()
    		CoUninitialize()
    	endif
    
    	return OK
    endsub


    odradzam używanie SHGetSpecialFolderLocation() bo po zmianie położenia pulpitu w rejestrze ShellFolders - ścieżki się nie zgadzają.
  • #4
    fantom
    Level 31  
    Dzieki juz to przegladalem ale myslalem o troche bardziej shellowym rozwiazaniu.Program zywcem wziety z msdn-u a teraz jak takie cos zastosowac w shellowym skrypcie ? Myslalem raczej o czyms takim jak appwiz.cpl tyle tylko ze potrzebuje znac cpl-ke ktora sie wykonuje po wcisnieciu prawym przyciskiem na ikone aplikacji, a najlepiej ktora funkcja z tej cpl-ki sie wykonuje gdy wybierze sie "utworz skrot".Cos w ten desen http://www.dx21.com/SCRIPTING/RUNDLL32/VIEWITEM.ASP?OID=103&CMD=P-A
    tylko zeby nie3 otwieral sie menedzer tworzenia skrotu a od razu skrot.
  • #6
    fantom
    Level 31  
    Chodzi mi o to aby taka komende umiescic w pliku .bat podobnie jak w powyzszym linku
  • #7
    LordBlick
    VIP Meritorious for electroda.pl
    A dlaczego nie chcesz wykorzystać hosta skryptów Windows ? Obsługuje VBS i JavaScript, klikasz tak samo jak na bat-a... ;) Z wykonywaniem metod w linii poleceń jest raczej ciężko, bo trzeba utworzyć instancję i dopiero do niej się odwoływać.
  • #8
    fantom
    Level 31  
    Cos skryptowaniem w tych jezykach sie nie zajmowalem a bat-a instalacyjnego juz napisalem calego.Chcialem dac uzytkownikowi mojego programu ta przyjemnosc i utworzyc mu ladny skrocik na pulpicie (ot taki bajer ale klienci to lubia).
  • #10
    fantom
    Level 31  
    Bedzie to rozwiazanie ostateczne ale poki co mam nadzieje ze da sie to zrobic jedna linijka.Niestety dokumentacja microsoftu jest strasznie zamotana.Dlaczego nie ma tu zwyklych wiazan symbolicznych ??? Dlaczego ???
  • Helpful post
    #11
    elektryk
    Level 42  
    Śledztwo w rejestrze wykazało że do plików .desklink które są jakby skrótem to zrobienia skrótu na pulpit, przypisana jest biblioteka G:\WINNT\system32\sendmail.dll
    Wydaje mi się że ciąg dalszy szukania trzeba by zrobić w jakimś Windows SDK albo podobnym. Osobiście mam wątpliwość, ponieważ skoro nawet sam windows korzysta z biblioteki która jest zapisana w rejestrze, to być może w przyszłych wersjach windows ta biblioteka będzie całkiem inna.

    Znalazłem w sieci jeszcze taki pomysł ze skryptem VBS, trzeba go sobie samemy "wygenerować", uruchomić i skasować:
    http://forums.devshed.com/archive/t-226495/create-shortcut-lnk-using-XP-cmd-batch
  • #12
    fantom
    Level 31  
    Na obecnym etapie jest to zdecydowanie najlepsze rozwiazanie jakie do tej pory widzialem.Dzieki.