gTef DLLの設計

設計に先立ち簡単にプログラムを書き始めて、様々な問題が噴出してきました。

まず、このDLLは複数同時実行に対応させるのかどうか、という点で、この方針如何により、APIの使い方が簡単か難しいかが決まることになります。


例えば、今回参考にした、LHA.EXEに対する UNLHA32.DLL の場合、複数同時実行に対応していない代わり、とてもAPIがシンプルです。
解凍の実行は、

Unlha(const HWND _hwnd, LPCSTR _szCmdLine, LPSTR _szOutput, const DWORD _dwSize)

というAPIで一発。
一つ目に実行もとのウィンドウハンドル、二つ目にLHA.EXEに与えるのと同じオプション文字列を入れ、三つ目と四つ目は返却値のバッファポインタとサイズになっています。


つまり、このように単純化するとなるとgTefの場合も同様の結果となり、実質的に現在β版を提供しているgtef.exeとほぼ同じ機能をDLLとして書くことになるわけです。
その代わり同時に複数は実行できません。

まぁ、実際の変換DLL群は、同時実行のテスト等はしていませんが、グローバル変数などは使っておらず、構造体を渡して構造体を受け取るような仕様ですから、恐らく同時実行も可能なはず。
なので、どうしても同時に、という人は手を抜かずに直接このDLL群をアクセスしてもらう方向で、今回は簡単に使える統合DLLにしようかと考えております。

簡単でなければ、わざわざ新規にDLLを作るメリットがないですからね。

今のところ、漠然と考えた仕様


LibGetVersion バージョンチェック
    DWORD LibGetVersion()
    このDLLのバージョンを返すAPI。
    変換DLL群のAPIを文字列などで得て加工して表示したいようなケースもあると思うので、その方法については検討中。

LibGetRunning 動作中のチェック
    bool LibGetRunning()
    true=実行中 false=実行中でない

LibEncode  エンコード
    int LibEncode(const HWND, const char, char, const size_t)

    const HWND
     GTEF.DLLを呼び出すアプリのウィンドウのハンドル。
     GTEF.DLLは実行時にこのウィンドウに対し、EnableWindow()を実行して動作を抑制する。ウィンドウが存在しないコンソールアプリの場合や、指定する必要のない場合は nullptr を渡す。nullptr が渡された場合は、様々な結果を標準出力に対して行なう。

    const char
     gtefのコマンドライン文字列をUTF-8化して渡す

    char
     GTEF.DLLが結果を返すためのバッファ。
     受け取らない場合は nullptr とする。
    const size_t
     GTEF.DLLが結果を返すためのバッファの大きさ。
     GTEF.DLLの結果より小さい場合、指定サイズまで出力される。


    戻り値
     0 = 正常終了
     !0 = エラー


引数文字列は、UTF-8化して渡してもらう方向で考えておりますが、C/C++以外の言語での都合などは、どうなのでしょう。
選択肢は、UTF-8か、UTF-16かの二択になるわけですが、特にスクリプト系の言語は、どうなのか定かではありません。

たぶん、PerlとかだとUTF-8の方が都合が良さそうなイメージ。
VBなんかもそんなイメージ。
他に使ったことがある高級言語はCOBOLくらいですが、まぁ、これは想定しない方向で。


あとCでの利用を想定した場合、引数がbool/true/falseってのはまずいだろうか。

2009/07/22(水)16:18 |Comments(0) |Trackback(0)

製造開発 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

gTef DLL ホーム gTef 0.02d beta 公開のお知らせ
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR