• 締切済み

VB6で呼び出し元の情報を取得する方法について

Win XP VB6 SP5 VB6で呼び出し元の情報を取得する方法について VB6で ・呼び出し元の関数本体が宣言されているソースのファイル名 ・呼び出し元の関数名 を取得する方法はありますでしょうか? システムログを生成する時に利用しようかと考えています。

みんなの回答

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.2

#実は、回答ではないので気が引けてますが・・・ #私自身も同じ悩みを持つ、30代会社員です。 私の場合・・・(すべてのログをとることが、あまりなくて、大切そうなとこだけなので・・) まず、ファイル毎に、Private SrcFileName = "xxxx.bas" を定義して、 ログとり関数呼び出し時に Log(SrcFileName)とやっています。 呼び出しもとの関数名も同様にできますが、面倒なのでやっていません。 おそらくCコンパイラでよくある。__LINE__、 __FILE__ マクロみたいなものを想定されているのではないか思いますが、VBでそのようなものは見当たりません。 #ここに回答を登録することで、いい方法を知ることが出来るんじゃないかと・・・、便乗させていただきます。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.1

VB6で呼び出し方がよくわからないので、別EXEをSHELL起動した場合で回答します。 SHELL起動を行う時に引数を指定あいてあげれば、呼び出されたEXEからコマンドライン関数(Command())により引数を取得できます。 詳しくは、VBのヘルプを見て下さい。 簡単な起動方法例 retVal=Shell(C:\Test.EXE Pata1 Para2..." , 1) 上記 Pata1 Para2...の所に引数を設定する。

関連するQ&A

  • VB6.0の変数、関数の定義位置から元に戻る方法はありませんか?

    VB6.0の機能についての質問です。 ソースを見ている時に変数や関数がどの位置で宣言されているか見たくなる時がありますよね?そこでShift+F2を押すと定義されて位置まで飛ぶことができます。 で、その位置からまた元に戻りたくなりますよね?その方法がわかりません。 どなたか教えてください。お願いします。

  • VB6.0のレジストリ情報取得方法

    VB6でレジストリの情報取得について、質問いたします。 VBにて、レジストリのセクション名を取得(検索して存在するなら真の値を返すだけでもよい)したいのですが、APIとか関数はあるのでしょうかまたは、出来るのでしょうか?調べた限り見つからない・・・・(-_-; 宜しくお願いします。

  • VB6でネットワークコンピュータのプロセス情報を取得したい

    VB6で、ネットワーク上の他のマシンのプロセス情報(プロセス名、CPU時間、CPU使用率等)の情報を取得したいのでプログラミング方法をご教授願います。よろしくお願いします。難しければローカルマシンの情報取得方法でも構いません。 WINDOWS:OSはXP(SP2)です。 よろしくお願いします。 以上

  • VBでブックマークを保存する方法は?

    VBでソースファイルの行にブックマークを設定しても、一旦VBを終了すると 次にVBを起動してプロジェクトを開いても 設定したブックマークは消えています。 ブックマークを保存する方法はありますか? 環境はWin98SE,VB6+SP3です。

  • VB2008 iniファイルの指定セクション内の値のみを取得

    VB2008 iniファイルの指定セクション内の値のみを取得 VB2008でiniファイルの読込みを行いたいと思っています。 指定セクション内の値のみを取得したいのですが、自分の知る限りではキー名も一緒についてきて しまいます。 簡単に値のみを取得する方法を助言いただきたいと思います。 自分が検討した一番近かった方法は、GetPrivateProfileSection関数を使用し、キー名と値を取得。 ↑ただし、キー名はいらない。 関数で出来ればいいのですが、出来なければ、プログラミングで値のみを抜き取る方法でもいいので なるべく簡単な方法を宜しくお願いします。   

  • VC++6.0からVBで作成したActiveX.DLL内の関数が呼出しできない

    VB6.0で作成したActiveX.DLLをVC++6.0(Win32SDK)側で 呼び出すプログラムを作成中です。 VB側(DLL)では問題なく作成できています。 Classに1つPublic関数を作成しただけです。 (Instancingは5MultiUseにしてあります) しかし、VC++側の呼出しでDLL内の関数が 呼び出せないのです。 LoadLibraryExでDLL自体のハンドルは取得できるのですが GetProcAddressで関数の取得時にNULLが返ってきてしまいます。 今まで試したことは ・VBからの呼出しはOK ・MFCだとOK ・SDKでもuser32.dll呼出しのサンプルは関数も実行できる です。 今からMFCへ以降するのは厳しいのでSDkでの方法を 知りたいです。 VB側が悪いのかもしれませんが、関数1つですし、 いじるところもほとんどないので多分VC++側だと 思っています。 なにか注意点とか確認するところをおしえていただければ 幸いです。 環境 Windows2000 SP3 VB6.0 SP5 VC++6.0 SP5 Win32SDK

  • VC++のDLLをVB6.0からVB.NETへ移行する方法

    はじめて投稿します。 今、現状VB6.0のプログラムで使用しているVC++のDLLを VB.NETで使用できるように、VB.NETのソースの改修をしています。 (開発環境は、VisualStudio.NET 2003) たいていのDLLは、DllImportを行うことで VB.NETから使用できることを確認しました。 /*--(例)------------------------------------------*/ Imports System.Runtime.InteropServices <DllImport("DLLTest.dll")> _ Private Shared Function DLLTestMethod() As Integer End Function /*------------------------------------------------*/ しかし、苦戦しているDLLファイルがあって、 そのソースを見ると、COMで実装されているようで、 コンパイルしたらタイプライブラリファイルが作成されています。 またDLLのレジストリも登録されているようです。 VB6.0でどう使われているか確認したところ、 そのDLLの参照設定をしていて、 "Public obj As New クラス名"でクラス宣言した後、 obj.関数名()で処理を行っています。 VB.NETでいろいろ試行錯誤してみましたが 参照設定はできるものの、その後で手詰まりになっています。 (参照設定しても、灰色になっているクラス名が存在するので 正しく設定できているかも怪しい状態) (1)----------------------------------------------- 参照設定後、オブジェクトブラウザから見えるクラスをNewして そのメンバ関数を使用する方法 -------------------------------------------------- (結果) レジストリ登録をしていないと 「CLSID{・・・}のCOMオブジェクトが有効でない」云々というエラーに。 それを受けて手動で該当するDLLのレジストリ登録を行った後だと 「オブジェクト参照がオブジェクトインスタンスに設定されません」というエラー。 (ということは、クラス生成に失敗している?) (2)----------------------------------------------- 上記のようにDllImportで実装する方法 (ちなみにそのDLLがエクスポートしている関数は DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServerの4つ) -------------------------------------------------- (結果) DllGetClassObject以外については関数を呼ぶことができている。 DllGetClassObjectは、引数設定に苦戦して今のところうまくいっていない状態。 (3)----------------------------------------------- インスタンス生成ができていないようなので どこかで調べて見つけてきたCoCreateInstance関数を使用する方法 -------------------------------------------------- (結果) これも引数に何を渡してよいかわからず試行錯誤中。 DLLの読み込みの時点でこけているかと予測して そのあたりが解決すればよいのかな・・・といろいろ試していますが WindowsプログラミングやCOMがよくわかっていないので 何が正解で何が間違っているのかさっぱりわからず、 周りに聞いても精通している人がいないためどうしようもなくなっています。 どんな些細な手がかりでもよいので 突破口になりそうなアドバイスがあれば教えてください。 よろしくお願いします。

  • VBでRegisterWindowMessage関数を利用したメッセージの取得

    ICカードのリーダにアクセスする開発ツールでコールバック関係のAPIが提供されているのですが、「メッセージ値の取得はWindows APIのRegisterWindowMessage関数を利用して行う」とマニュアルにあり、呼び元でどのようにコーディングしたらよいか知識不足の為、わかりません。。。 API開発元に照会するべき事は照会しようと考えていますが、VBにてRegisterWindowMessage関数を利用したメッセージの取得方法についてサンプル等あれば、教えてください。 (VBほとんど初心者に近い腕前です。よろしくお願いします。) 参考の為にAPIの引数を記載します。(APIはVC++及びVBにて使用可能でありマニュアル上の記載はVC++でされています。)   関数名:set_call_back_parameters 引数(in): int handle; //ハンドラ unsigned char* message_of_card_find;     //カード認識時送信メッセージ unsigned char* message_of_card_loss;    //カード認識NG送信メッセージ unsigned long inerval;    //認識行う間隔 ミリ秒 unsigned long retry_count    //リトライカウント値 回数  ※引数のうちhandleがメッセージ値取得に関連していると思われるのですが、何をセットするのかわかりません。 (API開発元に照会すべき事であればそうします。)

  • VB.NET DLL【API関数(コールバック関数)】の呼び出し方法について

    目的は下記(3)のAPI関数をVB.NETで呼び出したいのですが、そこにいきつくまでにいろいろと壁にぶちあたっております。 (1)API関数をVB.NETから利用するにあたって どのような手順および調査・学習すればVB.NETからWin32 APIを独力で呼び出せるようになるのでしょうか?ネット上に情報が乏しく、いきずまっております。 (2)API関数の調査方法、またコールバック関数について 下記(a),(b)のようにWin32 API関数を宣言して、あとは呼び出し側の関数で(a),(b)で宣言したAPI関数を記述するだけで基本的には使用できるようになるという大まかなイメージはつかめております。 このあとでAPI関数をMSDNで調べると引数がHWNDやPCTSTRなど見慣れないものが出てきて、次のURL(http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html)を見ると、APIの型とVB.NETの型は違うので型変換をしなければならないとあります。またさらに私が呼び出したい関数はコールバック関数なるものでこれまた?な状態です。 そこでAPIとVB.NETの型変換の調査方法およびコールバック関数の利用方法などを教えていただけないでしょうか? (a)DllImport属性を利用する方法 <System.Runtime.InteropServices.DllImport("DLL名")> _ Function API関数名(仮引数) End Function (b)Declareステートメントを利用する方法 Declare Function API関数名 Lib "DLL名" (仮引数) (3)InstallHinfSection関数(http://msdn2.microsoft.com/en-us/library/aa376957.aspx)について 下記のコードを実行したのですが、実行時エラーにはならないのですが、APIの関数が動作してくれません。どこが悪いのかがまったく見当がつかないのですがどなたかアドバイスいただけると助かります。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click InstallHinfSection(Nothing, Nothing, "DefaultInstall 132 C:\INF_TEST\Original.inf", 0) End Sub   Declare Function InstallHinfSection Lib "setupapi" Alias "InstallHinfSection" (ByVal hwnd As String, ByVal ModuleHandle As String, ByVal CmdLineBuffer As String, ByVal nCmdShow As Integer) As Long APIが難しすぎていろいろとおかしなことを書いているかもしれませんが、どうぞよろしくお願いいたします。

  • VBでExcel上PictureBoxダブルクリックイベントを取得したい

    VBでOpenしたExcelシート上にあるPictureBoxをダブルクリックした際に発生するイベントを取得したいと思っております。 ExcelVBAでは普通にPictureeBox_DblClick()で取得できますがVBで取得する場合はPictureBoxオブジェクトをどの様に取得・宣言し、プロシージャ名はどの様に書いたらよいのでしょうか。教えて下さい。お願いします。

専門家に質問してみよう