DynaWrap (PHP, Perl, ...)
Écrit par Gilles LAURENT   
23-09-2008

Quelques exemples d'utilisation du Wrapper DynaWrap avec différents langages de script

Cette page est destinée à être régulièrement enrichie dans le but de répondre aux différentes demandes d'utilisation du composant DynaWrap dans différents langages de script supportant la technologie COM ainsi que les variables de type VARIANT.

VBScript : API Win32 GetProfileSection
- Utilisation des méthodes built'in DynaWrap GetBSTRAddr et GetMemInBSTRAddr

  1. Set oDyn=CreateObject("DynamicWrapper")
  2. oDyn.Register "Kernel32.dll", "GetProfileSection", "r=l", "i=sll"
  3. sReturnedString=String(1024,Chr(0))
  4. dwBSTRAddr=oDyn.GetBSTRAddr(sReturnedString)
  5. WScript.Echo oDyn.GetProfileSection("Mail", dwBSTRAddr, 1024)
  6. nOffset=0
  7. Do
  8.   sKeyVal=oDyn.GetMemInBSTRAddr(dwBSTRAddr, nOffset, 0)
  9.   If sKeyVal <> "" Then
  10.     WScript.Echo sKeyVal
  11.     nOffset=nOffset+Len(sKeyVal)+1
  12.   End If
  13. Loop Until sKeyVal = ""

PHP : API Win32 GetProfileSection
- Utilisation de la classe VARIANT
- Utilisation des méthodes built'in DynaWrap GetBSTRAddr et GetMemInBSTRAddr

  1. <?php
  2. $oDyn=new COM("DynamicWrapper");
  3. $oDyn->Register("Kernel32.dll", "GetProfileSection", "r=l", "i=sll");
  4. $sReturnedString=new VARIANT(sprintf("%1024s", " "));
  5. $dwBSTRAddr=$oDyn->GetBSTRAddr($sReturnedString);
  6. printf("%ld\n",$oDyn->GetProfileSection("Mail", $dwBSTRAddr, 1024));
  7. $nOffset=0;
  8. do {
  9.   $sKeyVal=$oDyn->GetMemInBSTRAddr($dwBSTRAddr, $nOffset, 0);
  10.   if ($sKeyVal != "") {
  11.     print "$sKeyVal\n";
  12.     $nOffset+=strlen($sKeyVal)+1;
  13.   }
  14. }
  15. while ($sKeyVal != "");
  16. ?>

Perl : API Win32 GetProfileSection
- Utilisation du module Win32::OLE::Variant
- Utilisation des méthodes built'in DynaWrap GetBSTRAddr et GetMemInBSTRAddr

  1. use Win32::OLE::Variant;
  2. $oDyn=Win32::OLE->new('DynamicWrapper');
  3. $oDyn->Register('Kernel32.dll', 'GetProfileSection', 'r=l', 'i=sll');
  4. $sReturnedString=Variant(VT_VARIANT|VT_BYREF, ' ' x 1024);
  5. $dwBSTRAddr=$oDyn->GetBSTRAddr($sReturnedString);
  6. printf("%ld\n",$oDyn->GetProfileSection('Mail', $dwBSTRAddr, 1024));
  7. $nOffset=0;
  8. do {
  9.   $sKeyVal=$oDyn->GetMemInBSTRAddr($dwBSTRAddr, $nOffset, 0);
  10.   if ($sKeyVal ne '') {
  11.     print "$sKeyVal\n";
  12.     $nOffset+=length($sKeyVal)+1;
  13.   }
  14. }
  15. while ($sKeyVal ne '');

Note : Cette page sera régulièrement complétée en fonction des demandes.