Перейти к публикации

Вызов add-in из карты данных


Рекомендованные сообщения

Доброго времени суток! При изучении данного вопроса столкнулся с такой проблемой: не получается вызвать окно сообщения/форму при нажатии по кнопке в карте данных. Пример из руководства с вызовом Add-in работает, но если я пытаюсь просто вызвать окно сообщения (Например: 

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
) то ничего не происходит. В чём может быть проблема? Код на С# ниже. В самой кнопке Имя вызываемого add-in приложения "MyButton:Title"(как в руководстве).
 

using EdmLib;
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestAddIn
{
    
    [ComVisible(true)]
    [Guid("9D17B8F8-AE3D-470B-8228-48F83F415B1D")]
    public class TestAddIn : IEdmAddIn5
    {

        public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
        {

            poInfo.mbsAddInName = "Тест";
            poInfo.mbsCompany = "Тест";
            poInfo.mbsDescription = "Тест";
            poInfo.mlAddInVersion = 1;


            poInfo.mlRequiredVersionMajor = 1;
            poInfo.mlRequiredVersionMinor = 1;

            //Notify the add-in when a file data card button is clicked
            poCmdMgr.AddHook(EdmCmdType.EdmCmd_CardButton);
        }

        public void OnCmd(ref EdmCmd poCmd, ref Array ppoData)
        {

            //Respond only to a specific button command
            //The button command to respond to begins with "MyButton:" and ends with the name of the 
            //variable to update in the card 
            if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
            {

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
            }  
        }
    }
}

 

 

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts
2 часа назад, Loginsan сказал:

то ничего не происходит

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, streamdown сказал:

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Да. Я попробовал вызвать класс с формой (См. ниже). И это работает. Но почему со стандартным окном оповещения работать не хочет я так и не понял.

if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
{

                Form1 Form = new Form1();
                Application.Run(Form);

}

Ссылка на сообщение
Поделиться на других сайтах

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

Собственно, тут проблема может быть в том, что MessageBox будет показан ЗА проводником.

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, streamdown сказал:

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

Собственно, тут проблема может быть в том, что MessageBox будет показан ЗА проводником.

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

ДотНетовский тоже пробовал. В конфиге проекта указывал Any CPU. Самое интересное, что сейчас заработали оба варианта))) (ДотНетовский и который я скидывал до этого. Магия PDM?????)

Ссылка на сообщение
Поделиться на других сайтах

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.

TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
14.05.2022 в 22:33, streamdown сказал:

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.


TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Loginsan сказал:

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Решил вопрос через poCmd.mlCurrentFolderID, но может есть какие-то изящные способы (получить путь не из БД)?

Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Loginsan сказал:

получить путь не из БД

Вся PDM - это обёртка над БД, включая API.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, streamdown сказал:

Вся PDM - это обёртка над БД, включая API.

Это я понимаю.
Большое спасибо за ответы!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



×
×
  • Создать...