-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIDispatch.cs
More file actions
75 lines (71 loc) · 3.01 KB
/
IDispatch.cs
File metadata and controls
75 lines (71 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
namespace ComAutoWrapper
{
/// <summary>
/// A szabványos COM <c>IDispatch</c> interfész alacsony szintű leképezése.
/// Lehetővé teszi késői kötésű tagelérést és típusinformációk elérését <c>ITypeInfo</c> segítségével.
/// </summary>
[ComImport]
[Guid("00020400-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IDispatch
{
/// <summary>
/// Lekérdezi, hogy a COM objektum mennyi típusinformációval rendelkezik (0 vagy 1).
/// </summary>
/// <param name="Count">A típusinformációk száma.</param>
/// <returns>HRESULT kód (0 = S_OK).</returns>
[PreserveSig]
int GetTypeInfoCount(out int Count);
/// <summary>
/// Lekéri az adott típusinformációt (<see cref="ITypeInfo"/>).
/// </summary>
/// <param name="iTInfo">A kért típusinformáció indexe (általában 0).</param>
/// <param name="lcid">A nyelvi azonosító (pl. 1033 = en-US).</param>
/// <param name="typeInfo">Az eredményül kapott <see cref="ITypeInfo"/> objektum.</param>
/// <returns>HRESULT kód (0 = S_OK).</returns>
[PreserveSig]
int GetTypeInfo(int iTInfo, int lcid, out ITypeInfo typeInfo);
/// <summary>
/// Leképezi a tagneveket diszpidhívásokhoz használható azonosítókká (<c>DispId</c>).
/// </summary>
/// <param name="riid">Mindig <see cref="Guid.Empty"/>.</param>
/// <param name="rgsNames">A lekérdezendő tagnevek tömbje.</param>
/// <param name="cNames">A nevek száma.</param>
/// <param name="lcid">A nyelvi azonosító.</param>
/// <param name="rgDispId">A visszatérő azonosítók tömbje.</param>
/// <returns>HRESULT kód (0 = S_OK).</returns>
[PreserveSig]
int GetIDsOfNames(
ref Guid riid,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)] string[] rgsNames,
int cNames,
int lcid,
[MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
/// <summary>
/// Meghív egy metódust vagy property-t a <c>DispId</c> alapján.
/// Ez az alacsony szintű belső hívás a késői kötésű COM elérés alapja.
/// </summary>
/// <param name="dispIdMember">A meghívandó tag DispId azonosítója.</param>
/// <param name="riid">Mindig <see cref="Guid.Empty"/>.</param>
/// <param name="lcid">A nyelvi azonosító.</param>
/// <param name="wFlags">A hívás típusa (<c>DISPATCH_METHOD</c>, <c>DISPATCH_PROPERTYGET</c>, stb.).</param>
/// <param name="pDispParams">A híváshoz használt paraméterek.</param>
/// <param name="pVarResult">A visszatérési érték.</param>
/// <param name="pExcepInfo">Kivételinformáció, ha hiba történik.</param>
/// <param name="pArgErr">Hibás argumentum indexek.</param>
/// <returns>HRESULT kód (0 = S_OK).</returns>
[PreserveSig]
int Invoke(
int dispIdMember,
ref Guid riid,
uint lcid,
ushort wFlags,
ref DISPPARAMS pDispParams,
out object pVarResult,
ref EXCEPINFO pExcepInfo,
IntPtr[] pArgErr);
}
}