我的工作應該做在啓動以下應用:隱藏父窗口,但顯示的子窗口
- 連接到使用COM軟件(AutoCAD)的外部應用程序。
- 發送消息給應用程序來運行一些DLL代碼(打開一個窗口)。
- 隱藏AutoCAD的窗口,但保持DLL的窗口可見。
我已經成功完成了前兩個步驟,但第三個給了我一些問題。
我不知道是否有可能讓子窗口可見而父窗口不可見。每當我讓孩子看到或使其成爲最頂層窗口時,AutoCAD也會變得可見。
我的目標是運行我的DLL代碼,但保持AutoCAD在後臺運行,對用戶完全不可見。 DLL必須通過AutoCAD加載,因爲它允許我使用AutoCAD的.NET接口而不是COM。
在任何情況下,我很好奇我是否有可能通過一些Windows API調用或.NET中的某些東西來實現。 PS:我不確定這個窗口關係是否真的是父母 - 孩子之間的關係。我假設它是因爲我的窗口屬於AutoCAD應用程序實例,由於DLL加載。
任何幫助,非常感謝。謝謝! :)
編輯: DLL的代碼來創建一個窗口。
//CommandMethod is an AutoCAD attribute for entering into the DLL. This code is called
//when the user attempts the command "AUTOCADCOMMANDNAME" or can be done by simulating
//the command programmatically.
[CommandMethod("AUTOCADCOMMANDNAME", CommandFlags.Session)]
public void CommandEntry()
{
MainWindow mainWin = new MainWindow();
mainWin.ShowDialog();
}
主應用程序代碼
public static void Main()
{ //Use a utility class to create a connection to AutoCAD via COM
AcadApplication acadApp = ACUtil.GetAcadInstance(out createdNewInstance);
acadApp.Visible = false;
//Irrelevant code omitted...
acadApp.ActiveDocument.SendCommand("AUTOCADCOMMANDNAME");
acadApp.Quit(); //Exit AutoCAD application
//Note: doesn't quit until mainWin closes because of ShowDialog()
}
你需要證明創建DLL中的窗口中的代碼。 –
完成,雖然窗口沒有以任何奇特的方式初始化:P –