Update of /cvsroot/perl-win32-gui/Win32-GUI-AxWindow/Samples
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15455/Samples

Added Files:
        DHtmlEdit.pl DHtmlEdit.pm DHtmlEditor.pl Google.pl Info.bat 
        InfoControl.pl MShtml.pl Movie.avi MovieControl.pl 
        MsFlexGrid.pl SCGrid.pl TestOLE.pl WebBrowser.pl 
Log Message:
Added to repository

--- NEW FILE: MsFlexGrid.pl ---
# perl -w
#
#  Hosting MsFlexGrid : Test Indexed properties
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow test",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => "MSFlexGridLib.MSFlexGrid",
 ) or die "new Control";

# Test Enum property set by string value
# $Control->SetProperty("ScrollBars", "flexScrollBarNone");
# $Control->SetProperty("GridLines", "flexGridInset");

$Control->SetProperty("Rows", 5);
$Control->SetProperty("Cols", 5);

$Control->SetProperty("TextMatrix", 1, 2, "Hello!!!");

$r = $Control->GetProperty("Rows");
$c = $Control->GetProperty("Cols");
$t = $Control->GetProperty("TextMatrix", 1, 2);
print "Rows = $r, Cols = $c, TextMatrix(1,2) = $t\n";

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Main window event handler

sub Window_Terminate {

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: Movie.avi ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: WebBrowser.pl ---
# perl -w
#
#  Hosting a WebBrowser
#    Create a WebBrowser and register an event.
#    Enumerate Property, Methods and Events and create a Html file.
#    Load Html file in WebBrowser.
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow test",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => "Shell.Explorer.2",
#               -control => "{8856F961-340A-11D0-A96B-00C04FD705A2}",
 ) or die "new Control";

# Register Event

$Control->RegisterEvent("StatusTextChange", sub { $self = shift; $id = shift; 
print "Event : ", @_, "\n"; } );

# Enum Property info

open (F, ">Webbrowser.html") or die "open";
print F '<HTML><BODY><HR><H1>Properties</H1><HR>';

foreach $id ($Control->EnumPropertyID()) {

  %property = $Control->GetPropertyInfo ($id);

  foreach $key (keys %property) {
    print F "<B>$key</B> = ", $property {$key}, "<BR>";
  }

  print F "<P>";
}

# Enum Method info

print F "<P><HR><H1>Methods</H1><HR>";

foreach $id ($Control->EnumMethodID()) {

  %method = $Control->GetMethodInfo ($id);

  foreach $key (keys %method) {
    print F "<B>$key</B> = ", $method {$key}, "<BR>";
  }

  print F "<P>";
}

# Enum Event info

print F "<P><HR><H1>Events</H1><HR>";

foreach $id ($Control->EnumEventID()) {

  %event = $Control->GetEventInfo ($id);

  foreach $key (keys %event) {
    print F "<B>$key</B> = ", $event {$key}, "<BR>";
  }

  print F "<P>";
}

print F "</BODY></HTML>";
close (F);

# Method call
$dir  = cwd;
$path = "file://$dir/Webbrowser.html";

# print $path, "\n";
$Control->CallMethod("Navigate", $path);

# Event loop
$Window->Show();
Win32::GUI::Dialog();


# Main window event handler

sub Window_Terminate {

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: DHtmlEdit.pm ---
#
#  Win32::GUI::DHtmlEdit : wrapper package for DHtmlEdit ActiveX
#    by Laurent Rocher.
#
#  TODO : Check ExecuteCommand (Some commande have parametre)
#  TODO : Check QueryStatus (Usefull for all)
#
package Win32::GUI::DHtmlEdit;

use strict;
use vars qw(@ISA $VERSION);
use Carp 'croak','carp';

use Win32::GUI::AxWindow;

@ISA = qw(Win32::GUI::AxWindow Exporter);

$VERSION = "1.0";

[...1362 lines suppressed...]

  my ($self, $callback) = @_;

  $self->RegisterEvent ("onblur", $callback);
}

#
# onreadystatechange
#

sub OnReadyStateChange {

  croak("Usage: OnReadyStateChange (CallBack)") if (@_ != 2);

  my ($self, $callback) = @_;

  $self->RegisterEvent ("onreadystatechange", $callback);
}

1;

--- NEW FILE: DHtmlEdit.pl ---
# perl -w
#
#  Hosting DHtmlEdit basic 
#

