[Chapter 19] Win32 Modules and Extensions
Author: Ellen Siever, Stephen Spainhour & Nathan Patwardhan
Date: 1999-07-02T01:59:12Z

#

| Chapter 19 |

# 19. Win32 Modules and Extensions

Contents:
Win32::Clipboard
Win32::Console
Win32::ChangeNotification
Win32::Eventlog
Win32::File
Win32::FileSecurity
Win32::Internet
Win32::IPC
Win32::Mutex
Win32::NetAdmin
Win32::NetResource
Win32::Process
Win32::Registry
Win32::Semaphore
Win32::Service
Win32::Shortcut
Win32 Extensions
OLE Automation

If you use Perl on a Win32 system, a number of extension modules are available to provide Windows-specific functionality. Extension modules consist of a regular module written in Perl and a library written in C or C++ that can implement native Windows calls. The core of available modules is bundled together as lib-win32 on CPAN, and with ActivePerl, Activestate's version of Perl for Win32. They provide such functionality as managing Windows processes, NT user administration, registry modification, and OLE automation.

The Win32 modules were originally written for Windows NT systems, so much of the functionality of the Win32 library is only applicable to Perl running on Windows NT. Many modules check to see which system they are on before installing. Many of the NT-specific modules such as NetAdmin and EventLog do not install at all on Windows 95. Modules like Registry do their best to work on both systems, despite the differences in their registries.

This chapter covers most of the modules and extensions included in lib-win32 and distributed with ActivePerl. Additional Windows modules are available at CPAN.

The following modules are described in this chapter:

Win32::Clipboard

  Provide Windows clipboard interaction

Win32::Console

  Provide Windows console interaction

Win32::ChangeNotification

  Create and use ChangeNotification objects

Win32::EventLog

  Read from and write to the Windows NT event log

Win32::File

  Manage file attributes (read-only, system, hidden...)

Win32::FileSecurity

  Manage ACLs in Perl

Win32::Internet

  Provide extensions for Internet services

Win32::IPC

  Wait for objects (processes, mutexes, semaphores)

Win32::Mutex

  Create and use mutexes

Win32::NetAdmin

  Administer users and groups

Win32::NetResource

  Manage resources (servers, file shares, printers)

Win32::Process

  Start and stop Win32 processes

Win32::Registry

  Read and manage the Win32 Registry

Win32::Semaphore

  Create and use semaphores

Win32::Service

  Manage Windows NT services

Win32::Shortcut

  Provide shell link interface

The reference material for the Clipboard, Console, Internet, and Shortcut modules was graciously provided by Aldo Capini, author and maintainer of many Win32 modules (http://www.divinf.it/dada/perl/).

The final section of this chapter describes OLE automation in Perl programs and details the Win32::OLE modules.

## 19.1 Win32::Clipboard

The Win32::Clipboard module allows you to manipulate the Windows clipboard. You can use the clipboard as an object with the following syntax:

>     $clip = Win32::Clipboard();

This functions as an implicit constructor. If you include a text string as an argument, that text will be placed on the clipboard. You can just use the package-qualified method names instead of the object syntax, since the clipboard is a single entity.

>     $text = Win32::Clipboard::Get();
>     Win32::Clipboard::Set("blah blah blah");
>     Win32::Clipboard::Empty();

Alternatively, you can use the clipboard as an object with this syntax:

>     $Clip = Win32::Clipboard();
>     $text = $Clip->Get();
>     $Clip->Set("blah blah blah");
>     $Clip->Empty();

VIII. Win32 |  | 19.2 Win32::Console