OS2-WinObject

 view release on metacpan or  search on metacpan

WinObject.pm  view on Meta::CPAN

   CYCHORD		72
   CXMOTIONSTART	73
   CYMOTIONSTART	74
   BEGINDRAG		75
   ENDDRAG		76
   SINGLESELECT		77
   OPEN			78
   CONTEXTMENU		79
   CONTEXTHELP		80
   TEXTEDIT		81
   BEGINSELECT		82
   ENDSELECT		83
   BEGINDRAGKB		84
   ENDDRAGKB		85
   SELECTKB		86
   OPENKB		87
   CONTEXTMENUKB	88
   CONTEXTHELPKB	89
   TEXTEDITKB		90
   BEGINSELECTKB	91
   ENDSELECTKB		92
   ANIMATION		93
   ANIMATIONSPEED	94
   MONOICONS		95
   KBDALTERED		96
   PRINTSCREEN		97
   LOCKSTARTINPUT	98
   DYNAMICDRAG		99
   CSYSVALUES		100
EOS
}

sub SysValue ($;$) {
  init_SV_constants;
  my $v = $SV_constants{shift()};
  return QuerySysValue($v) unless @_;
  QuerySysValue($v,shift);
}

sub SysValue_set ($$;$) {
  init_SV_constants;
  my $v = $SV_constants{shift()};
  return SetSysValue($v, shift) unless @_ > 1;
  SetSysValue($v,shift, shift);
}

# Autoload methods go after =cut, and are processed by the autosplit program.

1;
__END__

=head1 NAME

OS2::WinObject - Perl extension for access the subset of C<Win*> API
for dealing with WPS objects.

=head1 SYNOPSIS

  use OS2::WinObject ':all';

  $desktop = QueryObject '<WP_DESKTOP>';
  OpenObject $desktop, OPEN_SETTINGS, 1
    or die "Can't open DESKTOP settings notebook: $!";
  $w = SysValue 'CXSCREEN';
  ($x,$y,$w,$h,$fl,$b,$s) = WindowPos QueryDesktopWindow;
  $p = ActiveDesktopPathname;
  $p = ObjectPath $desktop;

=head1 DESCRIPTION

Most reasonable things to do with WPS objects require access via the SOM/DSOM
subsystem.  However, C<Win*> API contains some (very primitive) means to deal
with objects via their I<handles>, delegating the actual work to WPS.

When choosing these functions, the principal target was completeness; many of
these function are useless except in extremely bizzare circumstances.

=head2 EXPORT

None by default.

=head2 Exportable constants

  CO_FAILIFEXISTS
  CO_REPLACEIFEXISTS
  CO_UPDATEIFEXISTS
  OPEN_AUTO
  OPEN_BATTERY
  OPEN_CONTENTS
  OPEN_DEFAULT
  OPEN_DETAILS
  OPEN_HELP
  OPEN_PALETTE
  OPEN_PROMPTDLG
  OPEN_RUNNING
  OPEN_SETTINGS
  OPEN_STATUS
  OPEN_TREE
  OPEN_USER
  PMERR_INVALID_FLAG
  PMERR_INVALID_HPTR
  PMERR_INVALID_HWND
  PMERR_INV_HDC
  PMERR_PARAMETER_OUT_OF_RANGE
  PMERR_WPDSERVER_IS_ACTIVE
  PMERR_WPDSERVER_NOT_STARTED
  SWP_ACTIVATE
  SWP_DEACTIVATE
  SWP_EXTSTATECHANGE
  SWP_FOCUSACTIVATE
  SWP_FOCUSDEACTIVATE
  SWP_HIDE
  SWP_MAXIMIZE
  SWP_MINIMIZE
  SWP_MOVE
  SWP_NOADJUST
  SWP_NOAUTOCLOSE
  SWP_NOREDRAW
  SWP_RESTORE
  SWP_SHOW
  SWP_SIZE
  SWP_ZORDER

=head2 Exportable functions (similar to C)

When accessing the following functions from Perl, prefix C<Win> should be removed.

WinObject.pm  view on Meta::CPAN

  BOOL WinDestroyObject (HOBJECT hObject)
  BOOL WinEnumObjectClasses (POBJCLASS pObjClass, PULONG pulSize)
  BOOL WinFreeFileIcon (HPOINTER hptr)
  BOOL WinIsSOMDDReady (void )
  BOOL WinIsWPDServerReady (void )
  HPOINTER WinLoadFileIcon (PCSZ pszFileName, BOOL fPrivate)
  HOBJECT WinMoveObject (HOBJECT hObjectofObject, HOBJECT hObjectofDest,
    ULONG ulReserved {SANE DEFAULT})
  BOOL WinOpenObject (HOBJECT hObject, ULONG ulView, BOOL fFlag)
  BOOL WinQueryActiveDesktopPathname (PSZ pszPathName, ULONG ulSize)
  BOOL WinQueryDesktopBkgnd (HWND hwndDesktop, PDESKTOP pdsk)
  HWND WinQueryDesktopWindow (HAB hab {SANE DEFAULT}, HDC hdc {SANE DEFAULT})
  HOBJECT WinQueryObject (PCSZ pszObjectID)
  BOOL WinQueryObjectPath (HOBJECT hobject, PSZ pszPathName, ULONG ulSize)
  HWND WinQueryObjectWindow (HWND hwndDesktop {SANE DEFAULT})
  LONG WinQuerySysValue(LONG iSysValue, HWND hwndDesktop {SANE DEFAULT})
  BOOL WinQueryWindowPos (HWND hwnd, PSWP pswp)
  BOOL WinRegisterObjectClass (PCSZ pszClassName, PCSZ pszModName)
  BOOL WinReplaceObjectClass (PCSZ pszOldClassName, PCSZ pszNewClassName,
    BOOL fReplace)
  ULONG WinRestartSOMDD (BOOL fState)
  ULONG WinRestartWPDServer (BOOL fState)
  BOOL WinRestoreWindowPos (PCSZ pszAppName, PCSZ pszKeyName, HWND hwnd)
  BOOL WinSaveObject (HOBJECT hObject, BOOL fAsync)
  BOOL WinSaveWindowPos (HSAVEWP hsvwp, PSWP pswp, ULONG cswp)
  HBITMAP WinSetDesktopBkgnd (HWND hwndDesktop, __const__ DESKTOP *pdskNew)
  BOOL WinSetFileIcon (PCSZ pszFileName, __const__ ICONINFO *pIconInfo)
  BOOL WinSetMultWindowPos (HAB hab, __const__ SWP *pswp, ULONG cswp)
  BOOL WinSetObjectData (HOBJECT hObject, PCSZ pszSetupString)
  BOOL WinSetSysValue (LONG iSysValue, LONG lValue, HWND hwndDesktop);
  BOOL WinSetWindowPos (HWND hwnd, HWND hwndInsertBehind, LONG x, LONG y,
    LONG cx, LONG cy, ULONG fl)
  BOOL WinShutdownSystem (HAB hab {SANE DEFAULT}, HMQ hmq {SANE DEFAULT})
  BOOL WinStoreWindowPos (PCSZ pszAppName, PCSZ pszKeyName, HWND hwnd)

=head2 Exportable functions (shortcuts)

The functions

  BOOL WinEnumObjectClasses (POBJCLASS pObjClass, PULONG pulSize)
  BOOL WinQueryActiveDesktopPathname (PSZ pszPathName, ULONG ulSize)
  BOOL WinQueryObjectPath (HOBJECT hobject, PSZ pszPathName, ULONG ulSize)
  BOOL WinQueryWindowPos (HWND hwnd, PSWP pswp)

have easier-to-use counterparts:

  %classDLL = ObjectClasses;
  $path = ActiveDesktopPathname;
  $path = ObjectPath($hobject);
  ($x,$y,$w,$h,$flags,$hwndBehindOf,$hwndMy,$reserved1,$reserved2)
     = WindowPos($hwnd) or die "Failure of WindowPos()";

