Interaction.GetObject メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Interaction.GetObject メソッドの意味・解説 

Interaction.GetObject メソッド

COM コンポーネントにより得られオブジェクトへの参照返します

名前空間: Microsoft.VisualBasic
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文構文

Public Shared Function GetObject
 ( _
    <OptionalAttribute> Optional PathName As
 String = Nothing, _
    <OptionalAttribute> Optional Class
 As String = Nothing _
) As Object
Dim PathName As String
Dim Class As String
Dim returnValue As Object

returnValue = Interaction.GetObject(PathName, Class)
public static Object GetObject (
    [OptionalAttribute] string PathName,
    [OptionalAttribute] string Class
)
public:
static Object^ GetObject (
    [OptionalAttribute] String^ PathName, 
    [OptionalAttribute] String^ Class
)
public static Object GetObject (
    /** @attribute OptionalAttribute() */ String PathName, 
    /** @attribute OptionalAttribute() */ String Class
)
public static function GetObject
 (
    PathName : String, 
    Class : String
) : Object

パラメータ

PathName

省略可能。String取得するオブジェクトを含むファイルの完全パスと名前です。PathName省略した場合Class必須なります

Class

PathName指定されていない場合必須Stringオブジェクトクラスを表す文字列です。Class 引数構文指定項目次に示します

appname.objecttype

戻り値
COM コンポーネントにより得られオブジェクトへの参照返します

解説解説

詳細については、Visual Basicトピック「GetObject 関数 (Visual Basic)」を参照してください

GetObject 関数使用してファイルかCOM コンポーネントインスタンス読み込みます。次の例を使って説明します

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

このコード実行すると、指定されPathName関連付けられているアプリケーション起動し指定されファイル内のオブジェクトアクティブなります

既定動作
サブオブジェクトへのアクセス
クラス指定
オブジェクト使用

オブジェクトアクティブにした後、コード内で宣言したオブジェクト変数使用してオブジェクト参照します。前に示した例では、オブジェクト変数 drawObj使用して新しオブジェクトプロパティメソッドアクセスしています。次の例を使って説明します

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
メモメモ

オブジェクト現在のインスタンス存在している場合、または読み込まれファイル使ってオブジェクト作成する場合には、GetObject 関数使用します現在のインスタンス存在せず読み込まれファイル使ってオブジェクト実行しない場合は、CreateObject 関数 (Visual Basic) を使用します

複数インスタンス作成できない ActiveX オブジェクト場合は、CreateObject何度呼び出しても、そのオブジェクトインスタンス1 つしか作成されません。単一インスタンスオブジェクト場合長さ 0 の文字列 ("") の構文使って GetObject呼び出すと、常に同じインスタンス返されます。PathName 引数省略すると、エラー発生しますGetObject使用しても、Visual Basic作成されクラスへの参照取得できません。

セキュリティに関するメモセキュリティに関するメモ

GetObject 関数には、アンマネージ コード アクセス許可が必要です。ただし、部分的に信頼されている状況でこの許可使用すると、プログラムの実行影響を及ぼす場合あります詳細については、SecurityPermission、コード アクセス許可 の各トピック参照してください

使用例使用例

GetObject 関数使用して特定の Microsoft Excel ワークシート (excelObj) への参照取得する例を次に示しますワークシートApplication プロパティ使用してExcel表示終了その他の操作実行しますdetectExcel プロシージャでは、2 回の API 呼び出し使用して Excel探しExcel動作していればランニング オブジェクト テーブル入力しますExcel がまだ動作してない場合最初に GetObject呼び出したときにエラー発生します。この例では、excelWasNotRunning フラグTrue設定されます。GetObject への 2 回目呼び出しで、開くファイル指定しますExcel がまだ実行されていない場合2 回目呼び出しExcel起動し指定されファイル test.xls表されるワークシートへの参照返されます。このファイル指定された場所に置かれている必要がありますそうでない場合、FileNotFoundException がスローさます。次にExcel および指定されワークシートウィンドウ表示されます。

この例では遅延バインディング使用しオブジェクトObject 型の変数割り当てられるため、Option Strict Off が必要です。Visual Studio の [プロジェクト] メニューで [参照追加] ダイアログ ボックス開き、[COM] タブから Excel タイプ ライブラリへの参照追加する場合Option Strict On指定して特定のオブジェクトの種類オブジェクト宣言できます

' Declare necessary API routines.
Declare Function findWindow Lib
 "user32.dll" Alias _
    "FindWindowA" (ByVal lpClassName
 As String, _
    ByVal lpWindowName As Long)
 As Long
Declare Function sendMessage Lib
 "user32.dll" Alias _
    "SendMessageA" (ByVal hWnd
 As Long, ByVal wMsg As
 Long, _
    ByVal wParam As Long,
 ByVal lParam As Long)
 As Long
Sub getExcel()
    Dim excelObj As Object
    Dim excelWasNotRunning As Boolean
    ' Test to see if a copy of Excel is already running.
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    excelObj = GetObject(, "Excel.Application")
    If Err().Number <> 0 Then excelWasNotRunning
 = True
    Err().Clear()
    ' If Excel is running, enter it into the Running Object table.
    detectExcel()
    ' Set the object variable to refer to the file you want to use.
    excelObj = GetObject("c:\vb\test.xls")
    ' Show Excel through its Application property. Then show the
    ' window containing the file, using the Windows collection of
    ' the excelObj object reference.
    excelObj.Application.Visible = True
    excelObj.Parent.Windows(1).Visible = True
    ' Insert code to manipulate the test.xls file here.
End Sub
Sub detectExcel()
    ' Procedure detects a running Excel and registers it.
    Const WM_USER As Long
 = 1024
    Dim hWnd As Long
    ' If Excel is running, this API call returns its handle.
    hWnd = findWindow("XLMAIN", 0)
    If hWnd = 0 Then
        ' 0 means Excel is not running.
        Exit Sub
    Else
        ' Excel is running, so use the sendMessage API function
        ' to enter it in the Running Object table.
        sendMessage(hWnd, WM_USER + 18, 0, 0)
    End If
End Sub

getExcel 関数呼び出すと、Excel が既に動作しているかどうか確認するチェックが行われますExcel動作してない場合インスタンス作成されます。

セキュリティに関するメモセキュリティに関するメモ

前に示した例では、単純化のために、XLMAIN という名前のウィンドウはすべて Microsoft Excelインスタンス属していると想定してます。不正な改変などによって起動された他のオブジェクトにより、同じ名前のウィンドウ作成され場合Excel向けて送ったメッセージがすべてそのウィンドウ受け取られます。実稼働環境使用するアプリケーションでは、より厳密なテスト追加してXLMAIN本当に Excel属しているかどうか確認する必要があります

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

Interaction.GetObject メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Interaction.GetObject メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS