From: jw <jw...@us...> - 2005-11-01 12:32:43
|
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); } } |