use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -name     => "Window",
    -title    => "Win32::GUI::AxWindow test",
    -pos      => [100, 100],
    -size     => [400, 400],
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => "{2D360200-FFF5-11D1-8D03-00A0C959BC0A}",
 ) or die "new Control";

# Method call
$Control->CallMethod("NewDocument");

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Main window event handler

sub Window_Terminate {

  # Print Html Text
  print $Control->GetProperty("DocumentHTML");

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: MovieControl.pl ---
# perl -v
#
#  Hosting Movie Control (A movie player control see 
http://www.viscomsoft.com/movieplayer.htm)
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Movie Control Test",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
#               -control => "{F4A32EAF-F30D-466D-BEC8-F4ED86CAF84E}",
               -control => "MOVIEPLAYER.MoviePlayerCtrl.1",
 ) or die "new Control";

# Load Avi file
$Control->SetProperty("FileName", "movie.avi");

# Event loop
$Window->Show();
# Start Avi player
$Control->CallMethod("Play");
Win32::GUI::Dialog();


# Main window event handler

sub Window_Terminate {

  # Release all before destroy window
  # $Control->Release();

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: SCGrid.pl ---
# perl -w
#
#  Hosting SCGrid (A freeware Grid ActiveX see : http://www.scgrid.com/)
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow test",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => "prjSCGrid.SCGrid",
 ) or die "new Control";

# Redraw Off
$Control->SetProperty("Redraw", 0);

# Create 1 Fixed col and Row
$Control->SetProperty("FixedRows", 1);
$Control->SetProperty("FixedCols", 1);
# Create 5 col and Row
$Control->SetProperty("Rows", 5);
$Control->SetProperty("Cols", 5);
# Adjust grid on column
$Control->SetProperty("AdjustLast", "scColumn");
# Add Resize column mode
$Control->SetProperty("ResizeMode", "scColumn");

# Fill Cell
for $C (0..4)
{
  for $R (0..4)
  {
    $Control->SetProperty("Text", $R, $C, "Cell ($R, $C)");
  }
}

# Fill Fixed Rows
$Control->SetProperty("Text", -1, -1, "    ");
for $R (0..4)
{
  $Control->SetProperty("Text", $R, -1, "$R");
}
$Control->CallMethod("AdjustWidth", -1, -32767);  # Force optional value

# Fill Fixed Cols and adjust size
for $C (0..4)
{
  $Control->SetProperty("Text", -1, $C, "FixedCol($C)");
  $Control->CallMethod("AdjustWidth", $C, -32767); # Force optional value
}

# Enable draw mode
$Control->SetProperty("Redraw", 1);

# Some property get
$r = $Control->GetProperty("Rows");
$c = $Control->GetProperty("Cols");
$t = $Control->GetProperty("Text", 1, 2);
print "Rows = $r, Cols = $c, Text(1,2) = $t\n";

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Main window event handler

sub Window_Terminate {

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: TestOLE.pl ---
# perl -W
#
#  Host with AxWindow and manipulate with Win32::OLE
#  - Use GetOLE
#  - Call method
#  - Write in a HTML document
#
use Cwd;
use Win32::GUI;
use Win32::OLE;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow and Win32::OLE",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# A button
$Button = new Win32::GUI::Button (
    -parent  => $Window,
    -name    => "Button",
    -pos     => [0, 25],
    -size    => [400, 50],
    -text    => "Click me !!!",
    );

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 100],
               -size    => [400, 300],
               -control => "Shell.Explorer.2",
 ) or die "new Control";

# Get Ole object
$OLEControl = $Control->GetOLE();
# $OLEControl->Navigate("about:blank");  # Clear control
$OLEControl->Navigate("http://www.google.com/";);

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Button Event
sub Button_Click {
  $OLEControl->{Document}->{body}->insertAdjacentHTML("BeforeEnd","Click !!!");
  print "HTML = ", $OLEControl->{Document}->{body}->innerHTML, "\n";
}

# Main window event handler

sub Window_Terminate {

  # Release all before destroy window
  undef $OLEControl;
  $Control->Release();

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Button->Move(0,25);
    $Button->Resize ($width, 50);
    $Control->Move   (0, 100);
    $Control->Resize ($width, $height-100);
  }
}

--- NEW FILE: DHtmlEditor.pl ---
# perl -w
#
#  Hosting DHtmlEdit and use wrapper package
#
#
use Cwd;
use Win32::GUI;
use DHtmlEdit;

my $HtmlFile  = "";
my $Directory = cwd;

