C言語関係掲示板

過去ログ

No.527.スキャン時間の計測

[戻る] [ホームページ]
No.4126

スキャン時間計測のヒントをお願いします
投稿者---さと(2003/01/01 16:42:19)


あけまして おめでとう ございます。
C言語の質問をさせていただきます。分かる方、いらっしゃったら、
ヒントをください。

// やりたい事
1、C言語を用いて、スキャナドライバ(Canon ScanGear 
CS−U)側のスキャンボタン(スキャンをし始めるボタン)が押され
てから、時間を計測し始める。

2、スキャナ本体側からパソコン側にデータが渡される時間

3、パソコンにデータが渡されてから、アプリケーションが表示する
までの時間を計測する

上記3つの事を計測して、パソコンのスペックによるスキャン性能への
影響を調べてみたい。

//自分が、出来そうだと思っている点
1、時間を計測するには、time.h に格納されていてる関数を使用して
実現する。

2、その計測した時間をfopen関数等のファイルの入出力関数を用いて、
テキストファイルとして、書き込む。

//今、全くわからずに、手を加えていない点
1、スキャナドライバ側のスキャンボタンが、押されたという情報
の取得。

2、TWAINという規格のAPIが、スキャンボタンが押された事を
コマンドとして認識していそう?TWAINという規格について
解説してあるページで自分で理解できるページが発見できない。

3、Windowsの下の方(タスクトレイ?)にあるような常駐ソフト的
なものを作成したいが、
どのようにすれば、常駐ソフトが作成できるかが、わからない。(これを
しないと、スキャンボタンが押された事を感知できない?)

//環境
OS:WindowsXP
Application:PhotoShop
ドライバ:Canon
開発言語:Microsoft Visual C++


 C言語の知識は、大学の授業でかじったばかりです。
以上です。よろしくお願いします。

No.4158

Re:ボタン押下情報について
投稿者---さと(2003/01/05 00:08:39)


こんばんわ。
質問の仕方がまずかったようなので、もう少しまとをしぼって質問させ
ていただきます。

自分が作成した以外のアプリケーション(ドライバソフト)の
マウスクリックの情報を、コマンドとしてうけとる
ことは、できるのでしょうか?

少々、C言語の域をこえてしまうのですが、Windowsプログラミング
で、同一プログラム上でのマウスクリックの情報をうけとれますが、
処理が、全く違うプログラムのマウスクリックのコマンドの取得が
わかりません。

マウスクリックの情報をえるためには、C言語より、他の言語を
勉強したほうがよいのでしょうか?どなたか、ヒントを下さると、
とても、助かります。

//プログラムの知識
 JAVA、FORTRAN 授業で習いました
 C言語     授業で習い、それに関連したMFC,Windowsプログラ         ミングを見たことがある程度
 VBA     EXCELで、入力フォームを作成(独学)

 プログラミング歴は、2年ちょっとです。


以上です。よろしくお願いします。

No.4162

Re:ボタン押下情報について
投稿者---カンナ(2003/01/05 02:15:15)
http://hana.sakura.ne.jp/~elfin/k/


 他のウィンドウに送られたメッセージを取得するには「メッセージフック」
という方法があります。これはC言語を使ったSDK(MFC含む)で実現可能です。

 実現方法については「メッセージフック」・「WIN32API」などのキーワード
で検索すると有用なページが見つかるかと思います。また書店に行けばWin32
のシステムプログラミング関連の書籍がたくさん見つかることでしょう。メッ
セージフックを不用意に使用するとシステムの不安定化やフリーズを招く恐れ
がありますので、動作をよく理解した上でお使いください。

 また元の情報の完全な解決方法は私には分かりませんが、いくつか思いつい
たことを以下に列挙いたしますのでよろしかったら御参考にしてください。

・メッセージフックでボタン押下時刻を取得するには、対象のボタンのウィン
ドウハンドルが必要です。

・APIを実装しているDLLモジュール名が分かれば「APIフック」という方法に
よってAPIが呼ばれた時刻を取得できます(TWAINについて全く知りませんので
的外れなことをいっているのかもしれませんが御容赦ください)。

・タスクトレイはユーザインタフェースに過ぎないのでタスクトレイにする
必要はとくにありません。恐らくはコンソールアプリケーションなどでも充分
実現できると思います。(ちゃんとしたユーザインタフェースをつける必要が
あるというなら話は別です。その場合、御使用環境がXPということですから、
サービスにするという方法もありますね。)

No.4306

環境がXPでのサービスとは?
投稿者---さと(2003/01/11 22:56:45)


 お返事ありがとうございます!ずっと、一人で悩んでいたので、
非常に勇気がわきました。


 また、下のコメントでの質問です。サービスとは、どういった機能
なのかを教えてくださるとうれしいです。
 
>あるというなら話は別です。その場合、御使用環境がXPということですから、
>サービスにするという方法もありますね。)


 また、現在、メッセージフック等の調査をしております。
まだ、検討中なので、実現はできていませんが、どれも、とても
有意義の内容です。実現するまで、がんばってようとおもっています。

 また、お世話になるかもしれませんが、よろしくお願いします。


No.4336

Re:環境がXPでのサービスとは?
投稿者---カンナ(2003/01/12 23:19:12)
http://hana.sakura.ne.jp/~elfin/k/


 サービスとは大雑把にいってしまえばNT系の常駐アプリケーションのことです。
スタートアップフォルダに入れておいたアプリケーションはそのユーザがログオン
するまで起動されませんので、システム起動時に同時に起動したいようなアプリケ
ーションはサービスとして作成することになります。
 サービスの起動/終了はコントロールパネル→管理ツール→サービス(2000の場
合)で行います。ここではその他自動起動の設定/解除などができます。職場なん
かだととりあえずMessengerサービスを無効にしたりしますね。

 前回の投稿では、常駐アプリケーションとする必要があるがユーザとの対話が不
要などの理由でタスクトレイに登録する意味がないという場合の別解として提示し
ました。実際には常駐する必要はありませんので、コンソールアプリケーションで
も充分実現可能だと思います(ただしフックの方はDLLにする必要があるかもしれま
せん。これはフックするメッセージの種類に拠ります)。

> また、現在、メッセージフック等の調査をしております。
>まだ、検討中なので、実現はできていませんが、どれも、とても
>有意義の内容です。実現するまで、がんばってようとおもっています。

 TWAINなどに対する私の知識不足で御質問に対する直接の回答を行うことができ
ませんでしたが、多少なりともお役に立てたようで嬉しく思います。
 やりがいのありそうな作業なので、がんばって是非解決なさってください。

 追記:スキャンボタンの押下をフックする代わりに、計測アプリケーションの方
からボタンへメッセージを送った方が楽かも知れません。