elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Ayuda]Agregar iconos en la barra de tareas con VB.Net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda]Agregar iconos en la barra de tareas con VB.Net  (Leído 4,369 veces)
TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
[Ayuda]Agregar iconos en la barra de tareas con VB.Net
« en: 8 Octubre 2014, 23:30 pm »

Hola a todos, estoy haciendo un pequeño programa para automatizar la tarea de agregar los accesos directos a la barra de tareas, pero no consigo averiguar como administrar la barra con VB.Net, he estado buscando si era una clave del registro o algo pero no consigo encontrar nada. si alguien es tan amable de ayudarme le estaré agradecido


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.777



Ver Perfil
Re: [Ayuda]Agregar iconos en la barra de tareas con VB.Net
« Respuesta #1 en: 9 Octubre 2014, 05:46 am »

Si usas WPF, según he leido tienes acceso a las JumpLists (y no se si también a la PinList) desde las classes de las librerías WindowsBase y otra que no recuerdo ya.

Para WinForms:
Si tu intención es anclar el executable a la barra de tareas entonces puedes utilizar el siguiente código que he escrito, el cual he tomado la idea de esta otra página, debo decir que no me parece nada eficiente la solucion propuesta y las modificaciones que he echo en mi código, ya que invoca un verbo (comando) y este no es de lenguaje neutro, pero al parecer tras un poco más de investigación no parece haber nada más eficiente ya que estas acciones son elecciones orientadas al usuario, no a la aplicación, no al programador, dejo una cita que me hizo gracia xD:

Citar
The pin list is for users to put their favorite icons. It is not the place for a program to decide unilaterally, "I am so cool. I am your favorite icon. I just know it. So I'll put myself there because, well, I'm so cool."

En fin, ejemplo de uso:
Código
  1. ItemPinner(Process.GetCurrentProcess.MainModule.FileName, PinState.PinToTaskBar)

