GetObject(, "AutoCAD.Application.16")的问题?
我同时打开几个AutoCAD 2004的窗体, 用VB调用GetObject(, "AutoCAD.Application.16")时,怎么得到不同的AutoCAD实例,
我的问题是, 如何得到当前操作的AutoCAD应用程序对象? 默认的就是当前操作的AutoCAD应用程序对象
回复
GetObject方法无法区分每一个AutoCAD应用程序实例,用VB开发AutoCAD我感觉不方便. 那就用VBA解决,VBA没有这种问题 <P>我已经解决这个问题了,如果你会VC++的话,这很简单,如果你想用VB实现的话,代码看起来也不难,不过理解起来你可能会摸不着头的,给你个代码看看:</P>
<P>我可是抱着微软VB开发小组的Matthew Curland写的Advanced visual baisc 6英文版苦读半年的结果(结果我从英盲已经发展到可以过六级的地步了),当然下面的代码是不能运行的,要想运行就也读半年的书再说吧,这对你们有好处。看看MSDN也会对你有帮助的。</P>
<P>Private Sub Form_Load()<BR> Dim oROT As IRunningObjectTable<BR> Dim oEnmMk As IEnumMoniker<BR> Dim oMK As IMoniker<BR> Dim oBC As IBindCtx<BR> Dim lPtr As Long<BR> Dim sName As String<BR> Dim obj As Object<BR> Dim oCadApp As AcadApplication<BR> Dim j As AcadDocument<BR> <BR> Set oROT = GetRunningObjectTable<BR> Set oBC = CreateBindCtx<BR> Set oEnmMk = oROT.EnumRunning<BR> <BR> Do While oEnmMk.Next(1, oMK) = 0<BR> Set obj = oROT.GetObject(oMK)<BR> <BR> If TypeOf obj Is AcadDocument Then<BR> Set j = obj<BR> Debug.Print j.Name<BR> End If<BR> Loop<BR> <BR> Set oROT = Nothing<BR>End Sub<BR></P> <P>直接用不行,即使引用了framework也不行。</P>
<P> </P> 不用framework就可以了,我也没用过那东西 <P>大侠,你终于出现了.</P>
<P>GetRunningObjectTable</P>
<P>好像是存在于 .net <EM>frame</EM>work 中的,但是我可以得到IRunningObjectTable,IEnumMoniker 缺无法从IEnumMoniker获取IMoniker<BR></P>
<P>你这个程序对我们很重要,能否赐教一下.<BR><BR></P> VLAX类在2004中也出现这个问题了。
页:
[1]
2