Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft das Objekt ab, das von diesem Handle dargestellt wird, oder legt dieses fest.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Property Target As Object
'Usage
Dim instance As GCHandle
Dim value As Object
value = instance.Target
instance.Target = value
public Object Target { get; set; }
public:
property Object^ Target {
Object^ get ();
void set (Object^ value);
}
/** @property */
public Object get_Target ()
/** @property */
public void set_Target (Object value)
public function get Target () : Object
public function set Target (value : Object)
Eigenschaftenwert
Das Objekt, das von diesem Handle dargestellt wird.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Das Handle wurde freigegeben oder nie initialisiert. |
Beispiel
Im folgenden Beispiel wird eine App-Klasse dargestellt, die unter Verwendung der GCHandle.Alloc-Methode ein Handle für ein verwaltetes Objekt erstellt. Dadurch wird das Erfassen des verwalteten Objekts durch den Garbage Collector verhindert. Durch einen Aufruf der EnumWindows-Methode werden ein Delegat und ein verwaltetes Objekt übergeben (beide sind als verwaltete Typen deklariert, werden jedoch nicht angezeigt), und das Handle wird in einen IntPtr umgewandelt. Die nicht verwaltete Funktion gibt den Typ als Parameter der Rückruffunktion an den Aufrufer zurück.
Imports System
Imports System.IO
Imports System.Threading
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
Public Delegate Function CallBack(ByVal handle As Integer, ByVal param As IntPtr) As Boolean
Module LibWrap
' passing managed object as LPARAM
' BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);
<DllImport("user32.dll")> _
Function EnumWindows(ByVal cb As CallBack, ByVal param As IntPtr) As Boolean
End Function
End Module 'LibWrap
Module App
Sub Main()
Run()
End Sub
<SecurityPermission(SecurityAction.Demand, UnmanagedCode:=true)> _
Sub Run()
Dim tw As TextWriter = System.Console.Out
Dim gch As GCHandle = GCHandle.Alloc(tw)
Dim cewp As CallBack
cewp = AddressOf CaptureEnumWindowsProc
' platform invoke will prevent delegate to be garbage collected
' before call ends
LibWrap.EnumWindows(cewp, GCHandle.ToIntPtr(gch))
gch.Free()
End Sub
Function CaptureEnumWindowsProc(ByVal handle As Integer, ByVal param As IntPtr) As Boolean
Dim gch As GCHandle = GCHandle.FromIntPtr(param)
Dim tw As TextWriter = CType(gch.Target, TextWriter)
tw.WriteLine(handle)
Return True
End Function
End Module
using System;
using System.IO;
using System.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Security.Permissions;
public delegate bool CallBack(int handle, IntPtr param);
public class LibWrap
{
// passing managed object as LPARAM
// BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);
[DllImport("user32.dll")]
public static extern bool EnumWindows(CallBack cb, IntPtr param);
}
public class App
{
public static void Main()
{
Run();
}
[SecurityPermission(SecurityAction.Demand, UnmanagedCode=true)]
public static void Run()
{
TextWriter tw = System.Console.Out;
GCHandle gch = GCHandle.Alloc(tw);
CallBack cewp = new CallBack(CaptureEnumWindowsProc);
// platform invoke will prevent delegate to be garbage collected
// before call ends
LibWrap.EnumWindows(cewp, GCHandle.ToIntPtr(gch));
gch.Free();
}
private static bool CaptureEnumWindowsProc(int handle, IntPtr param)
{
GCHandle gch = GCHandle.FromIntPtr(param);
TextWriter tw = (TextWriter)gch.Target;
tw.WriteLine(handle);
return true;
}
}
.NET Framework-Sicherheit
- SecurityPermission für die Verwendung von nicht verwaltetem Code. Sicherheitsaktion: LinkDemand. Zugeordnete Enumeration: SecurityPermissionFlag.UnmanagedCode
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
GCHandle-Struktur
GCHandle-Member
System.Runtime.InteropServices-Namespace
GCHandleType