NAME

Win32::API::Interface - Object oriented interface generation

SYNOPSIS

    package MyModule;
	use base qw/Win32::API::Interface/;

	__PACKAGE__->generate( "kernel32", "GetCurrentProcessId", "", "N" );
	__PACKAGE__->generate( "kernel32", "GetCurrentProcessId", "", "N", 'get_pid' );

	1;

	my $obj = MyModule->new );
	print "PID: " . $obj->GetCurrentProcessId . "\n";
	print "PID: " . $obj->get_pid . "\n";

DESCRIPTION

This module provides functions for generating a object oriented interface to Win32 API functions.

METHODS

new

my $obj = Module->new;

Win32::API::Interface provides a basic constructor. It generates a hash-based object and can be called as either a class method or an object method.

self

my $self = $obj->self;

Returns itself. Acutally useless and mainly used internally. Can also be called as a object method.

Win32::API::Interface->self

generate

__PACKAGE__->generate( "kernel32", "GetCurrentProcessId", "", "N" );

This generates a method called GetCurrentProcessId which is exported by kernel32.dll. It does not take any input parameters but returns a value of type long.

__PACKAGE__->generate( "kernel32", "GetCurrentProcessId", "", "N", "get_pid" );

Actually the same as above, but this will generate a method called get_pid. This is useful if you do not want to rely on the API function name.

__PACKAGE__->generare(
    "advapi32",
    "EncryptFile",
    "P", "I", "",
    sub {
        my ( $self, $filename ) = @_;
        return $self->Call( File::Spec->canonpath($filename) );
    }
);

As the seventh and last parameter you may provide a function reference for modifying the input to and output from the API function.

__PACKAGE__->generate(
    [ "kernel32", "GetTempPath",         "NP", "N" ],
    [ "kernel32", "GetCurrentProcessId", "",   "N", "get_pid" ],
    [ "advapi32" ,"EncryptFile",         "P",  "I", "",       $coderef ],
);

You may call generate passing an hash reference of array references.

__PACKAGE__->generate( {
    "kernel32" => [
        [ "GetTempPath",         "NP", "N" ],
        [ "GetCurrentProcessId", "",   "N", "get_pid" ],
    ],
    "user32" => [
        [ "GetCursorPos",        "P",  "I"]
    ],
    "advapi32" => [
        [ "EncryptFile",         "P",  "I", "",       $coderef ],
    ].
} );

generated

Returns a list of all real generated API function names

__PACKAGE__->generated( );

AUTHOR

Sascha Kiefer, esskar@cpan.org

COPYRIGHT AND LICENSE

Copyright (C) 2006 Sascha Kiefer

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.