Ciao !
Di solito in questi casi utilizzo una label con Forecolor = vbBlue.
Al mousemove modifico il forecolor per poi ripristinarlo quando il mouse si sposta nuovamente sul form o il contenitore che contiene la label. Poi ovviamente gestisco il clik.
Al click potresti richiamare questa semplice funzione per lanciare il file con il programma a cui è associato:
codice:
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long _
, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
' Possibili valori di ritorno di ShellExecute
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_ACCESSDENIED As Long = 5
Private Const SE_ERR_FNF As Long = 2
' Possibili valori di ritorno di ShellExecute
Enum ShellFileExecuteResultConstants
AccessDenied = SE_ERR_ACCESSDENIED
NoAssociation = SE_ERR_NOASSOC
FileNotFound = SE_ERR_FNF
NoErrors = 42
UnhandledError = 0
End Enum
'
Function ExecuteFile(ByVal FileName As String _
, Optional Command As String = "open", Optional Parameters As String _
, Optional WindowStyle As VbAppWinStyle = vbNormalFocus _
, Optional OwnerWnd As Long) As ShellFileExecuteResultConstants
' Esegue un comando su un file
Dim lRetVal As Long
' Controlla comando e parametri
Command = Trim$(Command)
If Command = "" Then Command = "open"
Parameters = Trim$(Parameters)
' esegue
lRetVal = ShellExecute(OwnerWnd, Command, FileName, Parameters, "", WindowStyle)
' return
Select Case lRetVal
Case AccessDenied, NoAssociation, FileNotFound, NoErrors
ExecuteFile = lRetVal
Case Else
' altro errore non gestito
ExecuteFile = UnhandledError
End Select
End Function
Ciao ciao
Simo