主要的过程,日后操作autocad lt也应该可以用此方法主要的过程,日后操作autocad lt也应该可以用此方法1 var pros = Process.GetProcessesByName(acad);2 if (pros.Length == 0)3 {4 MessageBox.Show(没有找到acad进程...
1 var pros = Process.GetProcessesByName("acad"); 2 if (pros.Length == 0) 3 { 4 MessageBox.Show("没有找到acad进程,请检查后再运行本程序!"); 5 return; 6 } 7 SendCommandToAutoCAD("_circle 0,0,0 300 ", pros.First().MainWindowHandle); 8 SetForegroundWindow(pros.First().MainWindowHandle);
导入win32的api的函数
1 [DllImport("user32.dll")] 2 public static extern bool SetForegroundWindow(IntPtr hWnd); 3 4 [DllImport("user32.dll", EntryPoint = "FindWindow")] 5 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 6 7 [DllImport("user32.dll")] 8 private static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, ref COPYDATASTRUCT lParam);
1 private struct COPYDATASTRUCT 2 { 3 public IntPtr dwData; 4 5 public int cbData; 6 7 public IntPtr lpData; 8 9 }
kean大神提供的向autocad 命令行发送命令的函数
1 private void SendCommandToAutoCAD(string toSend, IntPtr hwnd) 2 { 3 const int WM_COPYDATA = 0x4A; 4 COPYDATASTRUCT cds = new COPYDATASTRUCT(); 5 cds.dwData = new IntPtr(1); 6 string data = toSend + "\0"; 7 cds.cbData = data.Length * Marshal.SystemDefaultCharSize; 8 cds.lpData = Marshal.StringToCoTaskMemAuto(data); 9 SendMessageW(hwnd, WM_COPYDATA, IntPtr.Zero, ref cds); 10 Marshal.FreeCoTaskMem(cds.lpData); 11 }
沃梦达教程
本文标题为:c# autocad 通过进程向cad发送command
猜你喜欢
- C#中使用Microsoft Unity记录日志 2023-07-04
- c#-LuaInterface内存泄漏问题 2023-11-16
- C#通过GET/POST方式发送Http请求 2023-04-28
- WPF实现3D翻牌式倒计时特效 2023-03-10
- 解析OpenXml Pptx的边框虚线转为WPF的边框虚线问题 2023-05-12
- c#中DataTable转List的2种方法示例 2023-04-10
- WPF实现Interaction框架的Behavior扩展 2023-06-21
- C# 数组删除元素的实现示例 2023-04-27
- C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output) 2023-03-29
- 自定义WPF窗体形状的实战记录 2022-12-31