EXE - みる会図書館


検索対象: API散歩道 下
23件見つかりました。

1. API散歩道 下

物第 4 章 コモンダイアログを盗め ! 込んだり破棄したりが簡単にできる。 LoadLibrary には , すでにその DLL が マホラムズ「もちろんだとも。 LoadLibrary と FreeLibrary の API を使えば , DLL を読み ど変わらないけど。 DLL だといいことがあるのかい ? 」 「まあ , リソースを格納するだけなら , EXE でも DLL でも作る手間はほとん る方法は使われない。 EXE ではなく , DLL を使うんだ」 マホラムズ「というわけで , 普通 , ほかの EXE ファイルに入っているリソースを利用す 0 ワタソン「確かに , それはそうだなあ」 確認するには TOOLHELP の API を使わねばならず , これも面倒だ」 v ホラムズ「それに , モジュールを列挙して , どんなモジュールがメモリ上にあるかを ■ワタソン「確かに面倒だなあ」 を , いろいろな手段を使って保証しなければならないからだ」 くさい。 リソースが必要なときに EXE プログラムがメモリ上に存在すること されたりする。だからほかの EXE に含まれるリソースを扱うのは , 実は面倒 マホラムズ「このうち , EXE はユーザーの操作やプログラムの都合で起動されたり終了 ■ワタソン「もちろんさ」 マホラムズ「まず , モジュールには EXE と DLL の 2 種類がある。それはわかるね」 マホラムズ「うん , ちょっと脇道にそれるけれどこれは説明しておこう」 ほかのファイルのインスタンスハンドルってどうやって調べるの ? 」 ■ワタソン「ほかのファイルのダイアログテンプレートが利用できるのはわかったけど , ▽ホラムズ「なんだい ? 質問って」 ■ワタソン「いたのかって , それはひどいなあ」 マホラムズ「ワタソン君 , いたのか」 ■ワタソン「突然だけど質問 ! 」 「はい ! 」 いては , 以上かな。ほかのメンバについては普通の使い方と同じでいいよ」 マホラムズ「 OPENFILENAME 構造体など , コモンダイアログの API に渡す構造体につ 「わかりました ! 」 わけだ」 こまでの指定が生きる しなければならない。この値をセットして初めて , 定するために , Flags メンバに OFN_ENABLETEMPLATE という値をセット に対して , 本当に自作のダイアログテンプレートを使うんだということを指 マホラムズ「注意して扱えば怖くないさ。さて , 最後にもうひとつ。コモンダイアログ 「ややこしいですね」 さっきのインスタンスハンドルのインスタンスとは違う意味だからね」 0 ワタソン ■ワタソン「頼むよ」 ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル

2. API散歩道 下

圧縮の方法 、「オンラインソフトのたくさんある場所で探せば必ず見つかるさ。けっして マイナーなプログラムではないよ」 「でも , ほとんど誰も使ってないわけですよね , DOS や Windows の世界で は。いったい , それにどんな意味があるんですか ? 」 マホラムズ「そうだなあ。例えば LHA のコマンドなんかは , ar の流儀を汲んでいるんだ。 LHA a というコマンドだったら , ファイルの追加とかね。 ar の流儀は , こん なふうに LHA の中にも受け継がれているから , 無意味というわけじゃない と思うよ」 「わかりました。でも , 圧縮をしないアーカイバなんて , ちょっと変ですね」 ホラムズ「 LHA に慣れているとそう感じるかもしれないね。では , アーカイプしない 圧縮プログラムということならどうかな ? 」 「アーカイプしないっていうのは , どういう意味ですか ? 」 マホラムズ「つまり , 複数のファイルをひとつのファイルにまとめる機能がない圧縮プ ☆ノヾステル ☆ノヾステ丿レ ☆ / ヾステル ☆ノヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル マホラムス ログラムさ」 ■ワタソン「それなら僕にもわかるぞ。 EXPAND. EXE だ」 「なんですか , それは」 ■ワタソン「つまり , Windows に標準でついているってことね」 ら全員もっているといっても , 過言ではないくらいさ」 マホラムズ「それがあるんだ。しかも解凍プログラムに限れば , Windows のユーザーな 「そんなものがあるんですか ? 見たことありません」 くない。でも , Windows のインストーラはそんなことはやっていないだろ プログラムを起動して解凍させていたら遅くなってしまうし , そもそも美し それでもいいとして , 問題は解凍するときだ。インストーラがいちいち DOS くない。まあ , 圧縮のほうは , インストールディスクを作るときだけだから と COMPRESS. EXE は通常の DOS プログラムだから , 使い勝手はあまりよ マホラムズ「では本題に戻ろうか。 Windows ユーザーの立場から見れば , EXPAND. EXE 「はい ! わかりました」 ーカイプしないけど , 圧縮と解凍を行うプログラムというわけさ」 . EXE というプログラムだ。この EXPAND. EXE と COMPRESS. EXE は , ア ▽ホラムズ「ファイルを圧縮するほうのプログラムは , SDK に入っている COMPRESS 「わあ。それは気がつきませんでした」 という解凍プログラムがついているわけだ」 されたファイルが存在する。それを手動で解凍するために , EXPAND. EXE ているけれど , アーカイプはされていない。つまり , ファイルの数だけ圧縮 ▽ホラムズ「ご名答。 Windows のインストールディスク上のファイルはどれも圧縮され

3. API散歩道 下

第 8 章 レジストリを解剖する 住ワタソン「むむ。それは , 大胆な挑戦だな」 の上位互換ソフトを作ったんです」 「実は悪野君が , ワタソン先輩に勝つ ! といってワタソンスー ■ワタソン「どういうことか説明してくれるかい ? 」 ーパーツールが起動しなくなったんです」 ソンスーパーツールのデータファイルをダブルクリックしても , ☆パステル ☆ / ヾステ丿レ ☆ノヾステ丿レ ☆ / ヾステル ☆ノヾステル ☆ / ヾステル ☆ノヾステル ワタソンス ノヾーツール 「それで , 私のパソコンに無理やりそれをインストールしていったんです。 そのときに , もうワタソンのツールには絶対に戻れないぞ , なんていってま ■ワタソン「なんてャツだ。でも , そんなにすごいソフトだったのかい ? 」 「機能は豊富なんですけど , 操作性は悪いしバグが多くてちゃんと動かない んです」 ■ワタソン「なんだ , そうか。ちょっとホッとしたな」 「問題は , そのあとなんです。悪野君のソフトを消して , もう一度ワタソン スーパーツールをインストールしたら , 困った現象が起こったんです」 ■ワタソン「どんな現象だい ? 」 「ワタソンスーパーツールの拡張子 WST のデータファイルをファイルマネー ジャでダブルクリックしても , 消したはずの悪野君のプログラムが見つから ないっていうエラーになるんです」 ■ワタソン「再インストールするとき , ちゃんとワタソンスーパーツールの SETUP. EXE を実行したかい ? 」 「はい。もちろんです」 ■ワタソン「おかしいな。 SETUP. EXE で , WIN. INI に関連付けを設定しているんだけど なあ」 「それも確認しました。ちゃんと WIN. IN I の [ Exten s ion s ] に『 w st = wstool.exe ^. wst 』という行が入っています。なのに , ファイルマネージャか ら WST ファイルをダブルクリックすると , ワタソン先輩の WSTOOL. EXE じゃなくて , 消したはずの AKUNO. EXE が立ち上がろうとするんです。っ いでにいうと , そのダイアログで < 位置 > というボタンを押すとディレクト リを選択できるんですけど , そこで , EXE ファイルの名前は書き換えられな いんです。だから , 無理やりワタソンスーパーツールを起動することもでき いったい , どうなっているんですか ? 」 ないし・・ ■ワタソン「え ? え ? なんでだろう。おかしいなあ。まさかャツの怨念がパステル のマシンに乗り移って・・・・・・」

4. API散歩道 下

