if csDesigning in ComponentState then // 在IDE中
else //不在IDE中

解决方案 »

  1.   

    楼上的方法不能判断程序是在Delphi IDE中执行或是脱离IDE执行吧?
    只是判断控件有没有在运行状态
      

  2.   

    以下摘自一篇文章:Delphi / C++ Builder 的 IDE 具有什么样的特征呢?自从 Delphi 1.0 开
    始,IDE 的主窗口的类名始终没有改变过,一直是 TAppBuilder ,并且,这个窗口没有子窗口。几乎所有限制控件都是用这个特征来判断当前是否是在 IDE 内部的。虽然枚举系统中的所有进程,并且判断进程文件名是否是 Delphi32.exe 也似乎可行,但是这会在程序执行的时候产生明显的延迟
    如果在程序中要查找TAppBuilder 窗口类,就必须用到 FindWindow 函数,这个函数要求传递窗口类的名字字符串...
      

  3.   

    用FindWindow也不行吧,如果人家只是打开了源代码,而程序是直接运行怎么判断?
      

  4.   

    如果这样,应该比较头痛。因为Windows提供了一些API,供调试程序Attach到指定的程序当中。所以程序本身根本不知道有没有其他程序Attach。
      

  5.   

    debughook好象可以判断,那位可以介绍一下debughook吗?