C言語関係掲示板

過去ログ

No.1108 キーのBIOS操作

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

キーのBIOS操作
投稿者---kolona(2004/05/23 06:20:05)


C言語歴は3年ですがあまり上達しない初級者です
かなり機種依存な質問です

使っているコンパイラはBorland c++ compilar5.5
およびC++Builder 6.0です
環境はWin XPとMe
NECのLavieシリーズのノートパソコン
です

キーロガーの真似事のプログラムを作ろうとしていましたが、ちょうどいい関数がなく、googleって見ると、どうもBIOSの操作が必要だとわかりました。とりあえずやりたいことはメモ帳等の別のアプリケーションに対して入力されたキーをこのプログラムの画面にも表示さる事です。
以下の関数をネットで見つけたのですが、関数"intdos"やら"int86"はコンパイラ付属でないらしくincludeディレクトリ内のヘッダファイルのいずれにも記述されていませんでした。コンパイルすると27個のエラーが出てしまいます。BCCで代替関数や別の記述、別の方法を知っていたら教えてください。


#include<dos.h>
#include<conio.h>
#include <direct.h>

int bioskey(int scanno){

union REGS inregs,outregs;
  
inregs.h.ah=4;
inregs.h.al=scanno;
int86(24,&inregs,&outregs);
return outregs.h.ah;
}

void keyclear(void){

union REGS inregs,outrefgs;

inregs.x.ax=0x0c00;
intdos(&inregs,&outregs);
}





No.1803

Re:キーのBIOS操作
投稿者---RAPT(2004/05/23 10:18:54)


Google 検索: intdos int86で調べたところ、どうやら
#include <dos.h>
が必要なようです。
DOS Function CallのC言語からの使い方

BCCは持っていないので知りませんが、VC++6にはこのヘッダファイルがありました。
ただし、WindowsNT系で動くかどうかは分かりませんが。
# Windows9X系なら動くでしょうけど。まぁ、検証してみてください。



No.1805

Re:キーのBIOS操作
投稿者---kolona(2004/05/23 12:49:00)


><pre><a href="http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&safe=off&q=intdos+int86&lr=lang_ja" title="Google 検索: intdos int86へ">Google 検索: intdos int86</a>で調べたところ、どうやら
#include <dos.h>
が必要なようです。
<a href="http://www2.muroran-it.ac.jp/circle/mpc/old/pc98dos/dos/dosinit.html" title="DOS Function CallのC言語からの使い方へ">DOS Function CallのC言語からの使い方</a>

BCCは持っていないので知りませんが、VC++6にはこのヘッダファイルがありました。
ただし、WindowsNT系で動くかどうかは分かりませんが。
# Windows9X系なら動くでしょうけど。まぁ、検証してみてください。
</pre>

早々のご返答ありがとうございます。

RAPT様、dos.h の内容を見たところ int86 ,intdos,等の関数のプロトタイプはなく、includeしてコンパイルしてもやはり関数が見つからないようです。

おでん様、言われたところを調べてみます。turbo Cには"int86"はあったようなのでそのヘルプファイルは調べてみる価値はありそうです。


No.1806

Re:キーのBIOS操作
投稿者---おでん(2004/05/23 14:13:22)


>
>おでん様、言われたところを調べてみます。turbo Cには"int86"はあったようなのでそのヘルプファイルは調べてみる価値はありそうです。

現在使われているWindowsは、基本的にint86等の
ソフトウエア割り込みは許していません。
9x系は16ビットアプリを引きずっているので、たまたま使えるだけ・・・

turbo Cは、DOS環境が前提なのでそういった機能があります。
もしどうしてもソフトウエア割り込みで処理する必要があったら
ドライバを書かなくてはなりませんが・・・

#Windowsのイベントハンドラを使うほうが楽かも

p.s.
C++BuilderのVCLには、OnKeyPress(?)だったかな? の
キーイベントに対応したライブラリが有ったと思いますが?
・・・コンソールアプリで使えるかどうかは不明・・・




No.1808

Re:キーのBIOS操作
投稿者---kolona(2004/05/23 16:31:39)



