人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

先ほどMS-DOSのコマンドについて質問したものですが、私の思い違いがあったようなので改めて質問しなおします。

http://www.hatena.ne.jp/1085063318

上記質問にて、

「(MS-DOSのコマンドは)Windows用のAPIがあり、それを利用するようになっているコマンドラインのプログラムです。」

とのお答えを頂きましたが、これはつまり、WindowsエクスプローラとMS-DOSのコマンドが実質的に同じAPIを呼び出している、ということだと解釈して良いのでしょうか。

そのことを示す情報ソースも、ご存知でしたら教えて下さい。

宜しくお願い申し上げます。

●質問者: toramaru666
●カテゴリ:コンピュータ
✍キーワード:API MS-DOS Windows エクスプローラ コマンド
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● cx20
●50ポイント

http://www.dependencywalker.com/

Dependency Walker (depends.exe) Home Page

「Dependency Walker 2.1」というツールを使うと、

アプリケーションが利用しているDLL(API)の一覧を表示できます。

例えば、以下のアプリケーションをこのツールで解析してみると、

・EXPLORE.EXE(Windows Explorer)

・CMD.EXE(Windows NT Command Processor)

KERNEL32.DLL(プロセス、メモリや周辺装置を管理するAPIを含むDLL)

という DLL 利用していることがわかります。

この DLL には MoveFile() のような API を含みます。

実際には、これらの API を呼び出すことによりファイルの移動と

いった操作を行います。

http://yokohama.cool.ne.jp/chokuto/win/win32api.html

Win32 APIの何たるか

Win32 APIとは?

◎質問者からの返答

迅速なご回答ありがとうございます。

するとやはり、両者は同じプログラム(DLL)を利用しているわけですね。

それはそうと、WinAPIを利用しているということは、やはり

ご紹介いただいたツールも面白そうですね。

早速DLしてみます^^

迅速なご回答ありがとうございます。

するとやはり、両者は同じプログラム(DLL)を利用しているわけですね。

ということは、現在「MS-DOSコマンド」と呼ばれているものの実体は

かつてMS-DOS時代に使われていたコマンドとは意味的に違うものだ

ということになるわけでしょうか…うーん、奥が深いです。

ご紹介いただいたツールも面白そうですね。

早速DLしてみます^^

もう少し色々伺ってみたいので、他にも何かご存知の方、ぜひご回答を

お願いしますm(_ _)m


2 ● takasiym
●50ポイント

http://www.atmarkit.co.jp/fwin2k/operation/command001/command2.h...

連載:Windows 2000コマンドライン徹底活用 第1回 コマンド プロンプト入門 -- 1.コマンド プロンプトを使ってみる

宜しいです。

「Windowsは、こうしたコマンドライン プログラムをサポートするために、コンソール ウィンドウ関連のAPIを持っている。」

という記述から、

cmd.exeは、コンソール関連のAPI関数の組み合わせでできています。

◎質問者からの返答

ご回答ありがとうございます。

うーん、なんだかまた分からなくなってきたのですが、コマンドプロンプト上で実行されるMS-DOSのコマンド類は、cmd.exeが内包しているということでしょうか?

実をいうと、コマンドそのものは別のプログラムとして用意されていて、それをコマンドプロンプト上から呼び出している、というようなイメージを抱いていたのですが…


3 ● aki73ix
●50ポイント

http://www2.nsknet.or.jp/~azuma/w/win9501.htm

MSDOS.SYS, IO.SYS

さっきの質問に突っ込もうと思ったのですが締め切られてしまったので

多分、質問間違えていませんか?

MS-DOSはIO.SYS-MSDOS.SYSの上にありファンクションコールという機能を提供しており、Command.comはファンクションコールを利用したCUIを持ったプログラムに過ぎません。

Windows APIとMS-DOSコマンドは全く関係なくAPIが利用してるわけではなくデバイスドライバがMS-DOSファンクションコールをエミュレーションして呼び出すようになっています

Windowsエクスプローラーにはコマンド・・・というのはありませんし同じAPIというのも全然違うレベルで変な話です

