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);
}
}