verknüpfung erstellen...
-
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...
-
Martin Richter schrieb:
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...
Ich bezweifle, dass man COM-Objekte in der MFC mit AfxOleInit() erstellen kann.
-
sri schrieb:
Ich bezweifle, dass man COM-Objekte in der MFC mit AfxOleInit() erstellen kann.
Und warum tust Du das? Weißt Du wirklich von was Du redest?
AfxOleInit ist ein per Thread Wrapper für ::OleInitialize(NULL); (siehe link unten).
Zudem sorgt AfxOleInit dafür, dass bei Beenden des Threads automatisch AfxOleTerm aufgerufen wird.::OleInitialize(NULL) ist ein Wrapper für den Aufruf von CoInitializeEx im STA Kontext:
Siehe MSDN
http://msdn.microsoft.com/en-us/library/ms690134(VS.85).aspxOleInitialize calls CoInitializeEx internally to initialize the COM library on the current apartment. Because OLE operations are not thread-safe, OleInitialize specifies the concurrency model as single-thread apartment.
Die MFC benutzt und verlangt genau diesen STA Modus. Sofern man also nicht wirklich weiß was man mit CoInitializeEx macht, sollte man es in der MFC vermeiden.
Siehe auch MSDN Doku zu AfxOleInit:
http://msdn.microsoft.com/de-de/library/e91aseaz(VS.80).aspxMFC applications must be initialized as single threaded apartment (STA). If you call CoInitializeEx in your InitInstance override, specify COINIT_APARTMENTTHREADED (rather than COINIT_MULTITHREADED). For more information, see PRB: MFC Application Stops Responding When You Initialize the Application as a Multithreaded Apartment (828643) at http://support.microsoft.com/default.aspx?scid=kb;en-us;828643.
-
Du hast in deinem Beitrag vorher CoCreateInstance und OleInitialize vermischt.