2008/3/20 木曜日

新しいクラスを作る(7) ― PInvoke

Filed under: Powershell — flamework @ 14:49:26

概要

New-Class.ps1 を使い、PowerShell から Win32API を呼び出します。

用例

Beep 関数を使って音を鳴らします。

PS> New-Class Class11 {

>>     PInvokeMethod public, static stdcall bool kernel32.dll Beep([UInt32], [UInt32])

>> }

>>

 

PS> [Class11]::Beep(262, 500)

方法

PInvokeMethod は次のように指定します。

PInvokeMethod <属性> <呼び出し規約> <戻り値の型> <ライブラリ名> <メソッド名> <パラメータ型リスト> <キャラクタセット> <エントリ名>

<属性> には、static を含める必要があります。Win32API はオブジェクトインスタンスを受け取らないからです。

<呼び出し規約> は、ほとんどの場合 stdcall で構いません。特に指定のある場合は変更してください。

<ライブラリ名> には、その API 関数が収められているダイナミックリンクライブラリを指定します。

<メソッド名> は、通常、その API 関数と同じものを使ってください。もし別の名前を使いたい場合には、<エントリ名> に API 関数の名前を指定してください。

<キャラクタセット> は、auto, ansi, unicode から選択してください。デフォルトは auto です。

2008/3/19 水曜日

新しいクラスを作る(6) ― インターフェース

Filed under: Powershell — flamework @ 15:21:13

概要

New-Class.ps1 でインターフェースを実装する方法を解説します。

用例

IDisposable インターフェースを実装するクラス Class10 を作成します。

PS> New-Class Class10 -Interface([IDisposable]) {
>>     Method public, virtual void Dispose @() {
>>         Write-Host 'Now disposed.'
>>     }
>> }
>>

NameSpace Name BaseType
--------- ---- --------
  Class10 System.Object

PS> $o = New-Object Class10
PS> $o.Dispose()
Now disposed.

方法

用例のように、「-Interface」パラメータに実装するインターフェースの配列を渡し、必要なメソッドを実装します。メソッドは「public, virtual」でなくてはなりません。

次ページへ »

Copyright © flamework.net 2008.