プロが教える店舗&オフィスのセキュリティ対策術

Visual Basic で作成したソフト自身のタスク名と動いているタスク名の取得方法をお教えください。
MS-Basic (PC-9801用)では、シングルタスク・シングルユーザーなので、作業領域の重複を考慮することなく、適切に外部記憶装置に作業領域を確保できました。
Windows では、マルチタスク・シングルユーザーなので、タスクの重複起動を前提(入力資源が複数な為)に、外部記憶装置に作業領域を割り当てなければなりません。
移植予定が100本ちかくあるので、汎用ルーチンを作成したいのです。
MS-BAsic では、DEF SEG, PEEK 等の使用で、MSDOS.SYS内にあるMCBの先頭アドレスからMCBブロックを順次読み取ることで所有者名を取得できたのです。この機能はMS-DOS 5.0以降なのでWindowsでも可能かと思われます。

Visual C++6 等 Visual Studio 6.0 に含まれる言語でもかまいませんが. MS-Basic からの移植が現在の主体なので. Visual Basic から参照するために必要な参照情報に関する内容もお知らせください。
VC関係の場合は、ヘルプファイル名と適当なキーワードをお知らせ願えれば幸いです。

vb起動
ヘルプ(H)
バージョン情報(A)
システム情報(S)
ソフトウェア環境
実行中のタスク
で表示される内容を取得したいのです。

A 回答 (4件)

>それらしき内容が1番の方に教えていただいたアドレスをさまよって見つけた



それって私の書いたアドレスのことですか?
そんなことが書いてあった記憶はないのですが。


>SDKの内容はスーパーバイザの内容そのものです。

というか、これが普通なんですけど。WindowsSDKっていうのはOSが提供している関数等を指します。


>ただ今現、参照されていたマイクロソフトのアドレスが閉
鎖されたため在相当するライブラリ(Platform SDK)を入手できません。

なんのSDKがご所望なんですか?ここ数年のものでなければVisualStudioに全部ありますが。

ちなみにWMI SDKはないですけど。なくてもVBからは呼べますが。

ちなみにVisualStudio6.0 SP5はSDKとは関係ありません。
VisualStudio自体のバグフィックスなどです。

なお、最新のPlatform SDKはこちらです。
http://www.microsoft.com/msdownload/platformsdk/ …


>PEEKで内容を見られるのは主記憶装置内常駐部分です。ですから.
>ファイルがなくてもSwappable data erar, Sysvars, MCB, DPB等を直接参照しているのでファイルの有無は関係ないのですか。
>ただ主記憶装置内の名称としてIO.SYS等を使いました。

Win32では、システム保護のためにそういうところは直接触れません。DOSのシステムコールも使用できません。
それらにアクセスするにはデバイスドライバを記述する必要があります。これは、SDKではなくDDKが必要です。


>>N88-BASICからなんて無理に移植するより
>MS-Basicなのですが。

失礼いたしました。PC-98と書いてあったもんでつい。


>高額な市販ライブラリを使用しているので新規購入はしたくありません。

これも移植という方法をとる大きな理由ですね。
ただ、こういうライブラリって、改変が認められるんで
しょうか?
市販のライブラリで改変自由というのはあまり
聞かないのですが。移植も立派な改変ですよね?


>あのSQLを最初にいじってしまったので、他のデータベースが使えなくなってしまいました。

「あのSQL」とは?
すでにこの時点で意味が不明なのです。
SQLはデータベースを操作するための言語なのですが。


>しかも自作時、入力機構にエラーチェックルーチンとして
>AI並の内容をいれてしまったかため、大多数の方々は
>「難しくて何をしているのかわからない」状態になってしまいました。

はっきり言いまして、通常のプログラム開発では最悪のパターンですね。
自慢にはなりませんよ。

この回答への補足

SDKの所在ありがとうございます。
>VisualStudioに全部ありますが。
ヘルプファイル名がわかりませんか。

>改変が認められるんで
改変が認められるものをわざわざ購入しました。そうでもなかったらば、原報を取り寄せて自分で書いてしまいます。
>操作するための言語
SQLはデータベースのインタープリター言語としてありましたので、データベースを全部代表してSQLを使用しました。

>通常のプログラム開発では最悪のパターンです
そうです。だから、盗まれる心配も、盗用される心配もないのです。最高のソースリストに限ぎられる著作権保護方法です。
商業系では.大体作成したプログラマーが数年後残っている可能性が極端に低いので、後続者が理解できるか、に重要性がありますが(面倒ならば、同一仕様書でもう一度新規に作成しなおす)、私の場合には、自らが開発した技法の盗用を避けることに重要性を置きます。
欧米では、自分の地位を守るためにわざと障害となるルーチンを残すプログラマーが数多くいらっしゃいます。立つ鳥あとを濁さず、自分の開発した内容はきれいに消して(=就業企業に残っている技術のみを使用し、新規開発を行わないで)次の職場に向かうのが労働力の流動化を前提とした欧米の労働者です。自分の技術を企業に公開するときは、経営に参加する時です。

補足日時:2003/11/02 01:02
    • good
    • 0
この回答へのお礼

Platform SDKの入手には失敗しました。約2週間毎日「ダウンロードを仕掛けて、朝見たら障害で切断されていた」状態でした。25MBですから順調にいったとしても3-4時間かかります、朝7時に終わったこともありました。

言語関係はウイルスの影響を受けることを避けるために、通信関係ボートを一切接続しておらず、ダウンロードしたファイルを見たら、オンラインでの使用が前提であり、あきらめました。

いろいろお世話になりました。

お礼日時:2003/11/17 23:18

>MS-DOSとWIndowsで名称や参照方法が異なりますが.


>所詮.共通語としてのJISでは.どちらもスーパー
>バイザーと考えられますので.同じようなものと
>考えています。ただWinoows用参照方法を記載された
>ヘルプファイルが見つかっていません。

あのう、だめだからヘルプがないと思うんですが・・・

昔と今をごっちゃにしない方がいいですよ。


>MS-BAsic では、DEF SEG, PEEK 等の使用で、MSDOS.SYS内に

そもそも、MSDOS.SYSはWin9xではテキストファイルですし、NT系にはファイル自体ないです。

今のNT系のWindowsはDOSの資産を受け継いでません。つまりaramanantoさんが思い描いているOSとは別物です。

aramanantoさんは、DOSやBASICが主流の頃のとても優秀な技術者の方と見受けられますが、しばらくオープン系から離れていませんでしたか?

オープン系は進歩が早く、一昔前の技術は通用しません。
別件のDBだってそうです。SQLは情報処理試験のいちばん簡単な試験区分でさえ出てくる今のDBの基礎です。

>移植予定が100本ちかくあるので、汎用ルーチンを作成したいのです。

極端な話、N88-BASICからなんて無理に移植するより
作り直したほうが早く、安く出来る可能性が高いです。
VBの技術者なんてそこらへんにごろごろしてます。言語仕様がとっつきやすいですから。

もう一度、全体を見直すことをお勧めします。
今の状況さえ理解していただければ、どのようにするのがベストかは、見つけていただけると思いますので。

この回答への補足

>だめだからヘルプがないと思うんですが・
それらしき内容が1番の方に教えていただいたアドレスをさまよって見つけたSDKのヘルプに書かれていました。SDKの内容はスーパーバイザの内容そのものです。ただ今現、参照されていたマイクロソフトのアドレスが閉鎖されたため在相当するライブラリ(Platform SDK)を入手できません。
Service Pack 5に含まれている可能性を信じて現在DLしていますが、数日かかる予定です。

>NT系にはファイル自体ないです。
PEEKで内容を見られるのは主記憶装置内常駐部分です。ですから.ファイルがなくてもSwappable data erar, Sysvars, MCB, DPB等を直接参照しているのでファイルの有無は関係ないのですか。ただ主記憶装置内の名称としてIO.SYS等を使いました。

>離れていませんでしたか?
5-6年離れていました。

