Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Sobrevolando con el ratón sobre los iconos de archivos en el Escritorio......
#1

Hola mis hermanos del Mediterraneo,
os dejo un simple código que, usando las funciones externas de la libreria libgio-2.0, cuando se pasa el ratón sobre los íconos de archivo en el Escritorio, devuelve información sobre estos archivos.
Hace falta activar el Componente gb.desktop .
(No se si en la ruta de la Constante "PERCORSO" la palabra "Escritorio" está bien)

GAMBAS
  1. Public Struct IconaFileDesktop
  2.   nome As String
  3.   x As Short
  4.   y As Short
  5.   rt As Rect
  6. Private icone As New IconaFileDesktop[]
  7. Private PERCORSO As String = User.home &/ "Escritorio"
  8.  
  9.  
  10. Public Sub Form_Open()
  11.  
  12.   Dim nomefile, s As String
  13.   Dim ifd As IconaFileDesktop
  14.  
  15. ' Carica tutti i file corrispondenti alle icone presenti sulla Scrivania:
  16.   For Each nomefile In Dir(PERCORSO, "*", gb.File)
  17. ' Usa con "Extern" alcune funzioni esterne della libreria "libgio-2.0":
  18.     s = EstraeInfo(PERCORSO &/ nomefile)
  19. ' Carica nella "Struttura" i dati utili del file individuato dalla funzione "Dir()":
  20.     With ifd = New IconaFileDesktop
  21.       .nome = nomefile
  22.       .x = Val(Scan(s, "*,*")[0])
  23.       .y = Val(Scan(s, "*,*")[1])
  24. ' Stabilisce un'area quadrata standard di 48 pixel per ciascuna icona di file individuato:
  25.       .rt = New Rect(.x, .y, 48, 48)
  26.     End With
  27.     icone.Push(ifd)
  28.   Next
  29.  
  30.   T = New Timer As "Tmr"
  31.   T.Delay = 50
  32.   T.Start
  33.  
  34.  
  35. Public Sub Tmr_Timer()
  36.  
  37.   Dim c As Short
  38.  
  39.   TextArea1.Clear
  40.  
  41.   For c = 0 To icone.Max
  42. ' Se le coordinate x,y in pixel correnti in cui si trova il puntatore del mouse rientrano in un'area quadrata caricata, va a vedere a quale icona e file appartiene:
  43.     If icone[c].rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then
  44. ' Mostra alcune caratteristiche del file al quale corrisponde l'icona sorvolata dal puntatore del mouse:
  45.       TextArea1.Text = "== Características del archivo ==\n" &
  46.                        "\nRuta:          " & Stat(PERCORSO &/ icone[c].nome).Path &
  47.                        "\nTamaño:          " & Stat(PERCORSO &/ icone[c].nome).Size & " Byte" &
  48.                        "\nÚltimo acceso:          " & Stat(PERCORSO &/ icone[c].nome).LastAccess &
  49.                        "\nÚltima modificación: " & Stat(PERCORSO &/ icone[c].nome).LastModified &
  50.                        "\nPermisos:          " & Stat(PERCORSO &/ icone[c].nome).Auth &
  51.                        "\nUsuario:          " & Stat(PERCORSO &/ icone[c].nome).User &
  52.                        "\nGrupo:          " & Stat(PERCORSO &/ icone[c].nome).Group &
  53.                        "\nMimetype icono:  " & DesktopMime.FromFile(Stat(PERCORSO &/ icone[c].nome).Path).Type
  54.     Endif
  55.   Next
  56.  
  57.  
  58.  
  59. Library "libgio-2.0"
  60.  
  61. ' GFile * g_file_new_for_commandline_arg (const char *arg)
  62. ' Creates a GFile with the given argument from the command line.
  63. Private Extern g_file_new_for_commandline_arg(arg As String) As Pointer
  64.  
  65. ' GFileInfo * g_file_query_info (GFile *file, const char *attributes, GFileQueryInfoFlags flags, GCancellable *cancellable, GError **error )
  66. ' Gets the requested information about specified file.
  67. Private Extern g_file_query_info(gfile As Pointer, attributes As String, flags As Integer, cancellable As Pointer, gerror As Pointer) As Pointer
  68.  
  69. ' char ** g_file_info_list_attributes (GFileInfo *info, const char *name_space)
  70. ' Lists the file info structure's attributes.
  71. Private Extern g_file_info_list_attributes(info As Pointer, name_space As String) As Pointer
  72.  
  73. ' char * g_file_info_get_attribute_as_string (GFileInfo *info, const char *attribute)
  74. ' Gets the value of a attribute, formatted as a string.
  75. Private Extern g_file_info_get_attribute_as_string(info As Pointer, attribute As String) As Pointer
  76.  
  77. ' void g_object_unref (gpointer object)
  78. ' Decreases the reference count of object.
  79. Private Extern g_object_unref(gobject As Pointer)
  80.  
  81.  
  82. Private Function EstraeInfo(percfile As String) As String
  83.  
  84.   Dim fl, info As Pointer
  85.  
  86.   fl = g_file_new_for_commandline_arg(percfile)
  87.   If fl == 0 Then Error.Raise("Errore !")
  88.     
  89.   info = g_file_query_info(fl, "*", 0, Null, Null)
  90.   If info == 0 Then Error.Raise("Errore !")
  91.     
  92.   percfile = EstraeAttributi(info)
  93.     
  94.   g_object_unref(info)
  95.   g_object_unref(fl)
  96.  
  97.   Return percfile
  98.  
  99.  
  100.  
  101. Private Function EstraeAttributi(inf As Pointer) As String
  102.  
  103.   Dim attr, p As Pointer
  104.   Dim i As Integer = -1
  105.  
  106.   attr = g_file_info_list_attributes(inf, Null)
  107.  
  108.     Inc i
  109.     s = String@(Pointer@(attr + (i * SizeOf(gb.Pointer))))
  110.     p = g_file_info_get_attribute_as_string(inf, s)
  111.   Until s == Trim("metadata::nemo-icon-position")
  112.  
  113.   Return String@(p)
  114.  



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#2

Pues sí, si que esta bien la palabra "Escritorio"

Gracias vuott Smile
    ¡Gracias!
#3

(11-05-2021, 16:30)vuott escribió:  (No se si en la ruta de la Constante "PERCORSO" la palabra "Escritorio" está bien)

Hola Vuott: en cuanto pueda probare este código que pasaste.
Para la ruta del Escritorio o "percorso della scrivania" puedes usar, como no, código Gambas:
GAMBAS
  1. Private PERCORSO As String = Desktop.GetDirectory("DESKTOP")


Saludos.

1 Saludo.
    ¡Gracias!
#4

Graaazie, tincho.
Olvidé este recurso.
Bravo !  Wink

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)