Hirdetés

2024. április 27., szombat

Gyorskeresés

Hozzászólások

(#10) pmonitor


pmonitor
aktív tag

A rotlist.c, ill. a rotlist.cs file-ok a ROT-ot listázzák ki C-ben ill. C#-ban. A kódokat több helyről bányásztam össze, meg kellett 1 kis kreativitás is hozzá. C#-ban az IDispatch-t kétféleképpen is meg lehet valósítani. Így:
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("00020400-0000-0000-C000-000000000046")]
private interface IDispatch
{
int GetTypeInfoCount();

[return: MarshalAs(UnmanagedType.Interface)]
ITypeInfo GetTypeInfo(
[In, MarshalAs(UnmanagedType.U4)] int iTInfo,
[In, MarshalAs(UnmanagedType.U4)] int lcid);

void GetIDsOfNames(
[In] ref Guid riid,
[In, MarshalAs(UnmanagedType.LPArray)] string[] rgszNames,
[In, MarshalAs(UnmanagedType.U4)] int cNames,
[In, MarshalAs(UnmanagedType.U4)] int lcid,
[Out, MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
}

vagy így:

[ComImport()]
[Guid("00020400-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IDispatch
{
[PreserveSig]
int GetTypeInfoCount(out int Count);

[PreserveSig]
int GetTypeInfo
(
[MarshalAs(UnmanagedType.U4)] int iTInfo,
[MarshalAs(UnmanagedType.U4)] int lcid,
out System.Runtime.InteropServices.ComTypes.ITypeInfo typeInfo
);

[PreserveSig]
int GetIDsOfNames
(
ref Guid riid,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]
string[] rgsNames,
int cNames,
int lcid,
[MarshalAs(UnmanagedType.LPArray)] int[] rgDispId
);

[PreserveSig]
int Invoke
(
int dispIdMember,
ref Guid riid,
uint lcid,
ushort wFlags,
ref System.Runtime.InteropServices.ComTypes.DISPPARAMS pDispParams,
out object pVarResult,
ref System.Runtime.InteropServices.ComTypes.EXCEPINFO pExcepInfo,
IntPtr[] pArgErr
);
}

Hogy melyik jobb, arról fogalmam sincs. Ha vki. tudja erre a választ, ő elmagyarázhatná. ROT bejegyzésben vannak pl. az ms office app-ok objektumai. Sajnos ha rendszergazdaként futtatjuk a kódokat, akkor nem működnek sem C-ben, sem C#-ban.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

Copyright © 2000-2024 PROHARDVER Informatikai Kft.