2008/4/15 火曜日

Windows PowerShell Get-Enjoy コンテスト

Filed under: Powershell — flamework @ 13:35:26

昨年末、マイクロソフト主催の「Windows PowerShell Get-Enjoy コンテスト」というコンテストにスクリプトを応募しました。「Windows PowerShell」の名を冠しながら「Windows PowerShell で作成されたスクリプトである必要はありません。」と銘打たれている変わったコンテストでしたが、評価が不当に低い気がする PowerShell が、このようなイベントを通じて認知されていけば嬉しいことです。便利な PowerShell ですが、今よりユーザーが増えればもっともっと便利になるでしょう。

応募したスクリプトは、「Windows PowerShell で delegate」で掲載したスクリプト「New-Delegate.ps1」です。ありがたいことに吉岡洋様より選考委員特別賞をいただきました。賞品のデジタルビデオが届くのを楽しみに待っています。

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 です。

« 前ページへ次ページへ »

Copyright © flamework.net 2008.