Lunatic Sol

IT Tips

OSLoadString を LotusScript から Call してみよう

2003-12-17 15:53:58 | LotusScript
Notes C API に OSLoadString という関数があります。この関数は Notes C API 上戻されたエラーコードを元に割り当てられたメッセージを出力することができる関数です。LotusScript クラスだけを使用している場合には特に必要ありませんが、LotusScript で Notes C API 関数を直接 Call するようになると重要になってきます。ということで LotusScript で OSLoadString を Call する仕組みを作ってみました。今回は SxNotesError というクラスにしています。

  Dim sxErr As New SxNotesError(errorNumber&)

というような形でクラスオブジェクトを初期化して、GetErrMessage メソッドでエラーメッセージを取得してください。例えば errString$ = sxErr.GetErrMessage というような感じです。

Declare Function OSLoadString Lib "nnotes" (Byval handle As Integer, Byval errNum As Integer, Byval buffer As Lmbcs String, Byval textLen As Integer) As Integer
Const STS_REMOTE = &H4000
Const STS_DISPLAYED = &H8000

Class SxNotesError
    Private errNum As Long
    Public MaskOffErrCode As Integer

    Sub New(errorNum As Long)
        Me.errNum = errorNum

        '*** PROPERTIES ***
        MaskOffErrCode = GetMaskOffErrCode
    End Sub

    Private Function GetMaskOffErrCode As Integer
        If Me.errNum And STS_DISPLAYED Then
            Me.errNum = Me.errNum And (&HFFFF Xor STS_DISPLAYED)
        End If

        If Me.errNum And STS_REMOTE Then
            Me.errNum = Me.errNum And(&HFFFF Xor STS_REMOTE)
        End If
        GetMaskOffErrCode = Me.errNum
    End Function

    Function GetErrMessage As String
        Dim errLen As Integer
        Dim retBuffer As String
        retBuffer = String$(255,0)
        errLen = OSLoadString(0, Me.MaskOffErrCode, retBuffer, Len(retBuffer)-1)
        GetErrMessage = retBuffer
    End Function
End Class

LotusScript のボタンを作って (Declarations) に上のソースを全て入力し、Click イベントに以下のようなコードを入れるとエラーコードを入力してメッセージをチェックするシミュレーションができます。また別のテクニックとして lss ファイルにしてみよう の回で紹介した Tips を使って SxNotesError.lss というテキストファイルにして Notes プログラムディレクトリに保存し、(Declarations) には

  %INCLUDE "SxNotesError.lss"

と指定することで実現することもできます。

Sub Click(Source As Button)
    Dim sxErr As New SxNotesError(Clng(Inputbox$("エラーコード")))
    Msgbox sxErr.GetErrMessage
End Sub


■ 参考: OSLoadString</p>

最新の画像もっと見る