Проблема с Interop`ом
От: _Andb_ Россия  
Дата: 17.01.06 23:50
Оценка:
Помогите plz с Interop`ом.

Есть такой интерфейс (выдран из Microsoft.VisualStudio.OLE.Interop.dll):
[ComImport, Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"), InterfaceType((short)1)]
public interface IOleCommandTarget
{
    .......
[PreserveSig,
    MethodImpl(MethodImplOptions.InternalCall,
    MethodCodeType=MethodCodeType.Runtime)]
    int Exec( // Executes a specified command or displays help for a command.
          // Pointer to unique identifier of the command group
        [In] ref Guid pguidCmdGroup,
          // Identifier of command to execute
        [In, ComAliasName("Microsoft.VisualStudio.OLE.Interop.DWORD")] uint nCmdID,
          // Options for executing the command
        [In, ComAliasName("Microsoft.VisualStudio.OLE.Interop.DWORD")] uint nCmdexecopt,
          // Pointer to input arguments
        [In] IntPtr pvaIn,
          // Pointer to command output
        [In] IntPtr pvaOut);
}

Во первых, можно ли ComAliasName("Microsoft.VisualStudio.OLE.Interop.DWORD") вообще убрать?
Во вторых мне нужно выполнить одну команду
Ее описание в MSDN:

Command group           | CGID_MSHTML ("DE4BA900-59CA-11CF-9592-444553540000")  
------------------------------------------------------------------------------
Symbolic constant       | IDM_DISABLE_EDITFOCUS_UI  (константа =2404)
------------------------------------------------------------------------------
User interface None.    | OLECMDEXECOPT_DONTPROMPTUSER (константа =2)
------------------------------------------------------------------------------
IOleCommandTarget::Exec | pvaIn VARIANT of type VT_BOOL specifying whether this feature is to be on or off. 
parameters              | pvaOut Set to NULL. 
------------------------------------------------------------------------------


т.е. должно быть что-то типо этого:
(Это для примера, в таком виде это даже не откомпилируется)
    .......
Guid G = new Guid("DE4BA900-59CA-11CF-9592-444553540000");
int result = OleCommandTarget.Exec(ref G, 2404, 2, true, null);
    .......

Вопрос в том как эту команду выполнить? (как правильно и каие параметры передать методу или как переделать Interop того интерфейса)
У меня проблема с pvaIn и pvaOut.
P.S. Или может можно это все сделать проще (Для тех кто понял что я хочу сделать)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.