Visual Basic 6.0での自己タスク名と起動タスク名取得方法

このQ&Aのポイント
  • Visual Basic 6.0で作成したソフト自体のタスク名と動作中のタスク名を取得する方法を教えてください。
  • MS-Basic(PC-9801用)では、作業領域の重複を考慮せずに外部記憶装置に作業領域を確保できましたが、Windowsではタスクの重複起動を前提として作業領域を割り当てる必要があります。
  • MS-BasicからVisual Basicへの移植が主体であるため、Visual Studio 6.0に含まれる言語でも結構です。移植に必要な参照情報についても教えてください。
回答を見る
  • ベストアンサー

Visual Basic 6.0における自己タスク名取得と起動タスク名取得方法

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) ソフトウェア環境 実行中のタスク で表示される内容を取得したいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.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/sdkupdate/ >PEEKで内容を見られるのは主記憶装置内常駐部分です。ですから. >ファイルがなくてもSwappable data erar, Sysvars, MCB, DPB等を直接参照しているのでファイルの有無は関係ないのですか。 >ただ主記憶装置内の名称としてIO.SYS等を使いました。 Win32では、システム保護のためにそういうところは直接触れません。DOSのシステムコールも使用できません。 それらにアクセスするにはデバイスドライバを記述する必要があります。これは、SDKではなくDDKが必要です。 >>N88-BASICからなんて無理に移植するより >MS-Basicなのですが。 失礼いたしました。PC-98と書いてあったもんでつい。 >高額な市販ライブラリを使用しているので新規購入はしたくありません。 これも移植という方法をとる大きな理由ですね。 ただ、こういうライブラリって、改変が認められるんで しょうか? 市販のライブラリで改変自由というのはあまり 聞かないのですが。移植も立派な改変ですよね? >あのSQLを最初にいじってしまったので、他のデータベースが使えなくなってしまいました。 「あのSQL」とは? すでにこの時点で意味が不明なのです。 SQLはデータベースを操作するための言語なのですが。 >しかも自作時、入力機構にエラーチェックルーチンとして >AI並の内容をいれてしまったかため、大多数の方々は >「難しくて何をしているのかわからない」状態になってしまいました。 はっきり言いまして、通常のプログラム開発では最悪のパターンですね。 自慢にはなりませんよ。

aramananto
質問者

お礼

Platform SDKの入手には失敗しました。約2週間毎日「ダウンロードを仕掛けて、朝見たら障害で切断されていた」状態でした。25MBですから順調にいったとしても3-4時間かかります、朝7時に終わったこともありました。 言語関係はウイルスの影響を受けることを避けるために、通信関係ボートを一切接続しておらず、ダウンロードしたファイルを見たら、オンラインでの使用が前提であり、あきらめました。 いろいろお世話になりました。

aramananto
質問者

補足

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

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>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の技術者なんてそこらへんにごろごろしてます。言語仕様がとっつきやすいですから。 もう一度、全体を見直すことをお勧めします。 今の状況さえ理解していただければ、どのようにするのがベストかは、見つけていただけると思いますので。

aramananto
質問者

補足

>だめだからヘルプがないと思うんですが・ それらしき内容が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の分野では今の若い方々にはかなわないとは思います。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

蛇足ですが・・・ もう少し調査された方がいいのでは? あと、すべての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を経由して行います。

aramananto
質問者

お礼

ご指摘の通り.マルチユーザーです。 マルチユーザーの場合1980年代に解決された問題が実行できるような環境にあれば.古いソースを引っ張り出して.マイクロソフト系命令に書き換えてれば.簡単に実行できるかと考えています。簡単に言えば.仮想特権ユーザーを1名作成し.スプールからのみで実行できるように設定します。作業ファイルの世代管理をつければ.シングルユーザーマルチタスクの問題はすべて解決します。ただ.例外処理をうまく作らないと.例外発生時にコミファイルが蓄積してしまいますが。それに比べて.シングルユーザーマルチタスクの場合は.取り扱いが面倒です。1980年代に作成したときは.面倒で仮想特権ユーザーを作ってしまいしました。1990年代では.シングルユーザー・シングルタスクに逃げてしまいました。この年になって昔の苦しみを味わうとは予定外でした。 >DOSとWin32を一緒にしてはいけません MS-DOSとWIndowsで名称や参照方法が異なりますが.所詮.共通語としてのJISでは.どちらもスーパーバイザーと考えられますので.同じようなものと考えています。ただWinoows用参照方法を記載されたヘルプファイルが見つかっていません。 いろいろお教えいたたきありがとうございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

自分自身はApp.Path 一覧は、WindowsAPIを使ったりWMIを使ったりで取得できます。 OSによって使用できるかは異なりますので注意してください。 APIなら http://www.galliver.co.jp/writing/msdn/msdn15/ WMIならこちら。 http://wmifun.atinfinity.net/wmisample/win32_processb.html

