C言語関係掲示板

過去ログ

No.949 C言語で標準入力を制御したい

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

標準入力を制御するには
投稿者---よろしゅう(2004/01/23 15:32:09)


いつも、拝見させていただいております。
よろしゅうと申すものです。

私事なのですが、今、C言語で標準入力を制御したいと考えています。
具体的には、タイピングソフトの入力をコンピュータ自身にさせてやりたいのです。
自分では、標準入力に出力するといったイメージを持っています。
人間が実際にキーボードにて、標準入力をするのと同等な処理を、
C言語にて実装することは可能なのでしょうか?
ちなみに、以下のようなコードでは、期待した答えは得られませんでした。

#include <stdio.h>
int main(void)
{
    putc('A', stdin);  //標準入力に文字Aを渡したい

    return 0;
}


環境は、UNIXまたはWindowsのどちらでもよいのですが・・・。
ご存知の方、アドバイスお願いします。

No.12076

Re:標準入力を制御するには
投稿者---たいちう(2004/01/23 16:10:02)


取っ掛かりだけ。

ダイアログにエディットボックスが1つだけあるアプリケーションを作ります。
(アプリ1)

ダイアログにエディットボックスが1つとボタンが1つあるアプリケーションを
作ります。(アプリ2)

アプリ2は、以下の機能を持たせます。

アプリ1を起動させた後でアプリ2を起動させる、または、
アプリ2からアプリ1を起動させ、アプリ2のボタンを押したときに、
アプリ2からアプリ1へエディットボックスの内容をコピーします。

ターゲットのタイピングソフトの実装にも拠るかもしれませんが、
とりあえずこの位のことはできないと先に進めません(私見)。

No.12078

Re:標準入力を制御するには
投稿者---よろしゅう(2004/01/23 16:39:26)


返信ありがとうございます。

>アプリ1を起動させた後でアプリ2を起動させる、または、
>アプリ2からアプリ1を起動させ、アプリ2のボタンを押したときに、
>アプリ2からアプリ1へエディットボックスの内容をコピーします。
この場合、アプリ2の内容をコピーするというのは、実際の標準入力とは
異なるような気がするのですが・・・。
C言語自体に、このような関数があるといいのですが、そのような関数は
聞いたことがありませんし・・・。
八方手詰まりです。

No.12081

Re:標準入力を制御するには
投稿者---たいちう(2004/01/23 17:23:41)


> この場合、アプリ2の内容をコピーするというのは、実際の標準入力とは
> 異なるような気がするのですが・・・。

もちろん違います。

> C言語自体に、このような関数があるといいのですが、そのような関数は
> 聞いたことがありませんし・・・。

ですので、環境依存です。

例えば、市販のタイピングソフト(Windows用)に対して入力したい場合、
Spy++(VisualStudioの付録)で入力の対象となるWindowを調べて、
適切なメッセージを送って入力させる方法を探すことになるでしょう。

この場合は、Windowsのメッセージの仕組みについてある程度以上
理解している必要があり、C言語の知識だけでは不可能です。
当然タイピングソフトは、アプリ1よりも遥かに複雑だと思いますので、
入力させる方法も遥かに複雑ですし、事実上不可能という可能性もあります。

No.12082

Re:標準入力を制御するには
投稿者---よろしゅう(2004/01/23 18:51:28)


>例えば、市販のタイピングソフト(Windows用)に対して入力したい場合、
>Spy++(VisualStudioの付録)で入力の対象となるWindowを調べて、
>適切なメッセージを送って入力させる方法を探すことになるでしょう。
手元に、VisualStudioがありませんが、いろいろ確認してみます。

>この場合は、Windowsのメッセージの仕組みについてある程度以上
>理解している必要があり、C言語の知識だけでは不可能です。
>当然タイピングソフトは、アプリ1よりも遥かに複雑だと思いますので、
>入力させる方法も遥かに複雑ですし、事実上不可能という可能性もあります。
キーボードを直接叩いたということを、
プログラムにて同等な処理を考えるのは、思っていた以上に難しいです。
C言語以外のアプローチでもう少し調べてみます。
特に、UNIXのシステム・インターフェースを中心に調べようと思います。
どうも、ありがとうございました。