找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 709|回复: 1

[教学]:一段关于如何在installshield检测ACAD在运行的对话。

[复制链接]
发表于 2002-5-23 02:09:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
XDSoft  说:

长清 说:
在installshield中,如何检测ACAD在运行

长清 说:
用FINDWINDOWS吗

XDSoft  说:
我没有用过

长清 说:
那你用的什么软件,wise 吗

XDSoft  说:
是秋风做的安装程序

长清 说:
哦,想起来了

XDSoft  说:
已将 Qiu Feng 添加到对话中。
  
长清 说:
QF,

长清 说:
请教一个问题:

长清 说:
在installshield中,如何检测ACAD在运行

长清 说:
用什么函数?参数在?

Qiu Feng 说:
sorry.

Qiu Feng 说:
我没有用过install shield

Qiu Feng 说:
我是用delphi写的

Qiu Feng 说:
createoleobject(..)

Qiu Feng 说:
错了

长清 说:
亲自写?

Qiu Feng 说:
getactiveoleobject

长清 说:
我不会用DELPHI

Qiu Feng 说:
如果异常,说明调用失败

Qiu Feng 说:
我是自己写的。土办法。

长清 说:
ACAD对象的名称是?

Qiu Feng 说:
估计vc中也有相应的函数吧

长清 说:
我喜欢土办法

长清 说:
越土越地道

Qiu Feng 说:
GetActiveOleObject('AutoCAD.Application')

长清 说:
跟VB一样!

Qiu Feng 说:
在vb, vba, vbs中也有类似的办法

Qiu Feng 说:
呵。

长清 说:
是否就是 AutoCAD.Application?

Qiu Feng 说:
对。

Qiu Feng 说:
如果是要确定

Qiu Feng 说:
是什么版本的话,用

Qiu Feng 说:
AutoCAD.Application.15

Qiu Feng 说:
指2000+

长清 说:


长清 说:
如果不确定版本,AutoCAD.Application行吗?

长清 说:
我不希望确定版本

Qiu Feng 说:
可以的。

Qiu Feng 说:
会用当前的版本。

长清 说:
谢谢你

Qiu Feng 说:
    // Get AutoCAD Application
    try
      acadapp:=GetActiveOleobject(AppStr);
    except
      on EOleSysError do
          AcadAlreadyRunning:=false;
    end;

    if not AcadAlreadyRunning then
      try
        AcadApp:=CreateOleObject(AppStr);
      except
        if not silent then MessageDlg(AppStr+' 没有安装。', mtInformation, [mbok], 0);
        AutoCADInstalled := false;
      end;

Qiu Feng 说:
这是我的pascal代码。

长清 说:
当前版本是什么意思,最后一次使用的吗?

长清 说:
我是说最后一次打开的

Qiu Feng 说:
是的。

Qiu Feng 说:
注册表中可以读到。

Qiu Feng 说:
有一个curver键

长清 说:
CURVER我知道,从VB启动也是这样

长清 说:
有点问题我还是想继续请教

Qiu Feng 说:


长清 说:
这是否就是按注册表来对当前版本的

Qiu Feng 说:
我不会用c语言。呵呵。

长清 说:
我也不会

Qiu Feng 说:
我没试过,

Qiu Feng 说:
想当然了

长清 说:
谢谢

长清 说:
我按你的思路在写一写

  
Qiu Feng 说:
在安装程序中调用了我的delphi程序,

Qiu Feng 说:
呵呵。

长清 说:


Qiu Feng 说:
避免在安装程序中大动。我是这么做的。

长清 说:
?

Qiu Feng 说:
我用的inno setup虽然支持pascal

Qiu Feng 说:
但对com支持不好。

长清 说:
我不懂COM

Qiu Feng 说:
所以我只好用delphi写成exe

Qiu Feng 说:
在安装程序中调用。

Qiu Feng 说:
com就是指那个activex调用。

长清 说:
其实,INSTALLSHIELD很好,我刚学不久,做了个安装程序,最后一关就是检查是否在运行.


Qiu Feng 说:
我下了个wise,装了。

Qiu Feng 说:
不清楚能不能做到。

Qiu Feng 说:
install shield能不能调用win api?

长清 说:
wise也很好,因为我刚好有一INSTALL BOOK

Qiu Feng 说:
也许findwindow之类的api可以做到。

长清 说:
没有问题 对API支持很好

Qiu Feng 说:
findwindow 一伙的

Qiu Feng 说:
好像有好几个函数

长清 说:
还支持VC6画的对话框

Qiu Feng 说:
你试试看。

Qiu Feng 说:
很好。

Qiu Feng 说:
可惜我不会vc

长清 说:
findwindow也是IS的标准函数

XDSoft  说:
Sub test()
   Dim a_app As AcadApplication
   Dim HWND_ACAD As Long
   
   On Error GoTo ERROR1
   Set a_app = GetObject(, "autocad.application")

   'Obtains the handle of AutoCAD window.
   HWND_ACAD = FindWindow(vbNullString, a_app.Caption)
   MsgBox "AutoCAD Application's handle is " & HWND_ACAD, vbInformation,
a_app.Caption
   Exit Sub

ERROR1:
If Err.Number = 429 Then
   MsgBox "Sorry, there
Qiu Feng 说:
哦。
XDSoft  说:
   MsgBox "Sorry, there is no AutoCAD session running.", vbInformation
End If
End Sub

长清 说:
XD,

Qiu Feng 说:
我可以给你完整的vbs源码。XD工具箱的连接部份最初是用vbs写的。你看看好了。

Qiu Feng 说:
不过,很土,你别笑话。呵呵。

长清 说:
谢谢你,主要是找acad这个对象

Qiu Feng 说:
收文件?

长清 说:
.
长清 说:
网络有点问题

长清 说:
你再传一次

Qiu Feng 说:
你是局哉网么?

长清 说:


长清 说:
是否是FIREWALL的问题
XDSoft  说:
   RegOpenKeyEx hKey, szBuffer, 0, KEY_ALL_ACCESS, phkResult
   
   Value = "ACADLOCATION"
   
   RetVal = RegQueryValueEx(phkResult, Value, 0, 0, dataBuff, ldataBuffSize)
   If RetVal = 0 Then
        apppath = ConvertString(dataBuff, ldataBuffSize)
        Shell (apppath & "\acad.exe")
        On Error Resume Next
        Set obj = GetObject(, "AutoCad.Application.15")
        Do
        Err.Clear
        Resume
        Loop While Err.Number = 429
        o

Qiu Feng 说:
可能。

XDSoft  说:
测试返回码是否是429
  
  您出现了暂时性的网络问题,目前已不在对话中。
  
长清 说:
我的网老断.
  
  已将 Qiu Feng 添加到对话中。
  
XDSoft  说:
   if ( NULL == ( hAcad = ::GetModuleHandle (_T("acad.exe"))))
      acutPrintf( "\nCannot get handle to AutoCAD's executable!" );

XDSoft  说:
这是VC的代码

Qiu Feng 说:
VC我不会。

XDSoft  说:
INSTALLSHEILD里面可以直接用

长清 说:
THANKS

Qiu Feng 说:
不谢

长清 说:
好了,下午比较忙,我要准备一下,再见.
Qiu Feng 说:
BB
  
  Qiu Feng 已离开对话。
  
XDSoft  说:
长清
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-6-28 11:37:03 | 显示全部楼层
我想学习用installshield,制作标准的安装程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 01:48 , Processed in 0.244663 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表