Source:
Código
  1.    ' ItemPinner
  2.    ' ( By Elektro )
  3.    '
  4.    ' Instructions:
  5.    ' 1. Add a reference to 'Microsoft Shell Controls And Automation'
  6.    '
  7.    ' Usage Examples:
  8.    ' ItemPinner("C:\Application.exe", PinState.PinToTaskBar)
  9.  
  10.    ''' <summary>
  11.    ''' Specifies the Pin state for an Item.
  12.    ''' </summary>
  13.    Public Enum PinState As Integer
  14.  
  15.        ''' <summary>
  16.        ''' Pins an Item onto TaskBar.
  17.        ''' </summary>
  18.        PinToTaskBar = 0I
  19.  
  20.        ''' <summary>
  21.        ''' Unpins an Item from TaskBar.
  22.        ''' </summary>
  23.        UnpinFromTaskBar = 1I
  24.  
  25.        ''' <summary>
  26.        ''' Pins an Item onto Start Menu.
  27.        ''' </summary>
  28.        PinToStartMenu = 2I
  29.  
  30.    End Enum
  31.  
  32.    ''' <summary>
  33.    ''' Pins or unpins an item onto TaskBar or StartMenu.
  34.    ''' A pinned item in the StartMenu can't be unpinned.
  35.    ''' </summary>
  36.    ''' <param name="filePath">The file path.</param>
  37.    ''' <param name="pinState">State of the pin.</param>
  38.    Public Shared Sub ItemPinner(ByVal filePath As String, ByVal pinState As PinState)
  39.  
  40.        ' Localized verb names to pin an item onto TaskBar.
  41.        Dim pinTaskbarVerbs As String() =
  42.            {
  43.                "pin to taskbar",
  44.                "anclar a la barra de tareas"
  45.            }
  46.  
  47.        ' Localized verb names to unpin an item from TaskBar.
  48.        Dim unpinTaskbarVerbs As String() =
  49.            {
  50.                "unpin from taskbar",
  51.                "desanclar de la barra de tareas"
  52.            }
  53.  
  54.        ' Localized verb names to pin an item onto StartMenu.
  55.        Dim pinStartMenuVerbs As String() =
  56.            {
  57.                "pin to start menu",
  58.                "anclar a inicio"
  59.            }
  60.  
  61.        ' ShellApplication Class Instance.
  62.        Dim shell As New Shell
  63.  
  64.        ' Gets the item to check for its pin/unpin verb and invoke it later.
  65.        Dim link As FolderItem = shell.[NameSpace](Path.GetDirectoryName(filePath)).
  66.                                       ParseName(Path.GetFileName(filePath))
  67.  
  68.        ' The item-verb to invoke.
  69.        Dim verb As FolderItemVerb = Nothing
  70.  
  71.        Select Case pinState
  72.  
  73.            Case pinState.PinToTaskBar
  74.                verb = (From ItemVerb As Object In link.Verbs
  75.                        Where pinTaskbarVerbs.Contains(DirectCast(ItemVerb, FolderItemVerb).
  76.                                                       Name.Replace("&"c, String.Empty).ToLower)
  77.                        Select DirectCast(ItemVerb, FolderItemVerb)
  78.                        ).FirstOrDefault
  79.  
  80.            Case pinState.UnpinFromTaskBar
  81.                verb = (From ItemVerb As Object In link.Verbs
  82.                        Where unpinTaskbarVerbs.Contains(DirectCast(ItemVerb, FolderItemVerb).
  83.                                                         Name.Replace("&"c, String.Empty).ToLower)
  84.                        Select DirectCast(ItemVerb, FolderItemVerb)
  85.                        ).FirstOrDefault
  86.  
  87.            Case pinState.PinToStartMenu
  88.                verb = (From ItemVerb As Object In link.Verbs
  89.                        Where pinStartMenuVerbs.Contains(DirectCast(ItemVerb, FolderItemVerb).
  90.                                                         Name.Replace("&"c, String.Empty).ToLower)
  91.                        Select DirectCast(ItemVerb, FolderItemVerb)
  92.                        ).FirstOrDefault
  93.  
  94.            Case Else ' Do Nothing.
  95.                Exit Select
  96.  
  97.        End Select
  98.  
  99.        If verb IsNot Nothing Then
  100.            verb.DoIt() ' Invoke the verb.
  101.        End If
  102.  
  103.    End Sub
  104.  

Saludos.


« Última modificación: 9 Octubre 2014, 05:52 am por Eleкtro » En línea


TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Agregar iconos en la barra de tareas con VB.Net
« Respuesta #2 en: 9 Octubre 2014, 11:59 am »

Muy Cool la frase xD

Aún no lo he probado por que no he tenido tiempo, cuando pueda lo implementaré a mi programa, pero estando modificado por ti será exactamente lo que busco xD
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.777



Ver Perfil
Re: [Ayuda]Agregar iconos en la barra de tareas con VB.Net
« Respuesta #3 en: 9 Octubre 2014, 13:32 pm »

pero estando modificado por ti será exactamente lo que busco xD

Yo supongo que entendí correctamente lo que quieres, añadir de forma "permanente" tu programa a la barra de tareas, es decir, un anclaje (pin), si quieres añadir jumplists o thumbnails eso ya lo puedes hacer con la librería Windows API Code Pack de Microsoft.

El código funcionará mientras el nombre del verbo/comando sea igual en el SO que lo uses, jeje, yo lo probé en Windows 8.1, no se si en Windows Vista/7 los nombres serán los mismos ("Anclar a la barra de tareas"), pero bueno, si tienes algún problema respecto a eso el código es facilmente editable para añadir más nombes:

Citar
Código
  1.       ' Localized verb names to pin an item onto TaskBar.
  2.       Dim pinTaskbarVerbs As String() =
  3.           {
  4.               "pin to taskbar",
  5.               "anclar a la barra de tareas"
  6.           }

Saludos!
« Última modificación: 9 Octubre 2014, 13:35 pm por Eleкtro » En línea


TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re:
« Respuesta #4 en: 10 Octubre 2014, 08:30 am »

Era justo lo que necesitaba, muchas gracias @Elektro , lo de los nombres lo supuse pero no está de mal saberlo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines