北東崎鳳凰−記録帳
DiaryINDEX|past|will
| 2006年04月11日(火) |
ようやくNETSTAT -B代替程度。 |
うーむ・・・ ここまで梃子摺るとは、正直思っていませんでしたよ。 まぁ・・・行き当たりばったりで CとVBを行き来しながら、情報の質が確かでない ネット検索に頼ったりでは 進行の質もよろしくないでしょうがね。
結局出来たのは、 OSバージョン依存の netstat -b代替ルーチン くらいのものですな、今のところは。
http://ruffnex.oc.to/kenji/text/dll_inj/process.cpp このソースが プロセスID+アプリ名を入手する 最も簡素で分かりやすい例。
一方、VB6でも確認。 vbCrLf テキスト改行に入れる定数。 むー、こんな基礎知識すら忘れていたので あちこちのソースに当たる始末。これだけでも ちと時間食ったり。
http://nienie.com/~masapico/api_Process32Next.html このページに7割ほど感謝。 TH32CS_SNAPHEAPLIST = 1 TH32CS_SNAPPROCESS = 2 TH32CS_SNAPTHREAD = 4 TH32CS_SNAPMODULE = 8 辺りの数値までここに載っていなかったので こいつらはまた検索して探すことに。
http://homepage2.nifty.com/spw/tips/GetTcpTable2.html TCP状態の一覧取得(プロセスIDの取得を含むバージョン)
すぐに使えるという意味では 助かった例ですな。 BC++B5で確認 ってか このソースは BC++B5用。
VBは5より6が良いですが BC++Bは5のみ。BC++B6は知らん上に、余り評判よろしくないようで。 VS .NET系は、かなり構文が変わっているので まだ使う気無し。
あとは、 プロセス+アプリ(OSバージョン依存は無し) TCP系+プロセス(XP以降で無いと使えないらしい) にて、プロセス一致するのを比較抽出して 回線切断へと向かいます。
しかし・・・バージョン依存は出来たら無くしたかったのですが・・・ WIN98系でも、回線を扱えることは事実ですし まぁ 今の私にはそこまでの力量は無いということで 今のところは、WinXP依存でもかまわないから とっととプログラムを仕上げることですかね。
にしても・・・ EM_GETLINEやGetChatなど RICHEDIT系の操作もバージョンによって相違が有ったりと・・・ 厄介ですな。 バージョン依存を無くそうとすると、とんでもなく複雑な ソースリストを組み上げなければならなくなりそうですし・・・ ま、あとあと。今は考えるだけ野暮。
http://codezine.jp/a/article.aspx?aid=101 ここのTDIとか言うのを使おうかと思っても TDI.SYSはWIN98系には存在しません。 それに、DeviceIoControlってAPIは デバドラ開発系の話になってきます・・・ WinDDKを別に揃える必要があります。 TDI.Hで検索すればソースは当たりますが なんかそこから出てくる魑魅魍魎どもは 手に負えないので、今は一旦諦めます。
・・・、BC++B5であれこれやってみるものの 何も応答せず、失敗なのかな。 Connectかましても、0のまま(未接続) Winsockコントロールを取り込んで、そこで 色々と試していますが・・・ ローカルIP:Port リモートIP:Port exe名 プロセスID ここまで入手出来ておいて、まだ 干渉・切断に及びません。
うーん・・・。もうちょっとWinsockの基礎部分から やり直してみる必要あるのかな?
とにかく、疲れました・・・。
|