问题描述: 

二次开发如何屏蔽一个系统自带命令?


步骤指引:

可以通过添加 DocumentLockModeChanged 反应器,在命令开始执行时判断是否为需要屏蔽的系统命令,如果是则通过 veto() 中断当前命令。

      C#

public void AddEvent() 
{
    Application.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;
}

private void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
{
    if (e.GlobalCommandName.ToLower() == "about")
    {
        e.Veto();
    }
}

      C++

class DocManReactor : public AcApDocManagerReactor
{
public:
	ACRX_DECLARE_MEMBERS(DocManReactor);

	DocManReactor() {}
	~DocManReactor() {}

    virtual void documentLockModeChanged(ZcApDocument*,
                                         ZcAp::DocLockMode myPreviousMode,
                                         ZcAp::DocLockMode myCurrentMode,
                                         ZcAp::DocLockMode currentMode,
                                         const ZTCHAR* pGlobalCmdName);
}

void DocManReactor::documentLockModeChanged(ZcApDocument *, 
                                            ZcAp::DocLockMode myPreviousMode, 
                                            ZcAp::DocLockMode myCurrentMode, 
                                            ZcAp::DocLockMode currentMode, 
                                            const ZTCHAR * pGlobalCmdName)
{
	if (StrCmpW(pGlobalCmdName, L"ABOUT") == 0) {
		veto();
	}
}


英文空间链接

★在中望CAD中如何通过二次开发程序屏蔽系统命令?https://confluence.zwcad.com/pages/viewpage.action?pageId=284952138
  • No labels