public static IntPtr GetTopDrawingHandle() { while (true) { var autocadWindowHandle = WindowController2.GetAutoCadHandle(); IntPtr mdiHandle = WindowController2.FindWindowEx(autocadWindowHandle, IntPtr.Zero, "MDIClient", null); //AutoCadのハンドルをうまくとれない時がある。その時mdiHandleがZeroになる。 if (mdiHandle == IntPtr.Zero) { continue; } var activeChildHandle = WindowController2.GetWindow(mdiHandle, GW_CHILD); if (activeChildHandle == IntPtr.Zero) { throw new AutoCadException("MDIの子ウィンドウが見つかりませんでした。"); } return(activeChildHandle); } }
public static void Create(string templateName) { var autocadHandle = WindowController2.GetAutoCadHandle(); //SendCommandだとテンプレートファイル名を入力するまで処理が帰ってこない WindowController2.PostCommand(autocadHandle, 57600); //Ctrl+NキーをAutoCADに送信し、ファイル>新規作成メニューを呼び出す //2013だと、新規図面を開くと別のプロンプトが立ち上がるが、 //開いた瞬間は以前のプロンプトからコマンドを読み取るため、 //うまく動かない。とりあえずループしてごまかす while (true) { var result = AutoCad.Status.WaitPrompt("テンプレート ファイル名を入力", "Enter template file name"); if (result == Status.EventResult.Prompted) { break; } } AutoCad.Command.SendLine(templateName); AutoCad.Status.WaitFinish(); }
public static List <IntPtr> GetDrawingHandles() { while (true) { var autocadWindowHandle = WindowController2.GetAutoCadHandle(); IntPtr mdi = FindWindowEx(autocadWindowHandle, IntPtr.Zero, "MDIClient", null); if (mdi == IntPtr.Zero) { continue; } List <IntPtr> childList = new List <IntPtr>(); IntPtr child = WindowController2.GetWindow(mdi, GW_CHILD); while (child != IntPtr.Zero) { childList.Add(child); child = WindowController2.GetWindow(child, GW_HWNDNEXT); } return(childList); } }
public static void BringAutoCadToTop() { var handle = WindowController2.GetAutoCadHandle(); WindowController2.BringWindowToTop(handle); }
//コマンド送信系の処理は、ユーザーが割り込むと処理が止まる可能性がある。 //その為、Command.Sendの直前に[Esc][Esc]を送信し、コマンド欄をクリアすることを推奨する。 /// <summary>AutoCADにコマンドを送信する</summary> private static void Send(string command) { IntPtr autoCADWindow = WindowController2.GetAutoCadHandle(); WindowController2.SendCommand(autoCADWindow, command); }