もう一度、整理して質問された方がいいと思います

◎質問者からの返答

そうですね、だんだん混乱してきました(^^;

私が知りたいのは、「エクスプローラ上でファイル名変更をする時に

呼び出されるプログラム」と「コマンドプロンプト上で ren を実行した時に

実質的に動くプログラム」が同じかどうか、というレベルの話です。

あるホームページで「エクスプローラもコマンドプロンプトもどちらも

Windowsのシェルである」という記述を見て、「ということは、つまり

別の操作画面から同じ実体(プログラム)を呼び出して処理を

実現しているということ?」と考えたわけなのです。


4 ● virus
●50ポイント

http://www.microsoft.com/japan/msdn/default.asp

ご指定のページが見つかりません

url はダミーと言うか、ここにある膨大な資料を読み解けば全てわかります :-)

Windows は大きく分けると3種類あります。

Win3.1 およびそれ以前の16ビット版。Win9xとME の32ビット+16ビット混交版。NT3、NT4、2000、Xp等のNT系(32ビット版)です。

Win3.1 ではベースにMSDOSがあり、Windows API は基本的にDOSを呼び出す形で実装されています。

Win9x では基本にMSDOSがあるのは変わりませんが、Windows API のかなりな部分は、DOSと整合性を取りながら、独自の実装も行われてます(32ビット化。DOS はあくまで16ビットですから)。

NT系ではすべて独自のカーネルとして実装されており、NTカーネルで完結してます。

Windows API ですが、これはプログラムから呼び出すプログラムインターフェースであり、コマンドのように人間にわかる形にはなってません。機能も単機能です。たとえば ren に相当する機能は一つのAPI になってますが、copy はファイルをオープンして読み取り、コピー先にファイルを作成し・・・と、それぞれが一個のAPIになってます。

この中継ぎをするのが、コマンドインタープリタ(プロンプト)で、これはカーネルの一部ではありません。単なるユーザプログラムです。

これが入力した文字を解析して、どのAPIをどういう順序で呼び出せば良いかを決め、Windows の API(と言うプログラム機能(関数)) を呼び出します。

つまりコマンドプロンプトも全てWindows の機能を使っていることに変わりはありません。

直接DOSを呼び出すのは、Win9x にあるDOSモードだけです。

◎質問者からの返答

大変丁寧なご回答ありがとうございます。

なんとなく分かってきました。

実は初心者向けパソコン教室で講師をしているんですが、生徒さんから質問されてしまったんです。

自分なりにまとめなおしてみたいと思います。

ありがとうございました^^


5 ● takasiym
●50ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

上記ダミーです。

> WindowsエクスプローラとMS-DOSのコマンドが実質的に同じAPIを呼び出している、

失礼致しました。

この部分はちょっと違います。

explorer.exe(エクスプローラ)が使用しているAPIと、

cmd.exe(コマンドプロンプト)が使用しているAPIは、

いずれもWindows OSが用意しているAPI関数群のうち一部を使用しています。

しかしこの二つの同じAPI関数を使っているかどうかは、

ブラックボックスなので調べられませんでした。

すみません。

Microsoft Visual Studioにバンドルされている、

spy++でアプリケーションが呼び出している

api関数を調べることはできることはできますが、

結構大変な作業です。

「コマンドプロンプト上で実行されるMS-DOSのコマンド類」は、

基本的に全てWindowsアプリケーションです。

cmd.exeのコマンドライン上で動作するアプリケーションを「コンソールアプリ」と呼び、

Windowが開いて動作するアプリケーションを「GUIアプリ」と呼びます。

したがって、「MS-DOSのコマンド類は、cmd.exeが内包」しているわけではありません。

MS-DOSのコマンド類もWindowsアプリケーションです。

> コマンドそのものは別のプログラムとして用意されていて、それをコマンドプロンプト上から呼び出している、

そのイメージで合っています。

◎質問者からの返答

重ね重ねご回答ありがとうございます。

詳しく調べていただいて本当に助かりました。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