Newsgroup: it.comp.lang.visual-basic
Titolo: [?]OSfCreateShellLink

Vi e mai successo che utilizzando questa funzione tutto funzioni
correttamente SOLO "debaggando"?
Invece a rantime non riesce a creare il collegamento.
Perchč?
Ciao, Francesco.

Perchè?
Prova a postare il codice e che usi e l' eventuale messaggio di errore
(probabilmente reperibile con Err.LastDllError o GetLastError().
-- 
ciao, hal


errore di battitura
minghiaaaaaaaa come sei pignolo :)))))
Public Declare Function OSfCreateShellLink Lib "vb6stkit.dll" Alias
"fCreateShellLink" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As
String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String,
ByVal fPrivate As Long, ByVal sParent As String) As Long
    strFolderName = GetSpecialfolder(CSIDL_STARTUP)
    strParentFolder = GetSpecialfolder(CSIDL_PROGRAMS)
    strLinkPath = App.Path & "\" & App.EXEName & ".exe"
    DoEvents
    CreateShellLink = OSfCreateShellLink(strFolderName, strLinkName,
strLinkPath, "", False, strParentFolder)
    If Not CreateShellLink Then
            Err.Raise 9999, "OSfCreateShellLink", "Link don't create"
    End If
la getspecial............
Public Function GetSpecialfolder(CSIDL As Long) As String
    Dim r As Boolean
    Dim IDL As ITEMIDLIST
    Dim Path$
    r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If Not r Then
        Path$ = Space$(512)
        r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function


>...... e l' eventuale messaggio di errore
Err.LastDllError  ....................... 123

Creazione dei collegamenti.
Beh ragazzi per la cronaca ho risolto.
Utilizzando la VB6STKIT.DLL non ne sono venuto a capo. Crea il Collegamento
solo in debug.
Boh, qualcuno se puň darmi una risposta in merito........
Poi ho scopiazzato la funzione CreateShellLink che viene fornito nel cd di
esempio
di VB (SHELLLNK) , l'ho modificata a mio piacimento e il tutto funziona
anche se con qualche artifizio
poco carino, ma il risultato č garantito.
La funzione necessita della typeLibrary ShellLnk.
Se qualcuno fosse interessato  posto il codice.
Ciao, e grazie lo stesso.
Francesco.
"FrDN" <fdellinoci@NOSPAM_libero.it> ha scritto nel messaggio
news:a4d9uo$6t$1...@fe2.cs.interbusiness.it...


> Se qualcuno fosse interessato  posto il codice.
Mhmhmh....
Non male...
            Grazie
                        Allanon

 Err.LastDllError  ....................... 123
Err 123:
La sintassi del nome del file, della directory o del volume è
incorretta.
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.

A FrDN rispondo:
Innanzi tutto sono contento che nel frattempo sei riuscito a risolvere
il problema :-)
Per quanto concerne l' utilizzo di OsfCreateShellLink, in effetti non e'
dei piu' cristallini :-(
Riporto qui come usarla nei casi piu' frequenti:
-- Desktop
OSfCreateShellLink("..\..\Desktop", titolo_del_link, percorso_completo_del_prog, _
                                                     "", True, "$(Programs)"))
-- Startup
OSfCreateShellLink("\Startup", titolo_del_link, percorso_completo_del_prog, _
                                                      "", True, "$(Programs)"))
-- Programmi
OSfCreateShellLink("$(Programs)", titolo_del_link, percorso_completo_del_prog, _
                                                      "", True, "$(Programs)"))
-- 
hth, hal

 incorretta.
In realtà è corretta e come.
Sta di fatto che alcune volte lo shortcut viene creato correttamente altre
voltre no.
Nes senso che ritentando più di una volta è possibile che l'esito della
osfcreateshelllink sia true, come a voler dire che il collegamente e stato
creato.
Non saprei......


Grazie innanzitutto per le risposte.
Ho provato molte volte anche nel modo da te descritto, ma con scarsi
risultati.
Cmq, ho rinunciato ad utilizzarla.
Ciao,
Francesco.

Cmq, ho rinunciato ad utilizzarla.
Considerando la pressoche' nulla documentazione ufficiale, sono totalmente
d' accordo con te. Imho e' preferibile usare la IShellLink.tlb come poi hai
deciso di fare tu.
Purtroppo la maggior parte delle funzioni della Shell e' nemica di vb :-(
-- 
ciao, hal