J'ai en ma possession un script Microsoft Powershell qui examine tous les fichiers dans une fin repliée en .wtv (programmes TV Windows Media Center enregistrés), extrait des métadonnées (à l'aide d'une DLL appelée « Toub.MediaCenter.Dvrms.dll ») et écrit ensuite à stdout:Utilisation de Win32 :: API pour accéder aux méthodes d'une DLL en Perl
[void][System.Reflection.Assembly]::LoadFile("C:\Toub.MediaCenter.Dvrms.dll")
# Get all files ending in .wtv
foreach ($file in gci "*.wtv")
{
$wtv = New-Object Toub.Mediacenter.Dvrms.Metadata.DvrmsMetadataEditor($file)
$attrlist = $wtv.GetAttributes()
# Extract the Title and Description from the recorded programme
$t = $attrlist["Title"].value
$d = $attrlist["WM/SubTitleDescription"].value
# Print them to STDOUT
"$t"
"$d"
}
en ce moment, je lance ce à partir d'un script Perl et ensuite analyser les résultats. Cela fonctionne, mais est désordonné et je voudrais laisser tomber la partie powershell et le faire entièrement dans Perl.
Cependant, je ne sais absolument pas comment créer un lien vers une DLL afin que je puisse appeler GetAttributes méthode sur un fichier, puis extraire les valeurs du Titre et WM/SubTitleDescription.
J'ai été pointé à l'aide Win32 :: API, mais je n'ai aucune idée de ce que le nom de la bibliothèque à partir de laquelle je veux importer la fonction, je ne connais pas le prototype C de la fonction. En tant que tel, mon code s'interrompt parce que je ne suis pas vraiment sûr de ce que je devrais faire avec Win32 :: API. Mon talon (très basique) ressemble à ceci:
use Win32::API;
foreach my $file (glob("*.wtv"))
{
my $wtv = new Win32::API(...stuck here...);
# Complete guesswork from here on...
print $wtv->GetAttributes("Title") . "\n";
print $wtv->GetAttributes("WM/SubTitleDescription") . "\n";
}
Je devine que c'est probablement évident de la Powershell ci-dessus sur ce que je devrais mettre dans la nouvelle ligne Win32 :: API et si ou non $ wtv-> GetAttributes est correct - mais pour être honnête, je n'ai pas la moindre idée.
Est-ce que quelqu'un peut me diriger dans la bonne direction?
http://search.cpan.org/perldoc/Win32::API –
Merci, mais j'ai déjà lu cette documentation et il me dit que j'ai besoin de connaître le nom de la bibliothèque à partir de laquelle je veux importer la fonction et le prototype C de la fonction - dont je ne connais ni l'un ni l'autre et par conséquent la question. – Richard