」・第 8 章 レジストリを解剖する それを起動するから実現できるものだ。つまり , 実行のほかにも拡張子に関 連付けできる項目が増えたんだ。これを管理するのが SHELL. DLL というモ ジュールだ。この SHELL. DLL という Windows3.1 からの新規モジュールカゞ レジストリを使用するように作られているわけだ」 0 設定の衝突 ! ? ■ワタソン「関連付けが SHELL. DLL の機能なのはわかった。でも , WIN. INI に書いた 関連付けの機能も , まだ使えるじゃないか。ワタソンスーパーツールは , WIN. INI にしか設定しないけど動いていたぞ」 「もしかして , どっちに設定しても動作するんですか ? 」 ☆ / ヾステ丿レ マホラムズ「パステル君 , それが正解だ」 「わーい」 ☆ / ヾステル ■ワタソン「ちょっと待ってくれよ。じゃあ , どうして AKUNO. EXE をインストールす る前は動いたのに , そのあとは動かなくなったんだい ? 」 マホラムズ「それは , WIN. INI と REG. DAT の設定が矛盾したからだよ」 ■ワタソン「矛盾って ? 」 マホラムズ「ます , ワタソンスーパーツールを最初にインストールしたときには , REG. DAT 中の WST ファイルに関する設定はなく , WIN. INI に設定されてい るだけだった。だから , WIN. INI の設定に従ってファイルマネージャが動作 していたわけだ ーーに , AKUNO. EXE をインストールした。おそらく悪野 君は , あまり Windows に詳しくないので WIN. INI のことをよく知らす , Windows3.1 の SDK のマニュアルを見ながら AKUNO. EXE を作ったのだろ う。それで , REG. DAT のほうに関連付けを設定するようにしたんだろうね」 「知識がないほうが正しいコードを書けるってこともあるんですね」 ☆ / ヾステ丿レ マホラムズ「そうとも。多少よく知っているからといって慢心していると , ひどい目に あうことがあるからね」 ■ワタソン「ホラムズは最近それで恥をかいたんだよ」 マホラムズ「うん。それがどうかしたかい ? 」 日ワタソン「あっ , ちっとも恥ずかしそうにしてない。ホラムズなんか嫌いだ ! 」 ホラムズ「さて , AKUNO. EXE をインストールした状態では , WIN. INI にも REG. DAT にも , 拡張子 WST のファイルが AKUNO. EXE への関連付けを設定されてい たはずだ。その状態であればとくに矛盾は発生しないね。そのあとパステル 君は AKUNO. EXE を削除したわけだが , 実行ファイルが消えても WIN. INI と REG. DAT の設定は残っている。そして , その状態でワタソンスーパーツ

5. API散歩道 下

レジストリの構造・ 1 。 / こんな画面は出てこないよ」 用のモードだ。普通に起動したら , 登録工デイタ ファイル旧偏集旧検索 (å) ヘルプ (d) フルバス : #calfile カレンダー . trm = trmfile げイれしンタ L she ⅱ command = ca lend ar. exe % 1 print command = calendar. exe /p % 1 . c 引 = calfile crdfile= カードファイル she Ⅱ command = cardf ⅱ e. exe % 1 print command = cardf ⅱ e. exe /p % 1 . crd = crdfi 厄 図 1 登録工デイタ ■ワタソン「そうだったのか ! 」 の名前は card FiIe だということがわかる。そして , その下の shell というノ マホラムズ「そうだね。 crdfile = Card File という設定で , crdfile というアプリケーション とがあるものね」 ■ワタソン「あ , そうか。ひとつのアプリでも , 何種類ものデータファイルを扱えるこ . じ、わないかい ? 」 ションが設定されているだろう ? こういう場合は , このほうが便利だとは マホラムズ「ほら , 下のほうを見てごらん。 TXT と INI に , 同じ txtfile というアプリケー ■ワタソン「どうしてそんなに面倒なことをするんだ」 定されている」 というアプリケーションは , 別の crdfile というノードの下に詳しい内容が設 プリケーションに関連付けられていることを示しているね。そして , crdfile マホラムズ「例えば『 . crd = crdfi 厄』は , CRD という拡張子のファイルが crdfi 厄というア いんだ ? 」 住ワタソン「なるほど。なんとなくわかってきたぞ。でもこれ , どうやって読んだらい Fi 厄という値がついているね」 いろいろな設定がぶら下がっているけれど , この crdfile というキーには card る。例えば crdfile = CardF ⅱ e という設定を見てくれたまえ。 crdfile の下に マホラムズ「ただ , それぞれのノードは , 木構造の中間のものでも値をもっことができ ☆パステル「確かに , いちばん上のフルバスはそうやって書かれていますね」 レクトリのように Y 記号で区切って記述されているのがわかるね」 ▽ホラムズ「こうやって現物を見れば , 一目瞭然だね。階層構造は , DOS の階層化ディ

6. API散歩道 下

第 3 章 危険な上書きインスト ー丿レ 「そうですね。全部 , セットアッププログラムの中でやっているように見え ます」 ・「そこで , さっきの話に戻るわけだ。実は EXPAND. EXE の解凍機能は , ほ とんどまるごと LZEXPAND. DLL というファイルの中に入っていて , API を 経由して自由にこの機能を呼び出すことができるんだ」 「え ! 本当ですか ? 」 マホラムズ「本当だとも。 Windows3.1 からは , ちゃんと SDK に A 円が書かれているか ☆ / ヾステル ☆ / ヾステ丿レ ☆ / ヾステル ☆ / ヾステル ☆ / ヾステル ☆ / ヾステ丿レ ☆ノヾステル マホラムス ☆ / ヾステル 「はい ! 」 る圧縮・解凍の機能をもった DLL が存在する」 マホラムズ「では , まとめよう。世の中には , Windows 用のインストーラから利用でき 「そうだったんですか」 ら , 胸を張って利用することができるわけだ」 「はい ! 」 ホラムズ「圧縮プログラムは , 適材適所での使い分けが必要ということだろうね」 ■ワタソン「なんだ , がっかり」 EXE は再配布可能だったけど , COMPRESS. EXE はそうじゃなかった」 マホラムズ「以前 , 僕もそう思って調べてみたんだ。でも , はずれだったよ。 EXPAND. れを一緒につけて配ればいいじゃない」 新ワタソン「でもさ , COMPRESS. EXE って , もしかして再配布可能じゃないの ? そ るような目的には適していない」 の機能は提供してくれない。だからユーザー自身が自分でファイルを圧縮す マホラムズ「 LZEXPAND. DLL は , 解凍のための機能は提供してくれるが , 圧縮のため 「なんですか ? 」 とが 1 点だけある」 マホラムズ「それから一般論でいえば , LZEXPAND. DLL では LHA に絶対に勝てないこ 「なるほど。そうですね , DLL も小さくないでしようから」 ないと思う。まあ , 実際に試してみるのがいちばんいいと思うけれど」 元々大きなファイルを扱うのでない限り , その差はそれほど大きなものでは マホラムズ「僕は , 個人的には LHA のほうが圧縮率がやや高いと思っている。けれど , 「でも , 圧縮率はどうなんですか ? LHA と比べて」 解凍機能の DLL をフロッピーディスクに同梱しなくてすむからね」 話だから , LZEXPAND. DLL を利用するといいだろう。そうすれば , 圧縮・ マホラムズ「今回のパステル君の要求だと , 少しでもファイルが少なければいいという

7. API散歩道 下

タスクをまとめて管理する API 物 ・ワタソン「なるほど」 / , 0 タスクをまとめて管理する A ■ワタソン「ふーん , そんなアプリもいつかは作ってみたいものだね」 れないわけだ」 マホラムズ「アプリの性質によっては , そういう情報を調べたい場合がないとはいいき v ホラムズ「そう。まあ要するに , タスクマネージャみたいなプログラムが簡単に組め ■ワタソン「タスクっていうのは , タスクマネージャで見えるアレのことだよね」 「それから , もちろんタスクも『渡』れる」 マホラムス ■ワタソン「嘘だあ」 マホラムズ 、ワタソン「え ? 違うって , どこが違うんだい ? 」 しつかり理解してから使わなければならない」 マホラムズ「本当のタスクは , タスクマネージャで見えるリストとは違っていることを ■ワタソン「ただし , なんだい ? 」 る API と考えていいだろう。ただし・・・・・・」 第ワタソン「うん。 IME もタスクだったとは , 驚きだなあ。勉強になるよ」 収できるし」 「たまには , こうやって中身を知るのも悪くないだろう ? 意外な知識も吸 ワタソン「これは驚いたなあ」 ホラムズ「もちろん。 IME は EXE の実行ファイルだから , タスクだよ」 ■ワタソン「じゃあ , 本当に ? 」 ルだよ。 DLL ではなくてね」 マホラムズ「だって , ほら , MS-IME なら IME の本体は MSIME. EXE という EXE ファイ の ? 」 第ワタソン「え ? あれ ? そういえば見たことがないなあ。本当に IME もタスクな があるかい ? 」 マホラムズ「 IME はタスクのひとつなんだけど , タスクリストで IME の名前を見たこと ・ワタソン「うん。最近は , MS-IME を使っているけど」 マホラムズ「じゃあ聞くけれど君も IME を使っているだろう ? 」 マホラムズ「君もよく知っている例があるよ」 ■ワタソン「見たことないよ , そんなもの」 ことさ」 リストしているけれど , 実際にはほかにもタスクが存在することがあるって ホラムズ「つまりね , タスクマネージャはウインドウの形で目に見えるタスクだけを

