方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1722回复:6

[求助]如何在vb中运行.MBX文件?

楼主#
更多 发布于:2004-11-16 10:00
<P>各位大哥:</P>
<P>       小弟想在vb中运行.MBX文件(MapBasic的可执行文件),使用了WinExec函数和Shell函数,但是他们的参数都要是.EXE文件,所以现在正在郁闷中。请教各位高手,有什么办法可以解决。我倒是想了几个,比如将MapBasic代码编译成.EXE文件,或者先运行MapInfow.exe文件再运行自己编的.MBX……但是,具体如何实现以及其他更好的方法还是要教各位了。</P>
<P>      先谢过了。谢谢。</P>
喜欢0 评分0
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-11-18 22:01
<P>实际上想实现双击.MBX文件图标的效果</P>
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
举报 回复(0) 喜欢(0)     评分
maomaobeidi
路人甲
路人甲
  • 注册日期2004-11-21
  • 发帖数6
  • QQ
  • 铜币123枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-11-21 09:00
顶,,,,,
举报 回复(0) 喜欢(0)     评分
方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-11-21 23:36
纯水的帖子啊?
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
举报 回复(0) 喜欢(0)     评分
chinamap
路人甲
路人甲
  • 注册日期2003-11-21
  • 发帖数29
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-11-22 12:46
<img src="images/post/smile/dvbbs/em09.gif" />
踏破鞋来无觅处,得来全然不费功夫
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2004-11-22 16:33
<P>在VB应用程序里实现对另一个应用程序(MapInfo)的访问,利用前面所提到的OLE Automation技术,把MapInfo作为服务器,VB应用程序作为客户机,可以无缝地实现集成MapInfo对象于VB应用程序中。 </P><P>具体实现步骤如下: </P><P>(1)首先定义两个对象:MapInfo与theResponde,即在程序里添加两行: </P><P>Public MapInfo As Object '*创立指向MapInfo的对象 </P><P>Public theResponder As Object '*创立本地对象,MapInfo将把信息返回给它 </P><P>(2) 然后再添加一个子程序InitializeMapInfoConnection(),用于实现同MapInfo的通信。该子程序在后台创立一个用于通信的MapInfo实例;一个本地在此VB应用程序的类MIResponder的对象的实例,即用于接受MapInfo返回应用程序信息的实例。 </P><P>具体程序如下: </P><P>Public Sub InitializeMapInfoConnection() </P><P>On Error GoTo userCancelled </P><P>Set MapInfo = CreateObject("MapInfo.Application") '*创立MapInfo对象 </P><P>MapInfo.do "Set Application Window " ; Mapwin.hwnd </P><P>MapInfo.do "Set Window Info Parent " ; Mapwin.hwnd </P><P>Set theResponder = New MIResponder '*创立theResponde对象 </P><P>MapInfo.SetCallback theResponder </P><P><FONT color=#f73809 size=4>MapInfo.do "Run Application " + """" + WORKDIR + "\getarea.mbx" + """"</FONT> </P><P>MapInfo.do "Create Menu ""MapperShortcut"" ID 17 As ";"""" + "前一视图"_ + """" + " ID 1002 Calling 806, " ; """" + "改变视图" + """" + " ID 1002 Calling_ 805" </P><P>…… </P><P>thereIsAMap = False '*初始化,表示没有地图窗口 </P><P>mapWinID = 0 '*表示没有窗口 </P><P>MapInfo.runmenucommand M_TOOLS_SELECTOR '*激活MapInfo的选择工具 </P><P>Exit Sub </P><P>userCancelled: </P><P>MsgBox "系统初始化失败,请查看 MAPINFO 是否正确安装!" </P><P>End </P><P>(3) 现在MapInfo已成为VB应用程序的一个对象,因此可调用MapInfo对象的方法及设置其属性来实现对地图的复杂操作。 </P><P>具体程序(略) </P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
6楼#
发布于:2004-11-22 16:39
<b><FONT face=宋体 size=3>直接运行Mapbasic程序</FONT></b>
    有的时候,需要在二次开发中调用现成的MapBasic程序实现特定的功能,用Do方法实现如下:
    MsgString := 'Run Application " D:\MapBasic\DrawArc.MBX"';
    oleMapInfo.Do(MsgString);<B>
</B>      
举报 回复(0) 喜欢(0)     评分
游客

返回顶部