>現在使われているWindowsは、基本的にint86等の
>ソフトウエア割り込みは許していません。
>9x系は16ビットアプリを引きずっているので、たまたま使えるだけ・・・
>
>turbo Cは、DOS環境が前提なのでそういった機能があります。
>もしどうしてもソフトウエア割り込みで処理する必要があったら
>ドライバを書かなくてはなりませんが・・・
>
>#Windowsのイベントハンドラを使うほうが楽かも
>
>p.s.
> C++BuilderのVCLには、OnKeyPress(?)だったかな? の
>キーイベントに対応したライブラリが有ったと思いますが?
>・・・コンソールアプリで使えるかどうかは不明・・・
>


どうもありがとうございます。ドライバなんて書けないです。そういう理由でBorlandは対応しなくなったのですね。コンソールで無理ならC++Builderでいってみます。



No.1804

Re:キーのBIOS操作
投稿者---おでん(2004/05/23 11:39:50)


>C言語歴は3年ですがあまり上達しない初級者です
>かなり機種依存な質問です
>
>使っているコンパイラはBorland c++ compilar5.5
>およびC++Builder 6.0です
>環境はWin XPとMe
>NECのLavieシリーズのノートパソコン
>です
>
>キーロガーの真似事のプログラムを作ろうとしていましたが、ちょうどいい関数がなく、googleって見ると、どうもBIOSの操作が必要だとわかりました。とりあえずやりたいことはメモ帳等の別のアプリケーションに対して入力されたキーをこのプログラムの画面にも表示さる事です。
>以下の関数をネットで見つけたのですが、関数"intdos"やら"int86"はコンパイラ付属でないらしくincludeディレクトリ内のヘッダファイルのいずれにも記述されていませんでした。コンパイルすると27個のエラーが出てしまいます。BCCで代替関数や別の記述、別の方法を知っていたら教えてください。


下記サイトに、BCBのメーリングリストのログがあります。
その辺で、検索されてはどうでしょうか?
・・・ソフトウエア割り込み(intxx)は無理だと思いますが。
何か方法が有るかもしれません。
http://www2.big.or.jp/~osamu/Delphi/

また、C++BuilderのCD−ROMの中にWindowsAPIの日本語ヘルプ
ファイル(かなり古い)も有ったと思いますので「キーボード入力」
等をキーワードにして確認されてはどうでしょうか?
・英語版なら「MS SDK ヘルプファイル」としてインストールされている
はずですから、その中の[Microsoft Win32 Programmer's Reference]で
"Keyboard"を検索してみてください。



No.1811

Re:キーのBIOS操作
投稿者---nop(2004/05/23 23:28:41)


>関数"intdos"やら"int86"は

これらはPC-98シリーズ全盛期のDOSのファンクションコールを使用するためのものでは?

>とりあえずやりたいことはメモ帳等の別のアプリケーションに対して入力されたキーをこのプログラムの画面にも表示さる事です。

この手のソフトを作りたいなら、Windowsのキーボードフックを使ってみてはどうでしょう?


No.1814

Re:キーのBIOS操作
投稿者---シャノン(2004/05/24 06:35:51)


>この手のソフトを作りたいなら、Windowsのキーボードフックを使ってみてはどうでしょう?

なかなか難問ですねぇ;
とりあえずキーフックのサンプル置いときますね。

http://www.kumei.ne.jp/c_lang/
http://www.kumei.ne.jp/c_lang/sdk2/sdk_160.htm
http://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm

http://www.kab-studio.biz/
http://www.kab-studio.biz/Programing/Codian/
DLL・フックの項

このへんでいかがでしょう


No.1827

Re:キーのBIOS操作
投稿者---kolona(2004/05/24 18:48:40)


>>この手のソフトを作りたいなら、Windowsのキーボードフックを使ってみてはどうでしょう?
>
>なかなか難問ですねぇ;
>とりあえずキーフックのサンプル置いときますね。
>

nop様、シャノン様、情報ありがとうございます。
皆さん色々と詳しいですね。
フックというものを初めて知りました。説明は結構難しそうですが、実験しながらやってみます。