8. API散歩道 下

第 12 章画面に残されたメッセージ マホラムズ マホラムス ■ワタソン ■ワタソン マホラムズ 「そうだ」 ■ワタソン「ということは , メッセージがきた TICK 値と GetTickCount API で取得した 現在の TICK 値とを比較して , 一定の時間が経過していたら , セーバーを起 動させればいいわけだね ? あれ ? でも , いつ GetTickCountA 円を呼ん で調べればいいんだろう」 ホラムズ「当殀タイマを使って , 一定時間ごとに GetTickC 。 unt を呼び出して調べる 必要があるよ」 ■ワタソン「タイマも必要になるんだね」 マホラムズ「そう。でも , このあたりの機能は全部 Wind 。 ws3.1 の内部であらかじめ用意 されているんだ。自分でプログラムする必要はないよ」 ワタソン「え ? そうなの ? 」 マホラムズ「 AfterDark など , 一部の市販のスクリーンセーバーや Wind 。 ws3.0 時代に作 られたものの中には , 自分でメッセージを監視しているものもある。しかし , 最近の拡張子 SCR のスクリーンセーバーはメッセージの監視機能は含んでい ない」 ワタソン「それじゃ , どうやってスタートするタイミングを知るわけ ? 」 「一定時間入力がないと , Windows カーネルがコントロールバネルで指定さ 「え ? EXE ? DLL じゃないの ? 」 の形式になっているんだ。ただし , いくつかのルールがある点が違う」 マホラムズ「いや , そんなことはない。拡張子 SCR のモジュールは , 実は EXE ファイル ■ワタソン「そんなに難しいのかい ? 」 マホラムズ「うーん , なんて説明したらいいのかな」 「 SCR モジュールって ? 」 れた SCR モジュールを起動してくれるんだ」 でなければ駄目だ。システムはここを参照して , 本物のスクリーンセーバー マホラムズ「まず , DEF ファイルの Description の先頭は TSCRNSAVE: 』という文字列 ■ワタソン「それはいったい , どういうルールだい ? 」 ルに従わなければならない」 マホラムズ「でも , EXE さえ作れればなんでもいいというわけではないよ。多少のルー ワタソン「知らなかったなあ」 書けるんだ」 マホラムズ「そうだ。だから標準のスクリーンセーバーは , 実はいろいろな開発言語で モジュールかどうかを見抜く」 ■ワタソン「なるほど」 「それから起動されるときの引数だ。引数に /s が指定された場合はスクリー

9. API散歩道 下

