如何防止用户通过在 AutoCAD 中设置当前按钮来更改配置文件?
How to prevent user to change the profile by set current button in AutoCAD?
我有一个 WPF 应用程序,我正在从我的应用程序中打开 AutoCAD 中的绘图。我只是想限制用户使用设置当前按钮更改当前配置文件,我不想在注册表设置中更改配置文件。
我终于找到了答案,只需使用 UrrentProfileChangingEventHandler 显示弹出窗口并在 CurrentProfileChangedEventHandler 事件上激活您想要的配置文件。这是代码。
使用初始化方法
UserConfigurationManager bnb = Autodesk.AutoCAD.ApplicationServices.Core.Application.UserConfigurationManager;
bnb.CurrentProfileChanging += UserConfigManagerEvent_CurrentProfileChanging_Handler;
bnb.CurrentProfileChanged += UserConfigManagerEvent_CurrentProfileChanged_Handler;
添加调用配置文件更改事件的方法
private void UserConfigManagerEvent_CurrentProfileChanging_Handler(object sender,ProfileEventArgs e)
{
string profileName = acApp.GetSystemVariable("CPROFILE").ToString();
curProfile = e.ProfileName;
if (profileName != curProfile && !IsMessageDisplayed)
{
IsMessageDisplayed = true;
MessageBox.Show("The selected profile is not associated with Project");
}
if (string.IsNullOrEmpty(prevProfile))
{
prevProfile = profileName;
}
}
配置文件更改事件后调用
private void UserConfigManagerEvent_CurrentProfileChanged_Handler(object sender, ProfileEventArgs e)
{
AcadApplication app = (AcadApplication)Application.AcadApplication;
AcadPreferences pref = app.Preferences;
string cur = curProfile;
if (curProfile.Equals(prevProfile))
{
IsMessageDisplayed = false;
return;
}
else
{
pref.Profiles.ActiveProfile = prevProfile;
}
}
我有一个 WPF 应用程序,我正在从我的应用程序中打开 AutoCAD 中的绘图。我只是想限制用户使用设置当前按钮更改当前配置文件,我不想在注册表设置中更改配置文件。
我终于找到了答案,只需使用 UrrentProfileChangingEventHandler 显示弹出窗口并在 CurrentProfileChangedEventHandler 事件上激活您想要的配置文件。这是代码。
使用初始化方法
UserConfigurationManager bnb = Autodesk.AutoCAD.ApplicationServices.Core.Application.UserConfigurationManager;
bnb.CurrentProfileChanging += UserConfigManagerEvent_CurrentProfileChanging_Handler;
bnb.CurrentProfileChanged += UserConfigManagerEvent_CurrentProfileChanged_Handler;
添加调用配置文件更改事件的方法
private void UserConfigManagerEvent_CurrentProfileChanging_Handler(object sender,ProfileEventArgs e)
{
string profileName = acApp.GetSystemVariable("CPROFILE").ToString();
curProfile = e.ProfileName;
if (profileName != curProfile && !IsMessageDisplayed)
{
IsMessageDisplayed = true;
MessageBox.Show("The selected profile is not associated with Project");
}
if (string.IsNullOrEmpty(prevProfile))
{
prevProfile = profileName;
}
}
配置文件更改事件后调用
private void UserConfigManagerEvent_CurrentProfileChanged_Handler(object sender, ProfileEventArgs e)
{
AcadApplication app = (AcadApplication)Application.AcadApplication;
AcadPreferences pref = app.Preferences;
string cur = curProfile;
if (curProfile.Equals(prevProfile))
{
IsMessageDisplayed = false;
return;
}
else
{
pref.Profiles.ActiveProfile = prevProfile;
}
}