# main menu
my $Menu =  Win32::GUI::MakeMenu(
    "&File"                   => "File",
    "   > &New..."            => "FileNew",
    "   > &Open..."           => "FileOpen",
    "   > -"                  => 0,
    "   > &Save"              => "FileSave",
    "   > Save &As..."        => "FileSaveAs",
    "   > -"                  => 0,
    "   > &Print"             => "FilePrint",
    "   > -"                  => 0,
    "   > &Directory..."      => "FileDirectory",
    "   > -"                  => 0,
    "   > E&xit"              => "FileExit",
    "&Edit"                   => "Edit",
    "   > &Undo"              => "EditUndo",
    "   > &Redo"              => "EditRedo",
    "   > -"                  => 0,
    "   > Cu&t"               => "EditCut",
    "   > &Copy"              => "EditCopy",
    "   > &Paste"             => "EditPaste",
    "   > -"                  => 0,
    "   > &Select All"        => "EditSelectAll",
    "   > &Delete"            => "EditDelete",
    "   > -"                  => 0,
    "   > &Find "             => "EditFind",
    "&Format"                 => "Format",
    "   > &Bold"              => "FormatBold",
    "   > &Italic"            => "FormatItalic",
    "   > &Underline"         => "FormatUnderline",
    "   > &Font..."           => "FormatFont",
    "   > -"                  => 0,
    "   > Justify &Left"      => "FormatJustifyLeft",
    "   > Justify &Center"    => "FormatJustifyCenter",
    "   > Justify &Right"     => "FormatJustifyRight",
    "   > -"                  => 0,
    "   > &Indent"            => "FormatIndent",
    "   > &Outdent"           => "FormatOutdent",
    "&Insert"                 => "Insert",
    "   > &HyperLink..."      => "InsertHyperLink",
    "   > &Image..."          => "InsertImage",
    "   > -"                  => 0,
    "   > &OrderList"         => "InsertOrderList",
    "   > &UnOrderList"       => "InsertUnOrderList",
    "   > -"                  => 0,
    "   > &Unlink"            => "InsertUnlink",
    "&Help"                   => "Help",
    "   > &About"             => "HelpAbout",
    );

# main Window
$Window = new Win32::GUI::Window (
    -name     => "Window",
    -title    => "Win32::GUI::AxWindow test",
    -pos      => [100, 100],
    -size     => [400, 400],
    -menu     => $Menu,
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::DHtmlEdit  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
 ) or die "new Control";

# Method call
$Control->DocumentHTML('<HTML><BODY><B>Hello World !!!</B></BODY></HTML>');

# Event handler

$Control->OnDisplayChanged ( "Event_DisplayChanged" );

# Event loop
$Window->Show();
Win32::GUI::Dialog();

sub Event_DisplayChanged {

  my $self = shift;

  # Check Edit menu

  if ($Control->QueryUndo() == 3) { $Menu->{EditUndo}->Enabled(1); }
                             else { $Menu->{EditUndo}->Enabled(0); }

  if ($Control->QueryRedo() == 3) { $Menu->{EditRedo}->Enabled(1); }
                             else { $Menu->{EditRedo}->Enabled(0); }

  if ($Control->QueryCut() == 3)  { $Menu->{EditCut}->Enabled(1);  }
                             else { $Menu->{EditCut}->Enabled(0);  }

  if ($Control->QueryCopy() == 3) { $Menu->{EditCopy}->Enabled(1); }
                             else { $Menu->{EditCopy}->Enabled(0); }

  if ($Control->QueryPaste() == 3) { $Menu->{EditPaste}->Enabled(1); }
                              else { $Menu->{EditPaste}->Enabled(0); }

  if ($Control->QuerySelectAll() == 3) { $Menu->{EditSelectAll}->Enabled(1); }
                                  else { $Menu->{EditSelectAll}->Enabled(0); }

  if ($Control->QueryDelete() == 3) { $Menu->{EditDelete}->Enabled(1); }
                               else { $Menu->{EditDelete}->Enabled(0); }

}

# Finish method
sub Finish {

  # Change after last save.
  if ($Control->IsDirty()) {
    FileSave_Click();
  }

  return -1;
}

# Main window event handler

sub Window_Terminate {

  return Finish ();
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

#######################################################################
#
#  File Menu
#
#######################################################################

# New
sub FileNew_Click {

  $Control->NewDocument ();
  $HtmlFile = "";
}

# Open
sub FileOpen_Click {

  my $ret = Win32::GUI::GetOpenFileName(
                 -title     => "Open html File",
                 -filter    => [
                     "Html Document (*.htm, *.html)" => "*.htm;*.html",
                     "All files", "*.*",
                               ],
                 -directory => $Directory,
                 );
  if ($ret) {

    $HtmlFile = $ret;
    $Control->LoadDocument ($HtmlFile);

  }
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                            "GetOpenFileName Error");
  }
}

# Save
sub FileSave_Click {

  unless ($HtmlFile eq "") {
    my $ret = Win32::GUI::MessageBox (0, "Overwrite existing file ?",
                           "Save",MB_ICONQUESTION | MB_YESNOCANCEL);
    if ($ret == 6) {
      $ret = $Control->SaveDocument ($HtmlFile);
      unless ($ret) {
        Win32::GUI::MessageBox (0, "ERROR : SaveDocument ", "Save Error");
      }
    }
    elsif ($ret == 7) {
      FileSaveAs_Click();
    }
  }
  else {
    FileSaveAs_Click();
  }
}

# SaveAs
sub FileSaveAs_Click {

  my $ret = Win32::GUI::GetSaveFileName(
                 -title     => "Save html File As",
                 -filter    => ["Html Document (*.htm, *.html)" => 
"*.htm;*.html"],
                 -directory => $Directory,
                 );

  if ($ret) {
    $HtmlFile = $ret;
    $ret = $Control->SaveDocument ($HtmlFile);
    unless ($ret) {
      Win32::GUI::MessageBox (0, "ERROR : SaveDocument ", "Save Error");
    }
  }
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                            "GetSaveFileName Error");
  }

}

# Print
sub FilePrint_Click {

  $ret = $Control->PrintDocument (1);
}

# Directory
sub FileDirectory_Click {

  my $ret = Win32::GUI::BrowseForFolder (
                        -title      => "Select default directory",
                        -directory  => $Directory,
                        -folderonly => 1,
                        );
  $Directory = $ret if ($ret);
}

# Exit
sub FileExit_Click {

  return Finish();
}

#######################################################################
#
#  Edit Menu
#
#######################################################################

sub EditUndo_Click {
  $Control->Undo();
}

sub EditRedo_Click {
  $Control->Redo();
}

sub EditCut_Click {
  $Control->Cut();
}

sub EditCopy_Click {
  $Control->Copy();
}

sub EditPaste_Click {
  $Control->Paste();
}

sub EditSelectAll_Click {
  $Control->SelectAll();
}

sub EditDelete_Click {
  $Control->Delete();
}

sub EditFind_Click {
  $Control->FindText();
}

#######################################################################
#
#  Format Menu
#
#######################################################################

sub FormatBold_Click {
  $Control->Bold();
}

sub FormatItalic_Click {
  $Control->Italic();
}

sub FormatUnderline_Click {
  $Control->Underline();
}

sub FormatFont_Click {
  $Control->Font();
}

sub FormatJustifyLeft_Click {
  $Control->JustifyLeft();
}

sub FormatJustifyCenter_Click {
  $Control->JustifyCenter();
}

sub FormatJustifyRight_Click {
  $Control->JustifyRight();
}

sub FormatIndent_Click {
  $Control->Indent();
}

sub FormatOutdent_Click {
  $Control->Outdent();
}

#######################################################################
#
#  Insert Menu
#
#######################################################################

sub InsertHyperLink_Click {
  $Control->HyperLink();
}

sub InsertImage_Click {
  $Control->Image();
}

sub InsertOrderList {
  $Control->OrderList();
}

sub InsertUnOrderList {
  $Control->UnOrderList();
}

sub InsertUnlink_Click {
  $Control->Unlink();
}

#######################################################################
#
#  Help Menu
#
#######################################################################

sub HelpAbout_Click {

  Win32::GUI::MessageBox (0, "Perl Html Editor 0.1 by Laurent Rocher",
                         "About",MB_ICONINFORMATION);

}


--- NEW FILE: InfoControl.pl ---
# perl -w
#
#  Information about a control.
#  Create a html file with control information.
#  Parametre : CLSID Or ProgID
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

if ($#ARGV != 0)
{
  print $0, " : ControlId\n";
  exit(0);
}

$ControlID = $ARGV[0];

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => $ControlID,
 ) or die "new Control";

open (F, ">$ControlID.html") or die "open";

# Enum Property info

