DoBookGrep, DoLdapGrep, GetGrepResult, GetBookItemPart関数(TKInfo.dll)(Ver7.22対応版)
 DoBookGrep関数は、アドレス帳に登録されている名前または電子メールアドレス(以下、Emailと表記する)から文字列を検索します。結果はGetGrepResult関数で1つづつ取得します。
 DoBookGrep関数は、FindBook系の関数とは違い、メールアドレスが一部分マッチしていればヒットしたものとして処理します。

 DoLdapGrep関数は、アドレス帳に登録されているLDAPサーバーから文字列を検索します。結果はGetGrepResult関数で1つづつ返します。

 GetBookItemPart関数は、GetGrepResult関数で取得した検索結果の1項目中からメールアドレス部分や名前部分などを取り出します。
●DoBookGrep関数
パラメータ1(文字列型)
 検索したい文字列を指定します。


パラメータ2(数値型)
 メールアドレス(およびパラメータ3が1の時はメールアドレスに加えて名前)の先頭にヒットするかどうか調べる時は、1、任意の部分にヒットするかどうか調べる時は0を指定します。


パラメータ3(数値型)
 メールアドレスのみを対象とする場合は0、名前も含めて検索する場合は1を指定します。


返り値(数値型)
 検索に成功したら1、失敗したら0を返します。検索しても何もヒットしなかった場合でも1を返します。


●DoLdapGrep関数
パラメータ1(文字列型)
 検索したい文字列を指定します。


パラメータ2(数値型)
 メールアドレスおよび名前の先頭にヒットするかどうか調べる時は、1、任意の部分にヒットするかどうか調べる時は0を指定します。


パラメータ3(文字列型)
 アドレス帳に登録しているLDAPサーバー名を指定します。


パラメータ4(文字列型)
 検索対象の属性を指定します。ここには任意の属性名(cn、mail、rfc822MailBoxなど)が指定できる他、"名前"または"メールアドレス"と指定することも出来ます。さらに、"名前+メールアドレス"と指定するか、または""を指定すると、名前とメールアドレスの両方から検索します。


パラメータ5(数値型)
 検索時間の最大値を秒単位で指定します。ここに0を指定すると、LDAPサーバーから結果が全部返るまでずっと待ち続けます。任意の秒数を指定すると、その秒数まで待機して返ってきた所で検索を打ち切ります。


返り値(数値型)
 検索に成功したら1、失敗したら0を返します。検索しても何もヒットしなかった場合でも1を返します。パラメータ5で指定した時間待ってタイムアウトした場合でも1を返します。


●GetGrepResult関数
パラメータ1(数値型)
 検索結果の番号を指定します。先頭が0です。


返り値(文字列型)
 検索結果の文字列を返します。ここの文字列は、アドレス帳用ファイル(AdrBook.txt)に記録されている1行分の内容そのままです。この結果文字列を、GetBookItemPart関数を使って変換してから使います。
 GetGrepResult関数の返り値が""になった場合は、それ以降の検索結果は存在しません。例えばパラメータ1に0を渡して呼んだ場合の結果が""である場合には、1つもヒットしなかったことを意味します。


●GetBookItemPart関数
パラメータ1(文字列型)
 GetGrepResult関数で取得した文字列をそのまま渡します。


パラメータ2(数値型)
 ここに指定する値と意味は以下の通りです。
-2  名前+Emailの形式。ただし、パラメータ1で指定された項目のEmail部分に複数メールアドレスが指定されている場合は、複数指定されたメールアドレスのみをそのまま返します。
-1  名前+Emailの形式。ただし、アドレス帳の設定で「To/Cc/Bcc欄への入力方法」がEmailアドレスのみと指定されている場合はメールアドレスのみを返します。パラメータ1で指定された項目のEmail部分に複数メールアドレスが指定されている場合も、名前は無視し、複数指定されたメールアドレスをそのまま返します。
0 名前
1 Email
2 登録日
3 備考1
4 備考2
5 備考3
6 その他
7 備考4
8 備考5
9 備考6
10 備考7
11 備考8
-102  アドレス帳の設定で、備考1〜8のどこかをメールアドレス2として使う設定にしてある場合で、指定された備考欄にメールアドレス相当の物が書いてあった場合、そのメールアドレスを元にした「名前+Email」の形式の文字列を返します。メールアドレス2が指定されてなければ""を返します。
-103  同じく、メールアドレス3が指定されていればそれを元にした「名前+Email」の形式の文字列を返します。無ければ""を返します。
102  アドレス帳の設定で、備考1〜8のどこかをメールアドレス2として使う設定にしてある場合で、指定された備考欄にメールアドレス相当の物が書いてあった場合、そのメールアドレスを返します。メールアドレス2が指定されてなければ""を返します。
103  同じく、メールアドレス3が指定されていればそれを返します。無ければ""を返します。


●GetGrepResultGroup関数
パラメータ1(文字列型)
 GetGrepResult関数で取得した文字列をそのまま渡します。


返り値(文字列型)
 この検索結果が所属していたグループ名(グループのパス名)を、"Group(/.../...)"のような形式で返します。


例(サンプルマクロ)
    loaddll "tkinfo.dll";
    $find = input( "検索する文字列は?");
    if( $find == "" ) endmacro;
// Ldapgrep
    if( dllfunc("DoLdapGrep", $find, 0, "sample-ldap-server", "mail", 0 ) == 0 ) {
        message "エラー";
        endmacro;
    }

// BookGrep
// if( dllfunc("DoBookGrep", $find, 0 ) == 0 ) {
//     message "エラー";
//     endmacro;
// }

    #i = 0;
    while(1) {
        $menu[#i] = dllfuncstr("GetGrepResult", #i);
        if( $menu[#i] == "" ) {
           break;
        }
        $menu[#i] = dllfuncstr("GetBookItemPart", $menu[#i], -1 );
        #i = #i + 1;
    }
    menuarray $menu, #i;