Wie schreibe ich mit Perl in Notepad?

Inhalt:

Es kam die Frage auf, wie man mit Perl einen Text in Notepad einfügen kann. Esskar hat dafür ein Beispielprogramm zur Verfügung gestellt:

#!/usr/bin/perl

use strict;
use warnings;

use Win32;
use Win32::API;
use Win32::API::Callback;

my $EnumWindows   = Win32::API->new( "user32", "EnumWindows",      "PN",  "N" );
my $EnumChildWnds = Win32::API->new( "user32", "EnumChildWindows", "NKN", "N" );
my $FindWindowEx  = Win32::API->new( "user32", "FindWindowEx",     "NNPP", "N" );
my $GetClassName  = Win32::API->new( "user32", "GetClassName",     "NPN",  "N" );
my $SetWindowText = Win32::API->new( "user32", "SetWindowText",    "NP",   "N" );
my $PostMessage   = Win32::API->new( "user32", "PostMessage",      "NNNN", "N" );

my $hwnd = $FindWindowEx->Call( 0, 0, "Notepad", 0 );
die "Window not found." unless $hwnd;

my $editHwnd        = 0;
my $EnumWindowsProc = Win32::API::Callback->new(
   sub {
       my ( $hwnd, $param ) = @_;

       my $className = " " x 256;
       my $len       =
         $GetClassName->Call( $hwnd, $className, length($className) - 1 );
       $className = substr( $className, 0, $len );

       if ( lc $className eq 'edit' ) {
           $editHwnd = $hwnd;
           return 0;
       }

       return 1;
   },
   "NN",
   "N"
);
$EnumChildWnds->Call( $hwnd, $EnumWindowsProc, 0 );

die "Edit Window not found." unless $editHwnd;

$SetWindowText->Call( $hwnd, "Hacked by esskar! :-)" );
&write_to_window( $editHwnd, "Just a test!\n" );

use constant WM_CHAR => 258;
sub write_to_window {
   my ( $hwnd, $text ) = @_;

   my @chars = split //, $text;
   foreach my $c (@chars) {
       $PostMessage->Call($hwnd, WM_CHAR, ord $c, 0);
   }
}

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie schreibe ich mit Perl in Notepad?
Autor ReneeBaecker
Bereich FaqPerlUndWin32
Topic revision: 2006-05-16, SaschaKieferAkaEsskar
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.