ObjectClasses() returns a hash C<class =E<gt> DLLname>; $flags is a
combination of C<SWP_*> constants.

Note that the functions

  LONG WinQuerySysValue(LONG iSysValue, HWND hwndDesktop {SANE DEFAULT})
  BOOL WinSetSysValue (LONG iSysValue, LONG lValue, HWND hwndDesktop)

has the desktop argument at the last position, while the C counterparts
have it as the first argument (to enable the default value for the desktop).
The easier-to-use counterparts of these functions are

  $value = SysValue($string);
  SysValue_set($string, $value) or die "Cannot set: $^E";

here $string is one of

 SWAPBUTTON DBLCLKTIME CXDBLCLK CYDBLCLK CXSIZEBORDER CYSIZEBORDER ALARM
 CURSORRATE FIRSTSCROLLRATE SCROLLRATE NUMBEREDLISTS WARNINGFREQ NOTEFREQ
 ERRORFREQ WARNINGDURATION NOTEDURATION ERRORDURATION CXSCREEN CYSCREEN
 CXVSCROLL CYHSCROLL CYVSCROLLARROW CXHSCROLLARROW CXBORDER CYBORDER
 CXDLGFRAME CYDLGFRAME CYTITLEBAR CYVSLIDER CXHSLIDER CXMINMAXBUTTON
 CYMINMAXBUTTON CYMENU CXFULLSCREEN CYFULLSCREEN CXICON CYICON CXPOINTER
 CYPOINTER DEBUG CMOUSEBUTTONS CPOINTERBUTTONS POINTERLEVEL CURSORLEVEL
 TRACKRECTLEVEL CTIMERS MOUSEPRESENT CXBYTEALIGN CXALIGN CYBYTEALIGN
 CYALIGN DESKTOPWORKAREAYTOP DESKTOPWORKAREAYBOTTOM DESKTOPWORKAREAXRIGHT
 DESKTOPWORKAREAXLEFT NOTRESERVED EXTRAKEYBEEP SETLIGHTS INSERTMODE
 MENUROLLDOWNDELAY MENUROLLUPDELAY ALTMNEMONIC TASKLISTMOUSEACCESS
 CXICONTEXTWIDTH CICONTEXTLINES CHORDTIME CXCHORD CYCHORD CXMOTIONSTART
 CYMOTIONSTART BEGINDRAG ENDDRAG SINGLESELECT OPEN CONTEXTMENU CONTEXTHELP
 TEXTEDIT BEGINSELECT ENDSELECT BEGINDRAGKB ENDDRAGKB SELECTKB OPENKB
 CONTEXTMENUKB CONTEXTHELPKB TEXTEDITKB BEGINSELECTKB ENDSELECTKB
 ANIMATION ANIMATIONSPEED MONOICONS KBDALTERED PRINTSCREEN LOCKSTARTINPUT
 DYNAMICDRAG CSYSVALUES    

(For the documentation of these values see L<Arguments to SysValue>.

=head2 Exportable functions (convenience)

_hwnd($integer) creates a suitable object given the integer window
handle.

=head2 Export tag

All the mentioned functions are exportable with the tag C<:all>.

=head2 Arguments to SysValue

The meaning of the argument to SysValue() is explained in the following
excerpt from the OS/2 Toolkit. Not all system values can be set with
WinSetSysValue; those that can be set are marked with an asterisk (*).
The actual string given to SysValue() should be stripped of the leading
C<SV_>.

=over 12  

=item C<SV_ALARM>

(*) TRUE if the alarm sound generated by WinAlarm is enabled; FALSE if the alarm sound is disabled. 

=item C<SV_ALTMNEMONIC>

(*) TRUE if the mnemonic is made up of KATAKANA characters; FALSE if the mnemonic is made up of ROMAN characters. 

=item C<SV_ANIMATION>

(*) TRUE when animation is set on. FALSE when animation is set off. 

=item C<SV_BEGINDRAG>



( run in 0.760 second using v1.01-cache-2.11-cpan-39bf76dae61 )