mittels C++ Icon auf Desktop erzeugen
-
Guten Morgen ich hätte da mal eine Frage und hoffe sehr das mir da jemand weiterhelfen kann.
Es geht ganz einfach gesagt darum mittels C++ ein Icon auf dem Desktop zu erzeugen.
Weis jemand wie das geht oder hat da jemand Erfahrung mit gemacht?Wäre wirklich sehr dankbar um jeden Tipp und jede Idee
greetz sand13r
-
/* * Verknüpfung erstellen mit C++ * --------------------------------------- * * Written by M4CH!N3 * * Params: * pszPath = Pfad zum/zur Verknüpften Ordner/Datei * pszArguments= eventuelle Kommandozeilenparameter * pszLocation= Pfad, wo die Verknüpfung gespeichert werden soll * pszWorkingDir= Working Directory -> Aktives Directory, in welchem die Verknüpfung arbeiten soll * pszIcon= Pfad zum Icon / zur Exe mit dem Icon * nCmdShow= Showstate vom Verknüpften Programm/Ordner (SW_SHOWNORMAL; SW_SHOWMAXIMIZED; SW_SHOWMINNOACTIVE) * * November 2006 * */ #include <shobjidl.h> #include <shlguid.h> typedef IShellLink *LPSHELLLINK; typedef IPersistFile *LPPERSISTFILE; BOOL CreateShortcut( LPCSTR pszPath, LPCSTR pszArguments, LPCSTR pszLocation, LPCSTR pszWorkingDir, LPCSTR pszIcon, int nCmdShow ) { LPSHELLLINK pShellLink; HRESULT hrCoInit; HRESULT hr; hrCoInit = CoInitialize( NULL ); hr = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pShellLink ); if( SUCCEEDED( hr ) ) { LPPERSISTFILE pPersistFile; if(SUCCEEDED(pShellLink->QueryInterface(IID_IPersistFile,(void**)&pPersistFile))) { wchar_t wsz[ MAX_PATH ]; hr = pShellLink->SetPath(pszPath); if( SUCCEEDED( hr ) ) hr = pShellLink->SetArguments(pszArguments); if( SUCCEEDED( hr ) ) hr = pShellLink->SetWorkingDirectory(pszWorkingDir ); if (SUCCEEDED(hr)) hr = pShellLink->SetIconLocation(pszIcon,0); if( SUCCEEDED( hr ) ) hr = pShellLink->SetShowCmd(nCmdShow ); if( SUCCEEDED( hr ) ) { MultiByteToWideChar( CP_ACP, 0, pszLocation, -1, wsz, MAX_PATH); hr = pPersistFile->Save( wsz, TRUE ); hr = pPersistFile->SaveCompleted( wsz ); } } pShellLink->Release( ); } if( SUCCEEDED( hrCoInit ) ) CoUninitialize(); return SUCCEEDED( hr ); }So rufst du es dann auf:
int _tmain(int argc, _TCHAR* argv[]) { CString path = _T("C:\\WINDOWS");//Pfad wo der Link hinzeigen soll CString arg = _T("");//Argumente brauchst du nicht CString linkPath = _T("C:\\Dokumente und Einstellungen\\DeinName\\Desktop\\windows.lnk");//Pfad zu deinem Desktop (Dateiendung:LNK) CString workDir = _T("C:\\");//egal, irgendwas CString icon = _T("C:\\WINDOWS");//pfad, wo das icon herbekommen soll(kann auch eine exe-datei oder ico-datei sein int show = SW_SHOWNORMAL;//showflag halt cout << "Verknuepfung wird nun erstellt...\n"; if( CreateShortcut(path, arg, linkPath, _T("C:\\"), path, show) ) cout << "Verknuepfung wurde erstellt!\n"; else cout << "Fehler beim Erstellen!\n"; system("PAUSE"); return 0; }
-
ich würd den Pfad zum Desktop aus der Registrierung auslesen lassen...
der entsprechende Schlüssel ist unter HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\
-
kann er ja machen.. was er für nen pfad an die funktion übergibt ist mir egal
:xmas1: :xmas2:
-
EH SUPER

VIELEN VIELEN DANK habs gleich ausprobiert funktioniert wie eine 1^^
super super super
THX THX THX
greetz sand13r
PS. Falls jemand auch mal den Code oben ausprobiert. bei mir gingen die Includes nicht i hab se dann durch
#include "objbase.h" #include "shlobj.h"ersetzt dann gings ^^
DANKE DANKE DANKE nochmal super echt klasse ^^