print F '<HTML><BODY><HR><H1>Properties</H1><HR>';
print "Properties\n";
foreach $id ($Control->EnumPropertyID()) {

  %property = $Control->GetPropertyInfo ($id);

  foreach $key (keys %property) {
    print F "<B>$key</B> = ", $property {$key}, "<BR>";
  }

  print F "<P>";
}

# Enum Method info

print F "<P><HR><H1>Methods</H1><HR>";
print "Methods\n";
foreach $id ($Control->EnumMethodID()) {

  %method = $Control->GetMethodInfo ($id);

  foreach $key (keys %method) {
    print F "<B>$key</B> = ", $method {$key}, "<BR>";
  }

  print F "<P>";
}

# Enum Event info

print F "<P><HR><H1>Events</H1><HR>";
print "Events\n";
foreach $id ($Control->EnumEventID()) {

  %event = $Control->GetEventInfo ($id);

  foreach $key (keys %event) {
    print F "<B>$key</B> = ", $event {$key}, "<BR>";
  }

  print F "<P>";
}

print F "</BODY></HTML>";
close (F);

--- NEW FILE: MShtml.pl ---
# perl -w
#
#  MSHTML : Load static HTML data
#
#
use Cwd;
use Win32::GUI;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow test",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 0],
               -size    => [400, 400],
               -control => "MSHTML:<HTML><BODY>This is a line of 
text</BODY></HTML>",
 ) or die "new Control";

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Main window event handler

sub Window_Terminate {

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}

--- NEW FILE: Info.bat ---
rem Small Batch file for call InfoControl script

rem DHTML edit
rem perl infocontrol.pl {2D360200-FFF5-11D1-8D03-00A0C959BC0A}

rem Webbrowser {8856F961-340A-11D0-A96B-00C04FD705A2}
perl infocontrol.pl Explorer.Shell.2

rem FlexGrid
rem perl infocontrol.pl {AFC78D00-B917-11CE-AAE4-CE6AC0F06E88}

rem MsFlexGrid  {6262D3A0-531B-11CF-91F6-C2863C385E30}
rem perl infocontrol.pl MSFlexGridLib.MSFlexGrid

rem SCGrid
rem perl infocontrol.pl prjSCGrid.SCGrid

rem Movie control information
rem perl infocontrol.pl MOVIEPLAYER.MoviePlayerCtrl.1
--- NEW FILE: Google.pl ---
# perl -w
#
#  Hosting WebBrowser
#    - Create a WebBrowser control and get a Win32::OLe handler.
#    - Navigate on Google.fr
#    - When document loaded (DoucmentComplete event), set Win32::GUI::AxWindow 
in serach edit then submit
#       If Google Html page change, must change Item index.
#
use Cwd;
use Win32::GUI;
use Win32::OLE;
use Win32::GUI::AxWindow;

# main Window
$Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::AxWindow and Win32::OLE",
    -pos     => [100, 100],
    -size    => [400, 400],
    -name     => "Window",
) or die "new Window";

# Create AxWindow with a webbrowser
$Control = new Win32::GUI::AxWindow  (
               -parent  => $Window,
               -name    => "Control",
               -pos     => [0, 100],
               -size    => [400, 300],
               -control => "Shell.Explorer.2",
 ) or die "new Control";

# Register Event
$Control->RegisterEvent ("DocumentComplete", "DocumentComplete_Event" );

# Get Ole object
$OLEControl = $Control->GetOLE();

# Navigate to google
$Control->CallMethod("Navigate", 'http://www.google.fr/');

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Event handler
sub DocumentComplete_Event { 
  
  # print $OLEControl->{LocationUrl}, "\n";
  return unless $OLEControl->{LocationUrl} eq 'http://www.google.fr/';
  
  print "Search Win32::GUI::AXWindow\n";

  my $all = $OLEControl->{Document}->{all};

  # List all HTML TAG
  # for $i (0..$all->length) {
  #  my $item = $all->item($i);
  #   print "$i = ", $item->outerHTML , "\n\n";         
  # }

  # Input texte
  my $inputTexte = $all->item(49);    
  $inputTexte->{value} = "Win32::GUI::AxWindow";

  # Submit
  my $Submit     = $all->item(55);
  $Submit->click;
}       

# Main window event handler

sub Window_Terminate {

  # Release all before destroy window
  undef $OLEControl;
  # $Control->Release();

  return -1;
}

sub Window_Resize {

  if (defined $Window) {
    ($width, $height) = ($Window->GetClientRect)[2..3];
    $Control->Move   (0, 0);
    $Control->Resize ($width, $height);
  }
}


Reply via email to