天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 54|回复: 0

使用 Microsoft UI 自动化刷新外部引用调色板‎

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]// Add reference to UIAutomationClient.dll  
// and UIAutomationTypes.dll
using  System.Windows.Automation;
using  System.Diagnostics;
using  System.Runtime.InteropServices;

using  Autodesk.AutoCAD.Runtime;
using  Autodesk.AutoCAD.EditorInput;
using  Autodesk.AutoCAD.DatabaseServices;
using  Autodesk.AutoCAD.ApplicationServices;


// Based on http://www.pinvoke.net
// /default.aspx/user32/SendInput.html
// /default.aspx/Structures/MOUSEINPUT.html
// /default.aspx/user32/mouse_event.html

[DllImport("user32.dll" , SetLastError = true )]
static  extern  uint SendInput(uint nInputs,
        INPUT[] pInputs, int  cbSize);

[StructLayout(LayoutKind.Sequential)]
internal  struct  MOUSEINPUT
{
     public  int  dx;
     public  int  dy;
     public  uint mouseData;
     public  uint dwFlags;
     public  uint time;
     public  IntPtr dwExtraInfo;
}

[StructLayout(LayoutKind.Sequential)]
internal  struct  INPUT
{
     public  int  type;
     public  MOUSEINPUT mi;
     public  INPUT(uint flag)
     {
         type = 0; // Mouse input
         mi.dx = 0;
         mi.dy = 0;
         mi.mouseData = 0;
         mi.time = 0;
         mi.dwExtraInfo = IntPtr.Zero;
         mi.dwFlags = flag;
     }
}
         
private  const  int  MOUSEEVENTF_LEFTDOWN = 0x0002;
private  const  int  MOUSEEVENTF_LEFTUP = 0x0004;

[CommandMethod("XRefPalRefresh" )]
public  void  XRefPalRefresh()
{
     Editor ed =
                Application.DocumentManager.MdiActiveDocument.Editor;
     try
     {
         System.Diagnostics.Process p
                        = Process.GetCurrentProcess();
         AutomationElement acadAutoElem =
                        AutomationElement.RootElement.FindFirst(
                        TreeScope.Children,
             new  PropertyCondition(
                        AutomationElement.ProcessIdProperty, p.Id));

         // Control Id retreived for the Refresh button  
                // in AutoCAD 2016 using Spy++
         string btnRefreshhexID = "000075FB" ;
         string btnRefreshdecimalID =
                        System.Convert.ToInt32(btnRefreshhexID, 16)
                        .ToString();
         AutomationElement refreshBtnAutoElem
                        = acadAutoElem.FindFirst(
             TreeScope.Descendants,
             new  PropertyCondition(
                        AutomationElement.AutomationIdProperty,
                        btnRefreshdecimalID));

         if  (refreshBtnAutoElem == null)
         {
             ed.WriteMessage("Refresh button in  
                                External References
                                palette was not identified !");
             return ;
         }
                 
         // Using UI's Invoke pattern
         // Does work for simple buttons but not for  
                // the Refresh button in  
         //'s external references palette.
         //InvokePattern ipClickRefreshBtn =  
                // (InvokePattern)refreshBtnAutoElem.GetCurrentPattern
                // (InvokePattern.Pattern);
         //ipClickRefreshBtn.Invoke();

         //'s resort to clicking by location.
         System.Windows.Point point
                        = refreshBtnAutoElem.GetClickablePoint();
         System.Windows.Forms.Cursor.Position
             = new  System.Drawing.Point(
                        (int )point.X, (int )point.Y);

         INPUT input1 = new  INPUT(MOUSEEVENTF_LEFTDOWN);
         INPUT input2 = new  INPUT(MOUSEEVENTF_LEFTUP);
         SendInput(2, new [] { input1, input2 },
                        Marshal.SizeOf(typeof(INPUT)));
     }
     catch  (System.Exception ex)
     {
         ed.WriteMessage(ex.Message);
     }
}


https://adndevblog.typepad.com/autocad/balaji-ramamoorthy/page/2/[/code]

 

 

 

 

使用 Microsoft UI 自动化刷新外部引用调色板‎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:25 , Processed in 0.161989 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表