Verknüpfungen, wie geht das ??
-
Hallo Leute,
weiß hier nicht zufällig jemand, wie man ein Programm schreibt, dass selbstständig Verknüpfungen (z.B. auf dem Desktop)erzeugen kann ? Gibt's da irgendwelche Funktionen in der Win API ?Danke im Voraus !
-
Geklaut aus PC Intern 5, Data Becker:
//----- Typedefs ------------------------------------------------------- typedef IShellLink *LPSHELLLINK; typedef IPersistFile *LPPERSISTFILE; /**********************************************************************/ /* CreateShortcut : Hilfsfunktion zur Erzeugung eines Shortcuts */ /*--------------------------------------------------------------------*/ /* Parameter : pszPath - Pfad, auf den der Shortcut verweist */ /* pszArguments - Programmargumente */ /* pszLocation - Wo und unter welchem Namen soll der */ /* Shortcut gespeichert werden? */ /* pszWorkingDir - Arbeitsverzeichnis */ /* pszIcon - Icon */ /* nCmdShow - Wie soll das Applikationsfenster */ /* nach dem Start dargestellt werden? */ /* Rückgabewert : TRUE - Shortcut wurde erzeugt */ /* FALSE - Fehler */ /**********************************************************************/ BOOL CreateShortcut( LPSTR pszPath, LPSTR pszArguments, LPSTR pszLocation, LPSTR pszWorkingDir, LPSTR pszIcon, int nCmdShow ) { LPSHELLLINK pShellLink; HRESULT hrCoInit; // OLE-Installations-Ergebnis HRESULT hr; // Ergebnis der Objektmethoden hrCoInit = CoInitialize( NULL ); // OLE initialisieren hr = CoCreateInstance( CLSID_ShellLink, // ShellLink-Objekt erzeugen NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pShellLink ); if( SUCCEEDED( hr ) ) { LPPERSISTFILE pPersistFile; // PersistFile Interface ermitteln ------------------------------- if(SUCCEEDED(pShellLink->QueryInterface(IID_IPersistFile,(void**)&pPersistFile))) { wchar_t wsz[ MAX_PATH ]; // Programmpfad setzen ------------------------------------------ hr = pShellLink->SetPath(pszPath); // Argumente setzen ---------------------------------------------- if( SUCCEEDED( hr ) ) hr = pShellLink->SetArguments(pszArguments); // Arbeitsverzeichnis setzen ------------------------------------- if( SUCCEEDED( hr ) ) hr = pShellLink->SetWorkingDirectory(pszWorkingDir ); // Icon setzen --------------------------------------------------- if (SUCCEEDED(hr)) hr = pShellLink->SetIconLocation(pszIcon,0); // ShowCommand setzen -------------------------------------------- if( SUCCEEDED( hr ) ) hr = pShellLink->SetShowCmd(nCmdShow ); // Pfad setzen, an dem Shortcut abgespeichert werden soll ------- if( SUCCEEDED( hr ) ) { MultiByteToWideChar( CP_ACP, 0, pszLocation, -1, wsz, MAX_PATH); hr = pPersistFile->Save( wsz, TRUE ); hr = pPersistFile->SaveCompleted( wsz ); } // ************************************* // // hr = pPersistFileRelease( ); // // ************************************* } pShellLink->Release( ); } // Wenn OLE hier initialisiert wurde, muß es auch hier wieder de- // installiert werden. if( SUCCEEDED( hrCoInit ) ) CoUninitialize(); return SUCCEEDED( hr ); }
Mit dem Teil kann man eine Verknuepfung in einem beliebigen Verzeichnis erstellen. Ist - denke ich mal - selbsterklaerend!
edit: WORD durch wchar_t ersetzt.