Shortcut erzeugen auf Pocket PC

B

brainbug80

Hallo liebe Comm,

ich habe folgendes Problem:
Ich möchte mit Hilfe meines Programms einen Shortcut ins Autostart-Verzeichnis des PPCs schreiben, sobald das Programm gestartet wird und wieder gelöscht werden, sobald es beendet wird. Der Sinn dahinter ist der, dass das Programm bei einem Softreset des PPCs automatisch neu gestartet werden soll.
Mein bisheriger Quellcode der Funktion sieht folgendermaßen aus: (Hier ist die Volage, die ich benutzt habe.)

Code:
bool MyClass::CreateShortCut( TShortcutCfg_* sCfg )
{
	char cBuf[MAX_PATH];
	bool blRetVal = true;   // Rückgabewert
	wchar_t wsz [MAX_PATH]; // Buffer für Unicode String
	IShellLink *psl;
	CString shortcut;
	CString shortcutFolder = sCfg->linkDir;

	// Verzeichnis und Datei zusammenführen
	shortcut = shortcutFolder + L"\\" + sCfg->shortcutName + L".lnk";

	MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, shortcut, -1, wsz, MAX_PATH);

	if( blRetVal )
	{
		// COM-Bibliothek initialisieren
		blRetVal = CoInitialize(NULL) == S_OK;

		if( blRetVal )
		{
			// IShellLink Objekt erzeugen
			blRetVal = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl) >= 0;
			if( blRetVal )
			{
				IPersistFile *ppf;

				// Zeiger auf IPersistFile-Interface (zum Speichern der
				// Verknüpfung) besorgen
				blRetVal = psl->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0;
				if( blRetVal )
				{
					// Zieldatei der Verknüpfung setzen
					if( !sCfg->destFile )
						blRetVal = psl->SetPath(sCfg->destFile) >= 0;

					// Verknüpfung speichern
					if( blRetVal ) 
						blRetVal = ppf->Save(wsz, TRUE) >= 0;

					// Zeiger auf IPersistFile freigeben
					ppf->Release();
				}
				// Zeiger auf IShellLink freigeben
				psl->Release();
			}
			// COM-Bibliothek freigeben
			CoUninitialize();
		}
	}
	return blRetVal;
}

Folgende Headerfiles hab ich includiert (die nicht benötigten Files werde ich natürlich noch raus schmeißen):
#include <windows.h>
#include <shlobj.h>
#include <initguid.h>
#include <objbase.h>
#include <ole2.h>
#include <shlguid.h>

Jetzt bekomme ich leider 2 Fehlermeldungen, die ich nicht wegbekomme:
error C2065: 'CLSID_ShellLink' : undeclared identifier
error C2065: 'IID_IShellLinkW' : undeclared identifier

Ich habe natürlich schon Google bemüht, konnte aber leider nicht die passende Lösung finden. :(
Vielleicht weiß ja jemand von euch weiter... Ich wäre auf jeden Fall sehr dankbar. :)

Gruß,
Tobias

P.S. Ich benutze eMbedded Visual C++ 4.0 mit einem Pocket PC 2003 SDK.
 
Zurück