重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

長くなりますが、背景説明をします。
(前回も類似質問してますが、今回は質問点が明確になりました。)

ファイル名は、用途が分かりやすいよう仮名にします。

PicoScopeというオシロスコープを購入しました。
この装置はパソコンにUSB接続します。
パソコン側では、ソフト類をインストールして、PicoWin.exeを実行します。
PicoWin.exeは通常のWindowsソフトなので、マウス操作で、観測波形を表示させます。

この製品のCD-ROMには、アプリ開発者向けファイル類も添付されていました。
Win32 Console application 用として
pswin32.c
pswin32.h
ps.dll
などが入っていて、これをVC++ 6.0でコンパイル(ビルド?)して実行ファイル(MyPsCON.exe)を作りました。
バッチリ動作します。

MyPsCON.exeを起動すると、Windows画面上にコマンドプロンプト画面が出てきます。
例えば、キーボード操作で、トリガーモードを起動すると、PicoScopeが入力信号の監視し始め、入力電圧がかかると、電圧変化を一定時間読み取って、その結果をdata.txeに書き出します。
また、入力信号の監視し始めた後、任意の文字キーを入力すると、プログラム動作が中止(abort)します。

次に、上記pswin32.cをDLL用に書き換えても一応動作しました。
具体的には、void main(void)という関数を BOOL WINAPI DllMain(・・・)表記に変えて、必要な関数を追加し、、VC++ 6.0のWin32 Dynamic Link Libraryとして、コンパイルし、pswin32.dllを作りました。

私は、ARAGOというマイナーな開発ソフトの愛用者です。
ARAGOは、マウス操作する通常のWidowsアプリを作成するソフトです。
このARAGOには、上記VCのネイティプDLLを実行する機能があるので、pswin32.dllを実行する自作プログラム(MyPsWin.exe)を作成しました。
このMyPsWin.exeも、電圧変化を一定時間読み取ってdata.txeに書き出す動作は正常に実行します。

さて、ここからが質問です。
MyPsWin.exeでpswin32.dllを実行する場合、キー入力ができない(受け付けない)のです。

私はこう考えているのですが・・・。
Console applicationの場合、A.EXEを起動すると、1つ目のコマンドプロンプトAが開かれて、その中で実行開始します。
その実行中に、B.EXEを起動すると、2つ目のコマンドプロンプトBが開かれて、B.EXEはコマンドプロンプトBで実行されます。

そのコマンドプロンプトBの状態で、A.EXE側にキー入力する場合、コマンドプロンプトA画面をマウスでクリック選択してから、キー入力しなくてはいけません。

これと同じ話で、上記MyPsWin.exe実行中のキー入力は、MyPsWin.exeに入力されるのであって、pswin32.dllに入力されていないのだと思います。

pswin32.dllにキー入力するにはどうしたら、よいのでしょうか。
なお、MyPsWin.exeのプログラムの中では、pswin32.dllの関数を読みだして、そのレスポンス待ちの状態になっています。

もしpswin32.dllへのキー入力が困難でしたら、pswin32.cを書き換えて、ABORT要求を検知するようにしたいです。
私、VC得意ではないんですが、どんな手段がありますか。
MyPsWin.exeから、ABORT.TXTを作成して、pswin32.c内で、そのファイルが出来ていたら、動作を中止するということなら、私にも出来そうよう気がしますが、もっとスマートな方法あるでしょうか。

A 回答 (1件)

長文で色々書いてあるみたいだけど、ただ単にこういうこと?



1. WIndowsアプリケーション化したので標準ね入力(stdin)がありません。
2. だけどstdinからキーボード入力を受け取りたい。

2の考え方が矛盾してるんじゃないの。

私ならUSB通信プロセスとデータベース(と表示)のプロセスを分けてプロセス間通信する。
    • good
    • 0
この回答へのお礼

>WIndowsアプリケーション化したので標準入力(stdin)がありません。
私がやったことはWIndowsアプリケーション化になるですか。
そういうこと知らないんです。
長く書かないと当方の無知なことがわからなかったと思います。

>プロセス間通信
ですか。何かに書いてあったようなので、調べてみます。
レスありがとうございました。

お礼日時:2015/06/13 16:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!