Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
BOOL CreateLink( const char *szPath, const char *szDescription, const char *szFile, const char *szIconPath, DWORD dwIconIndex, const char* szParameter )
{
HRESULT hRes;
IShellLink *pISL;
IPersistFile *pIPF;
WORD wString[MAX_PATH];
char szTemp[1000];
BOOL bResult;
if ( !SUCCEEDED( CoInitialize( NULL ) ) )
{
return FALSE;
}
hRes = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pISL );
if ( !SUCCEEDED( hRes ) )
{
CoUninitialize();
return FALSE;
}
hRes = pISL->QueryInterface( IID_IPersistFile, (void **)&pIPF );
if ( !SUCCEEDED( hRes ) )
{
//MessageBox( NULL, "failed to query isl", "error", MB_OK | MB_APPLMODAL );
CoUninitialize();
return FALSE;
}
pISL->SetPath( szFile );
wsprintf( szTemp, szFile );
do
{
if ( strlen( szTemp ) )
{
szTemp[strlen( szTemp ) - 1] = 0;
}
else
{
break;
}
}
while ( szTemp[strlen( szTemp ) - 1] != 92 );
pISL->SetWorkingDirectory( szTemp );
if ( szParameter )
{
pISL->SetArguments( szParameter );
}
if ( szIconPath != NULL )
{
pISL->SetIconLocation( szIconPath, dwIconIndex );
}
std::string strDummy;
strDummy = szPath;
if ( strDummy.length() > 0 )
{
if ( strDummy[strDummy.length() - 1] != 92 )
{
strDummy += '\\';
}
}
strDummy += szDescription;
strDummy += ".lnk";
// falls der Shortcut schon existiert, löschen, sonst klappt Save nicht!
DeleteFile( strDummy.c_str() );
MultiByteToWideChar( CP_ACP, 0, strDummy.c_str(), -1, wString, MAX_PATH );
hRes = pIPF->Save( wString, STGM_READ );
if ( SUCCEEDED( hRes ) )
{
bResult = TRUE;
}
else
{
bResult = FALSE;
}
pIPF->Release();
pISL->Release();
CoUninitialize();
return bResult;
}