verknüpfung erstellen...
-
hi,
ich proggge unter c++ 2003 MFC,
wie kann ich eine verknüfung erstellen.Ort C:\windows\system32\notepad.exe
ziel der c:\dieverknüpfung
CreateShortcut <- kann ich nehmen oder geht das nur für VB?
-
Ein blick auf Codeproject hätte genügt:
http://www.codeproject.com/KB/shell/CShortcut.aspx
http://www.codeproject.com/KB/shell/create_shortcut.aspx
-
ok,thx
meine Funktion CreateShortcut braucht einen header...#include <Shortcut.h> <- mein VC++ findet den header nicht
-
ich such mit gerade einen fetten Wolf
CoCreateInstance <- das ist das einzigste,was ich gefunden habe,um eine Verknüpfung zu erstellen.Es muss doch eine möglichkeit geben, um einen Link (verknüpfung) zu erstellen.
Klick auf Dektop und dann startet der z.b. Notepad.Das kann doch nicht so schwer sein.
über google stosse ich immer auf CreateShortcut und dann kommt immer VB VB VB
kann ich auf per notepad eine .lnk schreiben.
bin für jede hilfe dankbar
-
Sag mal kannst Du icht die Samples mal ansehen, die ich dir gegeben habe?
-
Martin Richter schrieb:
Sag mal kannst Du icht die Samples mal ansehen, die ich dir gegeben habe?
ich hab mir die samples angeschaut,bevor ich meinen Beitrag erstellt habe
Mein VC++ 2003 kennt keine CreateShortcut() (siehe Beitrag von oben)
#include <Shortcut.h> <-Problem (siehe Beitrag von oben)
-
Also der Code in diesem Artikel z.B.:
http://www.codeproject.com/KB/shell/create_shortcut.aspx
ist einfach in dem Artikel! Da gibt es keine Header.In dem zweiten Artikel ist der Header mit in dem ZIP!
http://www.codeproject.com/KB/shell/CShortcut.aspx
Wo hast Du den bitte hin kopiert?Wo ist Dein Problem?
Wo bitte erwartest Du einen Header der so heißt?
-
ok,
void Clookund::OnBnClickedButton15() { LPCTSTR lpszFileName = _T("C:\\Work\\Window.exe"); LPCTSTR lpszShortcutDesc = _T("Anything can go here"); LPCTSTR lpszShortcutPath = _T("C:\\Documents and Settings\\Administrator\\Desktop\\Sample Shortcut.lnk"); CreateShortcut(lpszFileName, lpszShortcutDesc, lpszShortcutPath); }
error C3861: 'CreateShortcut': identifier not found, even with argument-dependent lookup
wo liegt der Fehler?
-
Ich würde anfangen bei
1. add the files Shortcut.h and Shortcut.cpp to your project and Include the header
-
#include shortcut.h <- gibt es nicht
-
Martin Richter schrieb:
In dem zweiten Artikel ist der Header mit in dem ZIP!
http://www.codeproject.com/KB/shell/CShortcut.aspxDadrin kannst du dir den Source holen und dadrin gibts dann logischerweise Shortcut.cpp und Shortcut.h !
-
thx all...
ok,demo runtergeladen und ziemlich alles abgeschnitten.
Wird die Funktion aufgerufen,wird ein icon erstellt.
Jetzt hab ich das Problem,wenn ich den schnipsel in mein Projekt einfüge,bringt er 2 Fehler.IShellLink* psl; CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*) &psl); IPersistFile* ppf; psl->SetPath("c:\\Dokumente und Einstellungen\\tomtom\\Eigene Dateien\\Visual Studio Projects\\demo_II\\Debug\\Shortcut Demo.exe"); psl->SetDescription("sExePath"); //Die beschrei psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf); WORD wsz[MAX_PATH]; MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, "C:\\Dokumente und Einstellungen\\tomtom\\Desktop\\ddd.lnk", -1, wsz, MAX_PATH); psl->SetIconLocation("C:\\WINDOWS\\system32\\shell32.dll", 1); // Pfad /INDEX !!!! ppf->Save(wsz, TRUE); ppf->Release(); psl->Release();
error C2664: 'MultiByteToWideChar' : cannot convert parameter 5 from 'WORD [260]' to 'LPWSTR' 'IPersistFile::Save' : cannot convert parameter 1 from 'WORD [260]' to 'LPCOLESTR'
-
WCHAR wsz[MAX_PATH];
-
eingefügt und erbringt keine Fehler.
WEnn ich auf den Knpf drücke kommt.
Fatal Error.psl->SetPath("c:\\Dokumente und Einstellungen\\tomtom\\Eigene Dateien\\Visual Studio Projects\\demo_II\\Debug\\Shortcut Demo.exe");
-
Den Debugger kennst Du?
-
vc++ 2003 studio
-
Das hat auch schon einen. Also Schritt für Schritt durchgehen, Fehlercodes abfragen und auf NULL-Zeiger prüfen. Ich glaube nicht, dass Dir das jemand abnehmen wird.
-
das komische ist,der schnipsel geht im dem Demo, los nicht in meinem Projekt, ich scheck das mal.
-
Kleiner Tipp: Rückgabewert von CoCreateInstance prüfen. Der sollte eigentlich alles aussagen.
-
CoCreateInstance gehört in ein MFC Programm nur, wenn man wirlich weiß was man macht ;).
Innerhalb der MFC sollte man nur AfxOleInit() verwenden... sicher es gibt seltene Ausnahmen...