
長くなりますが、背景説明をします。
(前回も類似質問してますが、今回は質問点が明確になりました。)
ファイル名は、用途が分かりやすいよう仮名にします。
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内で、そのファイルが出来ていたら、動作を中止するということなら、私にも出来そうよう気がしますが、もっとスマートな方法あるでしょうか。
No.1ベストアンサー
- 回答日時:
長文で色々書いてあるみたいだけど、ただ単にこういうこと?
1. WIndowsアプリケーション化したので標準ね入力(stdin)がありません。
2. だけどstdinからキーボード入力を受け取りたい。
2の考え方が矛盾してるんじゃないの。
私ならUSB通信プロセスとデータベース(と表示)のプロセスを分けてプロセス間通信する。
>WIndowsアプリケーション化したので標準入力(stdin)がありません。
私がやったことはWIndowsアプリケーション化になるですか。
そういうこと知らないんです。
長く書かないと当方の無知なことがわからなかったと思います。
>プロセス間通信
ですか。何かに書いてあったようなので、調べてみます。
レスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
Windows PowerShellでC言語を実...
-
C#VB、exeに埋め込んだexeの実行
-
mscorlib.dllの初回例外について
-
VBがデバッグ時落ちてしまう
-
Designer.vbは直接コードをいじ...
-
vbaでPDFファイルが印刷されない
-
印刷要求順番と印刷出力順番が...
-
ManagementClassが見つからない。
-
exeファイルのアンインストール...
-
VBAで印刷スプール終了の判定を...
-
vba 時間の引き算 例えば 15:00...
-
クリレポのプリンタ設定について
-
VB6をWindows10にインストール...
-
フォームの最前面が効かない
-
2回以上PDFをコピーや印刷がで...
-
VB6上から印刷ダイアログを表示...
-
SOAP通信。恥を忍んで質問させ...
-
Windows10のVBAでDirectX 8が使...
-
windows2000 フックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel vbaから実行するexe実行...
-
Windows PowerShellでC言語を実...
-
C++初心者です。 debug asserti...
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
JP1/File Transmission Server/...
-
(msvcr71d.dll) でハンドルされ...
-
mscorlib.dllの初回例外について
-
androidで.exeを実行できますか?
-
VB6.0 exe作成時に実行時エラー...
-
VBコンソールアプリケーション...
-
ActiveDirectoryから値を取得
-
Eclipse CDT MinGWによるC言語
-
ACCESSランタイムでエラー
-
matlabで作成したdllをVBAで使...
-
VBで「ファイル名を指定して実...
-
外部exe呼び出しの方法 ShellEx...
-
VB6 EXEとプログラムの違い
-
CreateFile が ERROR_PATH_NOT_...
-
ActiveX → VB を起動するとCre...
おすすめ情報