>N88-BASICからなんて無理に移植するより
MS-Basicなのですが。ソードからはじめた統計計算ソフトを例にあげますと、SB-5520, OKItac, OBASIC, GW-BASIC, MS-BASIC, と移植を続けてきて、あまりにも変な機能拡張(例: 無限桁関数演算等科学技術系演算、自己再起呼出を含むチェーン状タスク起動、複数ボリウムを入出力領域とする分割された巨大な問題他)を行ったが為、大多数の末端技術者方々は「難しくて何をしているのかわからない」ような状態になり、移植(同機能の新規作成を含む)を依頼できなくなりました。
また、高額な市販ライブラリを使用しているので新規購入はしたくありません。このライブラリ相当品を創れる(無限桁化等)技術者となると、数学系大学程度の学力が必要です。数学系大卒の方でプログラマーをしている方はかなり少ないのですが。

>DBの基礎です。
あのSQLを最初にいじってしまったので、他のデータベースが使えなくなってしまいました。しかも自作時、入力機構にエラーチェックルーチンとしてAI並の内容をいれてしまったかため、大多数の方々は「難しくて何をしているのかわからない」状態になってしまいました。
AI(LISP,プロローグが発表になった頃は興味を消失)を直接いじったことはありませんが、FotranとBasicで同程度の処理をしていたのは、当時在学大学内では職員を含めて数学やコンピュータとはまったく関係ない分野を専門としていた私だけです。自分の専門分野の処理でコンピュータに首を突っ込んでいました。今では年ですからAIの分野では今の若い方々にはかなわないとは思います。

補足日時:2003/10/29 23:41
    • good
    • 0

蛇足ですが・・・



もう少し調査された方がいいのでは?
あと、すべてのWindowsを一色単にするのはまずいですよ。

>Windows では、マルチタスク・シングルユーザーなので、

Win95、Win98、WinMeなどのWin9xはそのとおりですが、
WinNT4.0、Win2000、WinXPはマルチユーザです。

>MS-BAsic では、DEF SEG, PEEK 等の使用で、MSDOS.SYS内に
>あるMCBの先頭アドレスからMCBブロックを順次読み取ることで
>所有者名を取得できたのです。この機能はMS-DOS 5.0以降なので
>Windowsでも可能かと思われます。

DOSとWin32を一緒にしてはいけません。
システムコールは使用不可です。
基本的にはWindowsAPIを経由して行います。
    • good
    • 0
この回答へのお礼

ご指摘の通り.マルチユーザーです。
マルチユーザーの場合1980年代に解決された問題が実行できるような環境にあれば.古いソースを引っ張り出して.マイクロソフト系命令に書き換えてれば.簡単に実行できるかと考えています。簡単に言えば.仮想特権ユーザーを1名作成し.スプールからのみで実行できるように設定します。作業ファイルの世代管理をつければ.シングルユーザーマルチタスクの問題はすべて解決します。ただ.例外処理をうまく作らないと.例外発生時にコミファイルが蓄積してしまいますが。それに比べて.シングルユーザーマルチタスクの場合は.取り扱いが面倒です。1980年代に作成したときは.面倒で仮想特権ユーザーを作ってしまいしました。1990年代では.シングルユーザー・シングルタスクに逃げてしまいました。この年になって昔の苦しみを味わうとは予定外でした。

>DOSとWin32を一緒にしてはいけません
MS-DOSとWIndowsで名称や参照方法が異なりますが.所詮.共通語としてのJISでは.どちらもスーパーバイザーと考えられますので.同じようなものと考えています。ただWinoows用参照方法を記載されたヘルプファイルが見つかっていません。

いろいろお教えいたたきありがとうございました。

お礼日時:2003/10/23 00:07

自分自身はApp.Path



一覧は、WindowsAPIを使ったりWMIを使ったりで取得できます。

OSによって使用できるかは異なりますので注意してください。

APIなら
http://www.galliver.co.jp/writing/msdn/msdn15/

WMIならこちら。
http://wmifun.atinfinity.net/wmisample/win32_pro …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!