Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: xDie en 6 Noviembre 2006, 21:12 pm



Título: Acceso directo
Publicado por: xDie en 6 Noviembre 2006, 21:12 pm
Hola alguien sabe comopeudo crear un acceso directo, se qeu se peude con whs pero no se como gracias


Título: Re: Acceso directo
Publicado por: CeLaYa en 7 Noviembre 2006, 14:33 pm
estos son unos ejemplos que vienen el la pag de "El Guille" (http://www.elguille.info/vb/ejemplos/crear_links.htm)


' Crear accesos directos usando DDE ------
Option Explicit

Private Sub cmdCrear_Click()
    ' Crear el acceso directo                                       
   ' Se creará dentro de Programas del Menú de Inicio
    '
    CrearIconoEnProgMan Me, Text2.Text, Text1.Text
End Sub

Private Sub cmdSalir_Click()
    ' Salir del programa
    Unload Me
End Sub


'----------------------------------------------------------
' Procedure: CrearIconoEnProgMan
'
' Arguments: X           The form where Label1 exists
'
'            CmdLine$    A string that contains the command
'                        line for the item/icon.
'                        ie 'c:\myapp\setup.exe'
'
'            IconTitle$  A string that contains the item's
'                        caption
'----------------------------------------------------------
Private Sub CrearIconoEnProgMan(X As Form, CmdLine$, IconTitle$)
   
    Dim i As Integer, z As Integer
   
    Screen.MousePointer = 11
    ' Poner la primera letra en mayúsculas
    IconTitle$ = Left$(IconTitle$, 1) & LCase$(Mid$(IconTitle$, 2))
   
    '----------------------------------------------------------------------
    ' Windows requires DDE in order to create a program group and item.
    ' Here, a Visual Basic label control is used to generate the DDE messages
    '----------------------------------------------------------------------
    On Error Resume Next
   
    '---------------------------------
    ' Set LinkTopic to PROGRAM MANAGER
    '---------------------------------
    X.Label1.LinkTopic = "ProgMan|Progman"
    X.Label1.LinkMode = 2
    For i = 1 To 10         ' Loop to ensure that there is enough time to
      z = DoEvents()        ' process DDE Execute.  This is redundant but needed
    Next                    ' for debug windows.
    X.Label1.LinkTimeout = 100
   
    '------------------------------------------------
    ' Create Program Item, one of the icons to launch
    ' an application from Program Manager
    '------------------------------------------------
    X.Label1.LinkExecute "[AddItem(" & CmdLine$ & Chr$(44) & IconTitle$ & Chr$(44) & ",,)]"
   
    '-----------------
    ' Reset properties
    '-----------------
    X.Label1.LinkTimeout = 50
    X.Label1.LinkMode = 0
   
    Screen.MousePointer = 0
End Sub



'-----------------------------------------------------------------------' Crear accesos directos usando WHS                                 Option Explicit

Private m_wsShell As Variant

Private Sub cmdCrear_Click()
    Dim sLnkPath As String
    Dim sLink As String
    Dim sAppPath As String
    Dim vLnk As Variant
   
    sAppPath = Text2
    sLink = Text1
    If InStr(sLink, ".lnk") = 0 Then
        sLink = sLink & ".lnk"
    End If
    ' Crearlo en el escritorio:
    'sLnkPath = m_wsShell.SpecialFolders("Desktop")
    '
    ' Crearlo en el indicado en el listbox
    ' Aunque siempre lo crea en el mismo sitio:
    ' C:\WINDOWS\All Users\Desktop
    ' es decir en el escritorio.
    '
    ' Pero eso era usando TEXT3 a secas,
    ' añadiendo el .Text ya si que sale lo que debe salir...
    '
    sLnkPath = m_wsShell.SpecialFolders(Text3.Text)
    sLnkPath = sLnkPath & "\" & sLink
   
    ' Crear el acceso directo
    Set vLnk = m_wsShell.CreateShortcut(sLnkPath)
    vLnk.Targetpath = sAppPath
   
   
    ' definir directorio de trabajo
    vLnk.WorkingDirectory = "D:\gsCodigo" ' Escribe aquí el directorio
    '--------------------------------------------------------------------------
    '
    vLnk.Save
End Sub

Private Sub cmdSalir_Click()
    ' Salir del programa
    Unload Me
End Sub

Private Sub Form_Load()
    Set m_wsShell = CreateObject("WScript.Shell")
   
    List1.Clear
   
    ' Llenar el listbox con los "folders" de SpecialFolders
    '
    'Dim vName As Variant

    ' (Este método es preferible si quieres mostrar todos las carpetas especiales)

    'For Each vName In m_wsShell.SpecialFolders
    '    List1.AddItem vName
    'Next
    '
    '
    ' Estos no son válidos para el W95
    List1.AddItem "AllUsersDesktop= " & m_wsShell.SpecialFolders("AllUsersDesktop")
    'List1.AddItem "AllUsersStartMenu= " & m_wsShell.SpecialFolders("AllUsersStartMenu")
    'List1.AddItem "AllUsersPrograms= " & m_wsShell.SpecialFolders("AllUsersPrograms")
    'List1.AddItem "AllUsersStartup= " & m_wsShell.SpecialFolders("AllUsersStartup")
    '
    List1.AddItem "Desktop= " & m_wsShell.SpecialFolders("Desktop")
    List1.AddItem "Programs= " & m_wsShell.SpecialFolders("Programs")
    List1.AddItem "StartMenu= " & m_wsShell.SpecialFolders("StartMenu")
    List1.AddItem "Startup= " & m_wsShell.SpecialFolders("Startup")
    List1.AddItem "MyDocuments= " & m_wsShell.SpecialFolders("MyDocuments")
    List1.ListIndex = 0
    '
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set m_wsShell = Nothing
End Sub

Private Sub List1_Click()
    ' Mostrar el destino del acceso directo
    Dim sTmp As String
    Dim i As Long
   
    sTmp = List1.List(List1.ListIndex)
    i = InStr(sTmp, "= ")
    If i Then
        Text3 = Left$(sTmp, i - 1)
    Else
        Text3 = "Desktop"
    End If
End Sub


Título: Re: Acceso directo
Publicado por: xDie en 7 Noviembre 2006, 17:53 pm
Gracias celaya, ya lo habi encontrado y no se porque no me funca rebisare liena por linea


Título: Re: Acceso directo
Publicado por: CeLaYa en 7 Noviembre 2006, 19:38 pm
me he dado cuenta que muchas de las api's necesitan que manejes los paths cortos (ejem: c:\misdoc~1\algo~2\archiv~.ico) tal vez ese sea el problema