主要的过程,日后操作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# – 我们可以在一个asp.net应用程序中从2个不同的数据库中获得2个不同的Oracle依赖关系 2023-11-11
- C#实现创建标签PDF文件的示例代码 2023-06-28
- C# RSA分段加解密实现方法详解 2022-11-09
- C#操作windows系统进程的方法 2023-06-08
- C# 关于爬取网站数据遇到csrf-token的分析与解决 2023-03-29
- 亲自教你实现栈及C#中Stack源码分析 2023-05-05
- C#如何给PPT中图表添加趋势线详解 2023-05-05
- C#程序员统计自己的代码行数 2022-12-01
- c# – Windows窗体设计器 – 在类前自动添加命名空间 2023-09-19
- UpdateLayeredWindow实现任意异形窗口使用详解 2023-07-04