第 8 章 レジストリを解剖する マホラムズ「まあまあ。説明しなきゃならないことはもっと残っているじゃないか」 ワタソン「ホラムズのケチい」 今回はやめておこう。マニュアルを読んでくれたまえ」 マホラムズ「 DDE や OLE 関係の設定だね。このあたりは説明していると長くなるから , ■ワタソン「確かに , いろんなのがあるな。ほかの設定はどんな意味なんだい ? 」 「それにしても , いろいろな設定がありますね」 これはいいことを知ったぞ。ふふふ , 改良せねば」 マネージャへのドラッグ & ドロップでの印刷機能をサポートできるわけか。 第ワタソン「そうか。ここで設定しておくと , ワタソンスーパーツールでも , プリント と , 即座にこのファイルの印刷に入るというわけさ」 つまり『 CARDFILE. EXE /p ファイル名』というコマンドラインを実行する リントマネージャへのドラッグ & ドロップで実行されるコマンドラインだ。 ァイルを開くことができるというわけだ。その下の print というノードは , プ TCARDFILE. EXE ファイル名』というコマンドラインを実行すれば , そのフ というノードで設定されている。この例では % 1 がファイル名になるから のがファイルを開く場合に使われるコマンドだ。実際の内容は command= ードのそのまた下に , 関連付け関係の設定があるわけだ。ます , open という ☆ / ヾステル トリに登録できないよ」 ■ワタソン「え ? なんだろう」 マホラムズ「レジストリを扱う API さ。これがわからないと , インストーラからレジス ■ワタソン「しまった , うつかり忘れていた。それが大事なんだ。説明を頼む」 0 レジストリ API ■ワタソン「そんな方法があるのかい ? 」 おこう」 マホラムズ「初めに , API を使わないでレジストリにデータを登録する方法を説明して マホラムズ「実は REGEDIT. EXE には , SDK にしか記述がないオプションがある。 登録工デイタのヘルプにも載っていないオプションなんだ」 ■ワタソン「いったい , どんなのかな ? 」 この マホラムズ「オプションとして /s と登録するデータを記述したテキストファイルを引数 として渡すと , REG. DAT にデータの追加をやってくれるんだ。例えば , ういうテキストファイル ( リスト 1 ) を用意して , これのファイル名を引数 にして fregedit /s ファイル名』というコマンドラインを実行させると , の内容が REG. DAT に追加されるというわけだ」

10. API散歩道 下

・リスト 1 登録工テイタで設定するテキストファイルの例 REGEDIT HKEY_CLASSES_ROOTY. bmp HKEY_CLASSES_ROOTY. msp HKEY_CLASSES ROOT \. pcx pbrush. exe HKEY_CLASSES_R00TYPBrush ペイントプラシ PBrush PBrush PBrush HKEY CLASSES R00TYPBrushYshellYprintYcommand= HKEY_CLASSES_R00TYPBrushYshe llYopenYcommand レジストリ API 、 pbrush. exe /P % 1 pbrush. exe % 1 HKEY CLASSES R00TYPBrushYprotoco 1 YStdFi I eEd i t i ngYverbY0 HKEY_CLASSES_R00TYPBrushYprotocoIYStdFi 1 eEd i t i ngYserver 編集 ■ワタソン「なるほど。でも , だね」 マホラムズ「そうだ。だから , それを説明しよう」 ■ワタソン「よしきた」 ダイナミックに設定内容を変えたいようなときには不便 これをちゃんときめ細かく扱うための A 円もあるから , ▽ホラムズ「まず , この API はプロファイル関係の API, つまり INI ファイルを扱う API には似ていない。扱い方がだいぶ異なるんだ」 ■ワタソン「というと , つまり WriteProfileString のような WriteRegistryString というの がないってこと ? 」 マホラムズ「そう。基本的に 1 対 1 で対応するような API はない。そこで , プロファイル 関係の API との違いをあげて , 説明することにしよう。まず最初に , レジス トリを扱ううえで気にとめなくてはならないのはヘッダファイルだな」 0 ワタソン「ヘッダファイルがどうかしたのかい ? 」 マホラムズ「プロファイル関係の API は WINDOWS. H に書かれているね。しかし , レジ ストリのほうは SHELLAPI. H に書かれている。プロファイル関係の API が Kernel に入っているのに対し , これらは SHELL. DLL に入っているという違 いが , ヘッダファイルの区別にまで及んでいるというわけさ」 ワタソン「ふむふむ。使うときには , WINDOWS. H だけでなく SHELLAPI. H もインク ルードしておく必要があるってことだね」 マホラムズ「そして 2 つ目の違いは , 1 個の API を呼び出すだけではデータが書けないっ てことだ。例えば WIN. INI に書きたいときには , writeprofilestring を呼び 出すだけで , ひとつのキーとデータを書くことができた。ところがレジスト リのほうは , キーをオープンして , データを読み書きして , それからクロー マホラムズ「いや , ちょっと待ってくれ。これは非常に意味深いことなんだよ。プロフ ■ワタソン「なんだか面倒だね」 ズしなければならない仕組みになっているんだ」 8