Récupérations des infos windows d'un fichier video

cs_simon22 Messages postés 161 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 20 août 2015 - 19 août 2015 à 16:51
 Uranos - 21 mars 2016 à 23:09
Bonjour,

Pour un petit soft personnel je cherche depuis quelques temps à récupéré les informations que >indows lui même semble trouver sans soucis sur différents formats vidéo.
Plutôt que de moi même me cassé la tète a lire l'entète je suis partie sur la piste
des api windows, qui en toute logique devraient pouvoir me retournée les mêmes informations qu'il sais m'afficher dans le dossier (en cas longueur de frame et largeur de frame)

J'ai fais pas mal de recherche sur le sujet, avec des résultats plutot pauvre en explication, j'ai trouver ce qui semblais être l'objet de ma recherche :

ShellFolderItem.ExtendedProperty(Key)
doc :
https://msdn.microsoft.com/en-us/library/windows/desktop/bb774055(v=vs.85).aspx

Qui me retourne toute sorte d'info, certainnes m'interesse mais je ne retrouve jamais ma longueur/largeur de frame.

Pensant que c'était un problème de clef j'ai eu recours à plusieurs ruses, en testant la clef "Longueur" ou "Longueur de trame" mais ausssi "Dimensions" qui semblerais t'il retourne également ces informations et la clef "Frame width", ces dergnières clefs ont marché pour des internautes anglophone, mais de mon coté je n'ai jamais de retour fiable comme sur windows (7) quand je sélectionne un élément.

Dite moi si je suis pas clair, je sais que ça part un peu dans tout les sens, mais le problème en lui mème (est censé) être simple^^"

Si quelqu'un à une idée je suis preneur, ça fais un petit moment que je n'ai pu complèter mon algo sur cette partie la...

2 réponses

cs_simon22 Messages postés 161 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 20 août 2015
20 août 2015 à 16:19
Bon, j'ai fini par trouver, en réalité aucune clef textuel convenais, j'ai trouver un moyen détourner d'arriver à mes fins

    
Public Function GetFileProperties(ByVal FileName As String) As Dictionary(Of Integer, KeyValuePair(Of String, String))
Dim Shell As New Shell
Dim Folder As Folder = Shell.[NameSpace](Path.GetDirectoryName(FileName))
Dim File As FolderItem = Folder.ParseName(Path.GetFileName(FileName))
Dim Properties As New Dictionary(Of Integer, KeyValuePair(Of String, String))()
Dim Index As Integer
Dim Keys As Integer = Folder.GetDetailsOf(File, 0).Count
Dim i As Integer = 0, tmp As String = ""
For Index = 0 To 300

Dim CurrentKey As String = Folder.GetDetailsOf(Nothing, Index)
Dim CurrentValue As String = Folder.GetDetailsOf(File, Index)
If CurrentValue <> "" Then
Try
tmp = File.ExtendedProperty(CurrentKey)
Catch ex As Exception
FrmOperation.TxtOp.AppendText(WindowsField(i) & " : " & " GetWindowsExstendedData Error" & vbCrLf)
End Try
If (tmp <> vbNullString) Then
Properties.Add(i, New KeyValuePair(Of String, String)(CurrentKey, tmp))
Else
Properties.Add(i, New KeyValuePair(Of String, String)(CurrentKey, CurrentValue))
End If
i = i + 1
End If
Next
Return Properties
End Function


300 est une valeur forfétaire, en réalité pour tester cette fonction j'ai été jusqu'a 100, par défaut, le créateur de la fonction avais mis count(Keys) qui retournais 30 et ne me donnais que trop peu d'info, j'ai fais un test a 1000 juste pour voir si il y en avais d'avantage, et j'ai trouver des infos jusqu'a 300 avec pas mal de cases blanches
ce toujours en utilisant la fonction File.ExtendedProperty(Key) mais avec un nombre en entré, et non une chaine de caractère.

Il ne me reste qu'a trouver comment faire un trie global sur le retour de cette fonction pour ne pas tester des cases inutilement, c'est trés long à faire et je boucle sur des miliers de fichiers.

En espérant que ça puisse aider quelqu'un, je continuais a mettre mes avancés sur le sujet.
0
https://msdn.microsoft.com/en-us/library/windows/desktop/bb774055(v=vs.85).aspx
0
Rejoignez-nous