関連するQ&A

  • Visual Basic 6.0における起動ファイル名(絶対パス)の取得方法

    MS-dos(PC-9801用) では、Int 2f 1902(INT 23, 24を含む)等を直接参照することで command.com の所在がわかり、また、特定の作業領域を直接参照することで起動時のコマンドを取得できます。 ここから、絶対パスが取得できる場合もありますが、相対パスの使用、Path環境変数の使用等でできない場合でも起動タスクの環境変数領域を参照することで、起動タスクがどのような状態で外部記憶装置に保存されているかが参照できました。 これらは、DEF SEG, PEEK の使用を前提としていますが、Visual Basic では関係情報がありません。Visual Basic での取得方法をお知らせください。 Visual C++6 等 Visual Studio 6.0 に含まれる言語でもかまいませんが、MS-Basic からの移植が現在の主体なので、Visual Basic から参照するために必要な参照情報に関する内容もお知らせください。VC関係の場合は、ヘルプファイル名と適当なキーワードをお知らせ願えれば幸いです。

  • 仮想ファイルの作成

    PC-9801系MS-DOSでは. Config.sys に device=Ramdisk.sys (適当な指定値) と記載することで. 最大約14MBの仮想外部記憶装置を用意できました。 あるいは. INT 2F 4300, 4310 等で. 主記憶装置物理制限程度の容量の仮想ファイルを用意できました。 これらは. 主記憶装置上に存在する仮想ファイルとして利用できました。 主記憶装置上に存在するために. どのような過酷なアクセスを行おうとも. 外部記憶装置の機械部分に負担をかけることはないので. 外部記憶装置の寿命確保に大きな意義がありました。 Visual Basic 6.0 で. 主記憶装置上に仮想ファイルを作成する方法が記載されているヘルプファイル名をお教えください。 仮想ファイルは. ロールアウトされてもかまいません。ファイルサイズが3-5MBと. 現在搭載されている主記憶装置に比べて小さいので. ロールアウトによる遅延や頻繁なディスクアクセスの頻度を下げられると考えられますから。 Visual C++6 等 Visual Studio 6.0 に含まれる言語でもかまいませんが. MS-Basic からの移植が現在の主体なので. Visual Basic から参照するために必要な参照情報に関する内容もお知らせください。 VC関係の場合は、ヘルプファイル名と適当なキーワードをお知らせ願えれば幸いです。

  • Visual Basic 6.0ソフト改修について

    当時Windows 2000用にVisual Basic 6.0で開発したアプリケーションがあります。今度Windows7用に改修する話があり、当時の開発者が退職していることからその仕事が回ってきました。上司からは、まずは今の仕様のままで、Visual Studio 2010へ移植してビルドエラーが無い状態までしてくれと指示されました。自分なりに調べてアップグレードウィザードを使いながらやっていこうと思っていますが、専門書その他ネット情報等を読むとVisual Basic.NET→Visual Basic.NET 2003→Visual Basic.NET 2005→Visual Basic 2008→Visual Basic 2010と順を追って移植作業を行う事が良いようなことが書かれてた記事がありました。最も良い方法についてご経験のある方からご教示を受けたいと思い投稿しました。どなたかお教え頂けないでしょうか。宜しくお願いします。

  • 画面出力情報の取得について

    Visual Studio 2010でWindowsフォームアプリケーション(C#)を作成しています。 100ms毎に、PCの画面で出力しているある点(x,y)の色情報(RGB)を取得する、 という処理を行う場合、どのように記述すればよいでしょうか。 100ms毎にスクリーンキャプチャを取得しての処理を考えたのですが、効率的ではないように思い、 質問させていただきました。

  • マイクロソフト系簡易データベースを解説しているヘルプファイル名

    Microsoft Basic では, OPEN File18$ FOR ISAM Custbl "Nani" AS #11: '要 TYPE宣言 Custbl CREATEINDEX #11, "CuIDIdx", 0, "Siran": '重複可 インデックス名"CuIDIdex" 新規作成 SETINDEX #11, "CuIDIdx" より簡易データベースを使用できました。これらは、 cobol の sort file の雰囲気で使用してきました。 Visual Studio 6.0 の Visual Basic 文法ヘルプ(VBENLR98.CGM)内 OPEN ステートメントには,記載がありません。 マイクロソフト系簡易データベースを Visual Basic で利用するための文法を解説しているヘルプファイルはどれなのでしょうか。 それとも Professional Edition のため入っていないのでしょうか。

  • Ms-Projectについて

    MS-PROJECT(Ver2000)でタスク名を入力し、期間も入力します。この期間に日数を入れる時、土・日曜日を除いた営業日日数で、開始日・終了日を反映させたいです。この場合、タスク情報の詳細タブで、カレンダーを「休日」に指定すればできます。が、これを、1つ1つのタスク名の詳細タブで設定するのではなく、全タスク名すべてに対して、土・日を休日としたカレンダーとしたいです。どこを設定すれば、これはできるのでしょうか?

  • ディレクトリ名取得

    あるディレクトリを指定して、その下層にあるディレクトリの名前を取得するにはどのようにすればいいのでしょうか? 簡単にできる方法があれば教えてください。

  • ドメイン名取得

    ホームページを作らないとドメイン名は取得できないのでしょうか。

  • infoseekでyahooの外部メール設定をしたい

    お願いします<m(__)m> ぴったりのQ&Aを探せませんでした…重複してたらスミマセン。 先週からyahooメールがログインできなくなってしまい、問い合わせしているのですが、未だに返事をもらえず、ごみメールは溜まってしまうし、オークションもできないし緊急で困っています。 *infoseekにもyahooを外部メールで取得できるようになっているのですが、その設定をしたところ、 設定名:yahoo POPサーバ: pop.mail.yahoo.co.jp と自動で入力されます。 ID:  とパスワード:を入力するのですがyahoo infosaeek両方のIDパスワードとも違うようで設定ができません。ヘルプにも環境の違う説明でわかりません。 IE7またはFirefoxを使用しています。 よろしくお願いします。

  • (Win32)ファイルパスから物理ドライブ番号を取得するには

     任意のファイルが保存されているディスクの固有情報を取得するプログラムを作成しています。固有情報は論理ディスクでは取得できないため、「C:\sample.txt」の「C:」といった論理ドライブ名から「PHYSICALDRIVE0」のような物理ドライブ名を取得する方法を探しています。 なお開発環境はVisual C++ 2008/Win32 SDKの組み合わせとなります。

専門家に質問してみよう