AutoCAD 2010简体中文免激活版 绿色精简版

下载:ftp://www.cadgj.com/autocad2010_jjb.rar

 本精简版只支持32位操作系统,64位操作系统,将在后续推出

AutoCAD 2010官方中文版于2009年3月23日发布 ,最新版本的AutoCAD中引入了全新功能,其中包括自由形式的设计工具,参数化绘图,并加强PDF格式的支持。
  > 参数化绘图功能通过基于设计意图的约束图形对象能极大地提高你的工作效率。几何及尺寸约束能够让对象间的特定的关系和尺寸保持不变,即使它们被改变!
  > 动态块对几何及尺寸约束的支持,让你能够基于块属性表来驱动块尺寸,甚至在不保存或退出块编辑器的情况下测试块。
  > 光滑网线工具能够让你创建自由形式和流畅的3D模型。
  > 子对象选择过滤器可以限制子对象选择为面、边或顶点。
  > PDF输出提供了灵活、高质量的输出。把TureType字体输出为文本而不是图片,定义包括层信息在内的混合选项,并可以自动预览输出的PDF。
  > PDF覆盖是AutoCAD2010中最受用户期待的功能。你可以通过与附加其它的外部参照如DWG、DWF、DGN及图形文件一样的方式,在AutoCAD图形中附加一个PDF文件。你甚至可以利用熟悉的对象捕捉来捕捉PDF文件中几何体的关键点。
  > 填充变得更加强大和灵活,你能够夹点编辑非关联填充对象。
  > 初始安装能够让你很容易地按照你的需求定义AutoCAD环境。你定义的设置会自动保存到一个自定义工作空间。
  > 应用程序菜单(位于AutoCAD窗口的左上角)变得更加有效,可以更加容易地访问工具。
  > Ribbon功能升级了,对工具的访问变得更加灵活和方便。这个功能被投票为AutoCAD 2010 beta测试人员最喜欢的功能之一。
  > 快速访问工具栏的功能增强了,提供了更多的功能。
  > 多引线提供了更多的灵活性,它能让你对多引线的不同部分设置属性,对多引线的样式设置垂直附件,还有更多!
  > 查找和替换功能使你能够缩放到一个高亮的文本对象,可以快速创建包含高亮对象的选择集。
  > 新功能研习已经升级,包含了AutoCAD 2010的新功能。
  > 尺寸功能增强了,提供了更多对尺寸文本的显示和位置的控制功能。
  > 颜色选择可以在AutoCAD颜色索引器里更容易被看到,你甚至可以在层下拉列表中直接改变层的颜色。
  > 测量工具使你能够测量所选对象的距离、半径、角度、面积或体积。
  > 反转工具使你可以反转直线、多段线、样条线和螺旋线的方向。
  > 样条线和多段线编辑工具可以把样条线转换为多段线。
  > 清理工具包含了一个清理0长度几何体和空文本对象的选项。
  > 视口旋转功能使你能够控制一个布局中视口的旋转角度。
  > 参照工具(位于Ribbon的插入标签)能够让你附加和修改任何外部参照文件,包括DWG, DWF, DGN, PDF或图片格式。
  > 图纸集使你可以设置哪些图纸或部分应该被包含在发布操作中,图纸列表表格比以前更加灵活。
  > 快速查看布局和快速查看图形除了包含布局预览外,还会有一个模型空间预览图形。
  > 文件浏览对话框(如打开和保存)在输入文件名的时候支持自动完成。对象尺寸限制已经被扩大到至少4GB(取决于你的系统配置),这会提供更大的灵活性。
  > 3D打印功能让你通过一个互联网连接来直接输出你的3D AutoCAD图形到支持STL的打印机。
  > CUIx文件格式在CUI编程器中工作时,会提高性能。它会包含文件中定义的命令所使用的自定义图像。
  > 动作宏包含了一个新的动作宏管理器,一个基点选项和合理的提示

官方原版解压之后2500M

删除安装英文中文帮助文档约450M
删除使用英文中文帮助文档约400M
删除支持库约600M
删除英文安装文件约300M
删除素材库约200M
删除示例约50M
删除演示,多国语言约100M

已集成为AutoCAD 2010 SP1
剩下500多M….程序本身未精简
XP和win7测试安装正常
XP可能需要安装以下支持库
解压后使用的方法方法:
1)运行GSETUP.BAT进行绿化设置,在这过程中会检查你系统里是否安装了AUTOCAD2006运行所必须的系统文件,如果没有安装的话按提示安装,如果安装了就跳过;
2)运行目录中的“acad.exe”,程序可以正常启动了,但要进行激活处理,特别文件在“GTOOLS/keygen.exe”。
3)UINSTALL.BAT为卸载命令。
激活方法:
1. 重新启动;
2. 必需先打开注册机(keygen),双击打开;
3. 在桌面上点击打开AutoCAD 2006快捷方式,运行 AutoCAD 2006,然后按提示步骤操作;
4. 当提示“注意 你还有30天可以注册并激活本产品 请选择操作时” 选“激活产品”。然后,进行下一步;
5. 当提示“激活 选择下面的某个选项”时,选”输入激活码”。进行下一步。
6. 当出现有“产口 序列号/编组/ID 申请号 输入激活码”时,将申请号输入到已经打开的注册机(keygen)最上面一栏(白色的空白栏)中(注意:一定要确保你输的号码正确),要仔细核对。当输入了正确的申请号时,在第二栏(灰色的空白栏)中出现了激活码,将其输入到“产口 序列号/编组/ID 申请号 输入激活码”下边的大空白栏内,也要保证输入的正确性。注册机上有六个按扭,请选择按动“permanent”(永久使用)按钮。
激活完毕,大功告成

序列号:356-72378422
productkey:001B1

发表在 CAD实用软件 | 标签为 , , | 留下评论

CAD杀毒 V2.7 官方免费版

CAD中毒可以导致打印文件不正常,实线变虚线,大部分命令无效,跳出对话框等。这种病毒利用CAD的读取机制,在第一次打开带有病毒的图纸后,该病毒即悄悄运行,并感染每一张新打开的图纸,将病毒文件到处复制,并生成很多名为acad.lsp的程序。即便是重装CAD甚至重装系统都不能解决问题。病毒感染计算机系统后,会在搜索AutoCAD软件数据库路径下的自动运行文件(acad.lsp)后,生成一个备份文件acadapp.lsp,其内容和自动运行文件一样。打开CAD图纸时,软件就会运行加载该文件,同时在存放图纸文件的目录中生成两个文件(acad.lsp和acadapp.lsp)的副本。

更新日志:

1、增加“工具栏”功能,把原有的选择夹改为工具栏,可点击左上角小箱子打开;
  2、增加“功能大全列表切换”功能,方便切换列表显示方式;
  3、增加“界面皮肤”功能,可自行选择颜色换肤;
  4、增加“优秀软件”功能,可自行下载各种优秀应用;
  6、增加“关注微信”按钮,可扫描关注小龙软件工作室微信公众号;
  7、增加“菜单键”到主窗口右上角,方便快捷调用;
  8、增加“软件更新”到主窗口左下角向上小图标,以及主窗口右上角菜单;
  9、增加“官方微博”直达选项到主窗口右上角菜单,方便关注并了解最新动态;
  10、增加“健康助手”功能,到功能大全列表内,有助于健康与锻炼,可自行DIY投稿哦;
  11、增加“加班管理软件”,“心算高手(安卓版)”到官方软件列表内,可根据需要选择下载;
  12、增加快捷“健康助手”小按钮到主窗口左下角,方便您快速启动;
  13、增加“心算高手”安卓软件到官方软件页面,大家可以点击心算高手下载体验;
  14、增加“加班管理系统”软件到官方软件页面,各位可选择下载使用,方便大家记录加班数据;
  15、增加“随系统启动”功能,到设置窗口页面,方便设置CAD杀毒随系统启动保护您的AutoCAD。
  16、修复CAD杀毒查杀不干净问题,完美清除病毒文件,不再复发;
  17、修复“网络连接查看器”功能中目标IP归属地获取失败BUG;
  18、修复“时间保护助手”获取网络时间失败的BUG;
  19、修改“软件图标”全新设计安全图标,扁平化设计,更专业;
  20、修改“问题反馈”为直接打开作者QQ聊天窗口,方便直接反馈;
  21、修改“查杀内核”结构,大幅度的提升查杀速度;
  22、修改“时间保护助手”架构,更直观的界面;
  23、修改“软件更新”功能,从页面改为独立窗口;
  24、修改“网络连接查看器”完美兼容WIN7,修复在WIN7下出错问题;
  25、去除“CAD快捷键”中的“快捷键列表”按钮;
  26、去除“功能大全”中的“批处理检查器”、“参照管理器”、“添加绘图仪”、“添加打印样式”CAD自带功能,让列表更简洁。

截图:

CAD杀毒

CAD杀毒 

 

发表在 CAD实用软件 | 标签为 | 留下评论

预留系统变量

在CAD的系统变量中,autodesk公司为用户预留了15个系统变量,用户可以在其中设置值;这些变量都将随数据库保存到磁盘文件中;它们的用法和一般的系统变量完全相同。它们是:
USERI1~USERI5:用于保存整形变量(5个);
USERR1~USERR5:用于保存浮点型变量(5个);
USERS1~USERS5:用于保存字符串型变量(长度未见文档说明,应该是263个字符)(5个)。

发表在 ObjectArx | 留下评论

实体转图片

不通过打印,不依赖任何第三方插件,直接使用arx的代码,在CAD中将任意实体对象转换成图片格式,下图展示了一个DEMO,以预览图列举出图形中所有的块。

如有需要代码或者DEMO,请联系作者QQ:245804736

实体转图片

发表在 ObjectArx | 标签为 , , | 留下评论

Visual Basic.NET二次开发AutoCAD范例精解

缺第9、133、134页。

PDF下载:ftp://www.cadgj.com/VisualBasic.NET.AutoCAD.rar

发表在 ObjectArx.Net | 标签为 | 留下评论

多个CAD版本共用字体

为打开各种各样的图纸,CAD字体越来越多,字体库越来越大,如果装的CAD版本再稍微多点,太浪费硬盘空间,通过简单的操作共用字体库,节约大量空间,另外还有一个好处就是有新的字体直接复制到共用目录就可以了,不用一个个CAD版本的复制。

1:新建共用字体目录

2:”菜单栏”->”工具”->”选项”

3:”支持文件搜索路径”->”添加”

4:每个版本的CAD重复2和3增加共用字体目录。

5:将字体拷贝到共用目录中。

6:删除各自版本自身的字体,在CAD安装目录下的”Fonts”目录中

发表在 CAD技巧 | 标签为 | 留下评论

DotNetARX6.0正式版(AutoCAD2007~2011)

从6.0版本开始,由于用C++和C#混合编程,所以DotNetARX分为两个文件:DotNetARX.dll和DotNetARXMgd.dll。
引用的时候,把两个DLL文件都引用到你的程序里就可以,命名空间还是DNA,因此在程序的开头只要写上using DNA;  就可以使用DotNetARX中所有的功能了。至于详细的帮助文档,稍后再贴上。
本次发布的版本适用于AutoCAD2007~2011,欢迎各个版本的朋友参加测试,有问题我会及时修正。

下载:DotNetARX6.0

发表在 ObjectArx.Net | 留下评论

AutoCAD中DXF文件格式详解2008中文版

下载:acad_dxf_2008cn

发表在 ObjectArx | 标签为 | 留下评论

autocad2016新功能汇总

软件名称:
autocad2016 64位 官方简体中文安装版
软件大小:
1.67GB
更新时间:
2015-02-28
软件名称:
autocad2016 32位 官方简体中文安装版(强烈不建议,太吃内存了,2010及以上版本最好都装64位的,否则经常会卡,32位的操作系统最多才能用到3.5G左右的内存,这个最低也差不多要1G多)
软件大小:
1.27GB
更新时间:
2015-02-28

autocad2016优化功能:

  优化界面、新标签页、功能区库、命令预览、帮助窗口、地理位置、实景计算、Exchange应用程序、计划提要、线平滑

  底部状态栏整体优化更实用便捷。

  硬件加速效果相当明显。

        2016的硬件加速无论平滑效果与流畅度都令人完全满意。

autocad2016新增功能:

新增暗黑色调界面,而是界面协调深沉利于工作。

发表在 CAD技巧 | 留下评论

C#打开CAD,并执行命令

//AcadService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace AcadService
{
    public class GApplication
    {
        /// <summary>
        /// AutoCAD.Application对应的类型
        /// </summary>
        System.Type type = null;
        /// <summary>
        /// AutoCAD.Application对应的对象
        /// </summary>
        Object obj = null;
        /// <summary>
        /// 创建AutoCAD.Application对象
        /// </summary>
        /// <returns></returns>
        public bool CreateInstance()
        {
            if (obj != null)
            {
                //已经创建了不能再创建了
                return false;
            }
            type = System.Type.GetTypeFromProgID(“AutoCAD.Application”);
            if (type == null)
            {
                //寻找AutoCAD.Application类型失败,可能没有安装AutoCAD
                return false;
            }
            try
            {
                obj = System.Activator.CreateInstance(type);
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 是否可见
        /// </summary>
        public bool Visible
        {
            get
            {
                if (obj == null || type == null)
                    return false;
                return (bool)type.InvokeMember(“Visible”, BindingFlags.GetProperty, null, obj, null);
            }
            set
            {
                if (obj == null || type == null)
                    return;
                type.InvokeMember(“Visible”, BindingFlags.SetProperty, null, obj, new object[] {value });
            }
        }
        /// <summary>
        /// 版本号
        /// </summary>
        public string Version
        {
            get
            {
                if (obj == null || type == null)
                    return null;
                return (string)type.InvokeMember(“Version”, BindingFlags.GetProperty, null, obj, null);
            }
        }
        /// <summary>
        /// 标题
        /// </summary>
        public string Caption
        {
            get
            {
                if (obj == null || type == null)
                    return null;
                return (string)type.InvokeMember(“Caption”, BindingFlags.GetProperty, null, obj, null);
            }
        }
        /// <summary>
        /// 执行程序acad.exe全路径
        /// </summary>
        public string FullName
        {
            get
            {
                if (obj == null || type == null)
                    return null;
                return (string)type.InvokeMember(“FullName”, BindingFlags.GetProperty, null, obj, null);
            }
        }
        /// <summary>
        /// 加载ARX 文件
        /// </summary>
        /// <param name=”Name”></param>
        public void LoadArx(string Name)
        {
            if (obj == null || type == null)
                return;
            type.InvokeMember(“LoadArx”,BindingFlags.InvokeMethod,null,obj,new object[]{Name});
        }
        /// <summary>
        /// 退出
        /// </summary>
        public void Quit()
        {
            if (obj == null || type == null)
                return;
            type.InvokeMember(“Quit”, BindingFlags.InvokeMethod, null, obj, null);
        }
        /// <summary>
        /// 更新
        /// </summary>
        public void Update()
        {
            if (obj == null || type == null)
                return;
            type.InvokeMember(“Update”, BindingFlags.InvokeMethod, null, obj, null);
        }
        /// <summary>
        /// 缩放到所有
        /// </summary>
        public void ZoomAll()
        {
            if (obj == null || type == null)
                return;
            type.InvokeMember(“ZoomAll”, BindingFlags.InvokeMethod, null, obj, null);
        }
        /// <summary>
        /// 缩放到范围
        /// </summary>
        public void ZoomExtents()
        {
            if (obj == null || type == null)
                return;
            type.InvokeMember(“ZoomExtents”, BindingFlags.InvokeMethod, null, obj, null);
        }
        /// <summary>
        /// 活动文档
        /// </summary>
        public object ActiveDocument
        {
            get
            {
                if (obj == null || type == null)
                    return null;
                return type.InvokeMember(“ActiveDocument”, BindingFlags.GetProperty, null, obj, null);
            }
        }
    }
    public class GDocument
    {
        private object obj = null;
        public GDocument(Object _obj)
        {
            obj = _obj;
        }
        /// <summary>
        /// 发送命令
        /// </summary>
        /// <param name=”Command”></param>
        public void SendCommand(string Command)
        {
            if (obj == null)
                return;
            obj.GetType().InvokeMember(“SendCommand”, BindingFlags.InvokeMethod, null, obj, new object[] { Command });
        }
        /// <summary>
        /// 关闭文档
        /// </summary>
        /// <param name=”SaveChanges”></param>
        /// <param name=”FileName”></param>
        public void Close(object SaveChanges, object FileName)
        {
            if (obj == null)
                return;
            obj.GetType().InvokeMember(“Close”, BindingFlags.InvokeMethod, null, obj, new object[] { SaveChanges, FileName });
        }
    }
}

 

//调用

GApplication app = new GApplication();
            if (!app.CreateInstance())
            {
                return;
            }
            app.Visible = true;
            GDocument doc = new GDocument(app.ActiveDocument);
            doc.SendCommand(“XX命令 “);
            doc.Close(false, null);
            app.Quit();

发表在 C# | 标签为 | 留下评论

LibreCAD, Open Source 2D-CAD

免费开源的CAD

官方网站:http://librecad.org/cms/home.html

源代码:https://github.com/LibreCAD/LibreCAD

 基于LibreDWG:http://www.oschina.net/p/libredwg

发表在 CAD实用软件 | 标签为 , , | 留下评论

DwgViewX破解版又一款网页查看dwg神器

下载:DwgViewX

破解版,仅供测试,不可以用于商业运营。

运行效果

DwgViewX

 

发表在 CAD实用软件 | 标签为 , , | 留下评论

DWG图纸损坏的一种情景及解决方法

转载:http://www.mfcad.com/cad/960/31307.html

打开一张DWG图纸,保存,复制,或者调用整张图纸所有对象的操作时,发现命令行中有下面的提示:

*警告* 多重从属对象,句柄“XXX”
*警告* 多重从属对象,句柄“XXX”
*警告* 多重从属对象,句柄“XXX”
*警告* 多重从属对象,句柄“XXX” 
这个警告提示这张DWG图纸里面已经有一些对象损坏,数量跟损坏对象的多少有关。

出现这样的错误,通过工程图实用程序也无法修复。
处理办法如下:

  1. 在命令行例输入(包含括号): (entget(handent “<handleID>”)),然后回车。HandleID就是刚才的那个句柄“XXX”中的XXX
  2. 接下来在命令行中输入(包含括号): (entdel(handent “<handleID>”))。 这个命令会删除已经损坏的对象。
  3. 重复上面的步骤,把所有的多重重属对象都删除。
  4. 最后用AUDIT 修复所有的错误。即可。
发表在 CAD技巧 | 留下评论

CAD版本选择

AutoCAD软件是美国Autodesk公司开发的计算机辅助软件,它在世界工程设计领域使用相当广泛,目前广泛的应用到建筑、机械、服装、气象、地理等领域。自1982年首次推出AutoCAD以后,目前已升级至第26个版本。最新版本为AutoCAD2016。

AutoCAD 2008以前的版本更新都没有太大的界面改变

从AutoCAD2009开始界面风格(ribbon风格)更趋向于3ds max,菜单栏的布置又和office2007很相似。

但是复杂而漂亮的界面自然而然的增加了内存消耗。所以你具体使用的CAD版本是根据你机器的配置来决定的。

实际上如果您机器的配置过低,可能就安装不了高版本的CAD

如CAD在2010及以上版本推荐内存最少都是2G,低于这个数值可能就根本安装不上去,勉强安装上去了也运行比较卡或者会报错。

下面根据各种实际情况推荐您使用相应的CAD版本。

参照原理:

1:根据多年的经验,软件偶数版本比奇数版本性能稳定。

2:越低的版本越不稳定,最新的版本肯定也不是非常的稳定,而且一些针对性的插件也暂时不支持,所以一般不考虑。

3:CAD的算法在逐渐优化,图形渲染算法也在优化,因此在打开大型,超大型图纸上高级版本的表现要优于低级版本。

基于以上原理选择范围中筛选出

AutoCAD 2004,2006,2008,2010四个版本

更高级的2012,2014以及2016版暂时不在考虑范围内,等各大CAD插件开发商完成完善的支持以及计算机性能有了更大幅度的提高再做考虑。

A:机器配置很差,内存小于或等于1G,可用硬盘空间较小,需要打开的图纸不会太大,一般不超过2M。建议使用AutoCAD2004,一般绿色精简版的只有50M不到,系统开销也非常的小。同时开启自动保存,时间设置为5~10分钟,防止因CAD出错导致的数据丢失。

B:机器配置一般,内存1G~2G,CPU也还过得去,建议使用AutoCAD2006。系统开销不是很大,安装的时候多占用一点空间而已。运行稳定性就好了很多。而且对二次开发的支持也更好,如在CAD2005以下版本都不支持的表格对象,排序表,DotNet二次开发,在CAD2006就开始支持了,对大多数的应用开发都足够了。

C:机器配置较好,内存大于2G,CPU性能也比较好,建议使用AutoCAD2008。运行非常稳定,对各方面的二次开发都支持的非常好。系统开销也不是很大。

以上只针对32位的操作系统。

从AutoCAD2010开始出64位版本。如果您的操作系统为64位,内存大于4G,建议您安装 AutoCAD2010 64位版本。32位的任何应用程序使用的内存都不能超过2G左右,这极大的限制了应用程序的性能,所以如果您安装了64位的操作系统,而且需要打开大的图纸或者一次性需要打开很多图纸,强烈建议您安装AutoCAD2010的64位版本。

 

发表在 CAD技巧 | 标签为 | 留下评论

BP升级到2了

BP升级到2了

感谢大家的支持

我会出更多的原创文章,更多实用的工具回报大家的支持。

发表在 网站建设 | 标签为 | 留下评论

C#与C++之间类型的对应

Windows Data Type

.NET Data Type

BOOL, BOOLEAN

Boolean or Int32

BSTR

String

BYTE

Byte

CHAR

Char

DOUBLE

Double

DWORD

Int32 or UInt32

FLOAT

Single

HANDLE (and all other handle types, such as HFONT and HMENU)

IntPtr, UintPtr or HandleRef

HRESULT

Int32 or UInt32

INT

Int32

LANGID

Int16 or UInt16

LCID

Int32 or UInt32

LONG

Int32

LPARAM

IntPtr, UintPtr or Object

LPCSTR

String

LPCTSTR

String

LPCWSTR

String

LPSTR

String or StringBuilder*

LPTSTR

String or StringBuilder

LPWSTR

String or StringBuilder

LPVOID

IntPtr, UintPtr or Object

LRESULT

IntPtr

SAFEARRAY

.NET array type

SHORT

Int16

TCHAR

Char

UCHAR

SByte

UINT

Int32 or UInt32

ULONG

Int32 or UInt32

VARIANT

Object

VARIANT_BOOL

Boolean

WCHAR

Char

WORD

Int16 or UInt16

WPARAM

IntPtr, UintPtr or Object

另: 在进行string转换时,需要加入前缀[MarshalAs(UnmanagedType.LPStr)]lpdword 对应于 ref int

 

 

C/C++

C#

HANDLE, LPDWORD, LPVOID, void*

IntPtr

LPCTSTR, LPCTSTR, LPSTR, char*, const char*, Wchar_t*, LPWSTR

String [in], StringBuilder [in, out]

DWORD, unsigned long, Ulong

UInt32, [MarshalAs(UnmanagedType.U4)]

bool

bool

LP<struct>

[In] ref <struct>

SIZE_T

uint

LPDWORD

out uint

LPTSTR

[Out] StringBuilder

PULARGE_INTEGER

out ulong

WORD

uInt16

Byte, unsigned char

byte

Short

Int16

Long, int

Int32

float

single

double

double

NULL pointer

IntPtr.Zero

Uint

Uint32

 

C#调用DLL文件时参数对应表

Wtypes.h中的非托管类型  非托管 C语言类型        托管类名                说明
HANDLE           void*                     System.IntPtr                 32 位
BYTE             unsigned char             System.Byte                   8 位
SHORT            short                     System.Int16                  16 位
WORD              unsigned short           System.UInt16                 16 位
INT               int                      System.Int32                  32 位
UINT               unsigned int            System.UInt32                  32 位
LONG              long                     System.Int32                  32 位
BOOL              long                     System.Int32                  32 位
DWORD             unsigned long            System.UInt32                 32 位
ULONG              unsigned long           System.UInt32                 32 位
CHAR              char                     System.Char                   用 ANSI 修饰。
LPSTR             char*              System.String 或 System.StringBuilder   用 ANSI 修饰。
LPCSTR            Const char*        System.String 或System.StringBuilder   用 ANSI 修饰。
LPWSTR            wchar_t*           System.String 或System.StringBuilder   用 Unicode 修饰。
LPCWSTR           Const wchar_t*     System.String 或System.StringBuilder   用 Unicode 修饰。
FLOAT              Float             System.Single                       32 位
DOUBLE             Double            System.Double                       64 位

 

习惯用C#写东西,但平时又会碰到很多要用win32 API的地方,所以经常要用DllImport,但win32函数的类型写法是很庞杂的,相信为之困扰的不止我一个,现在我整理一份我个人的理解如下,希望高人不吝赐教。
我的基本原则有如下几点:
1、下面都是针对32位系统的,所以int是32位.long也是32位;
2、各种句柄类的(H开头),我认为一律是System.IntPtr,到目前为止没发现出错;如果哪位在使用中出错,请指出;
3、LP和P,我实在不懂(对C 不太了解),对于LP和P开头的函数,如果是和STR有关的,一律写为System.String,像PLCID这样指向什么东西的,写为System.UInt32(因为指向另一个地址,那就是指针,指针是32位吧),int之类的数值型,那我就写为int[],以方便.net程序引用(写成System.UInt32的话,给API调用应该也不会出错,但.net程序就不好引用了)

如有意见,欢迎指教。谢谢

BOOL=System.Int32
BOOLEAN=System.Int32
BYTE=System.UInt16
CHAR=System.Int16
COLORREF=System.UInt32
DWORD=System.UInt32
DWORD32=System.UInt32
DWORD64=System.UInt64
FLOAT=System.Float
HACCEL=System.IntPtr
HANDLE=System.IntPtr
HBITMAP=System.IntPtr
HBRUSH=System.IntPtr
HCONV=System.IntPtr
HCONVLIST=System.IntPtr
HCURSOR=System.IntPtr
HDC=System.IntPtr
HDDEDATA=System.IntPtr
HDESK=System.IntPtr
HDROP=System.IntPtr
HDWP=System.IntPtr
HENHMETAFILE=System.IntPtr
HFILE=System.IntPtr
HFONT=System.IntPtr
HGDIOBJ=System.IntPtr
HGLOBAL=System.IntPtr
HHOOK=System.IntPtr
HICON=System.IntPtr
HIMAGELIST=System.IntPtr
HIMC=System.IntPtr
HINSTANCE=System.IntPtr
HKEY=System.IntPtr
HLOCAL=System.IntPtr
HMENU=System.IntPtr
HMETAFILE=System.IntPtr
HMODULE=System.IntPtr
HMONITOR=System.IntPtr
HPALETTE=System.IntPtr
HPEN=System.IntPtr
HRGN=System.IntPtr
HRSRC=System.IntPtr
HSZ=System.IntPtr
HWINSTA=System.IntPtr
HWND=System.IntPtr
INT=System.Int32
INT32=System.Int32
INT64=System.Int64
LONG=System.Int32
LONG32=System.Int32
LONG64=System.Int64
LONGLONG=System.Int64
LPARAM=System.IntPtr
LPBOOL=System.Int16[]
LPBYTE=System.UInt16[]
LPCOLORREF=System.UInt32[]
LPCSTR=System.String
LPCTSTR=System.String
LPCVOID=System.UInt32
LPCWSTR=System.String
LPDWORD=System.UInt32[]
LPHANDLE=System.UInt32
LPINT=System.Int32[]
LPLONG=System.Int32[]
LPSTR=System.String
LPTSTR=System.String
LPVOID=System.UInt32
LPWORD=System.Int32[]
LPWSTR=System.String
LRESULT=System.IntPtr
PBOOL=System.Int16[]
PBOOLEAN=System.Int16[]
PBYTE=System.UInt16[]
PCHAR=System.Char[]
PCSTR=System.String
PCTSTR=System.String
PCWCH=System.UInt32
PCWSTR=System.UInt32
PDWORD=System.Int32[]
PFLOAT=System.Float[]
PHANDLE=System.UInt32
PHKEY=System.UInt32
PINT=System.Int32[]
PLCID=System.UInt32
PLONG=System.Int32[]
PLUID=System.UInt32
PSHORT=System.Int16[]
PSTR=System.String
PTBYTE=System.Char[]
PTCHAR=System.Char[]
PTSTR=System.String
PUCHAR=System.Char[]
PUINT=System.UInt32[]
PULONG=System.UInt32[]
PUSHORT=System.UInt16[]
PVOID=System.UInt32
PWCHAR=System.Char[]
PWORD=System.Int16[]
PWSTR=System.String
REGSAM=System.UInt32
SC_HANDLE=System.IntPtr
SC_LOCK=System.IntPtr
SHORT=System.Int16
SIZE_T=System.UInt32
SSIZE_=System.UInt32
TBYTE=System.Char
TCHAR=System.Char
UCHAR=System.

Wtypes.h 中的非托管类型

非托管 C 语言类型

托管类名

说明

HANDLE

void*

System.IntPtr

在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 64 位。

BYTE

unsigned char

System.Byte

8 位

SHORT

short

System.Int16

16 位

WORD

unsigned short

System.UInt16

16 位

INT

int

System.Int32

32 位

UINT

unsigned int

System.UInt32

32 位

LONG

long

System.Int32

32 位

BOOL

long

System.Int32

32 位

DWORD

unsigned long

System.UInt32

32 位

ULONG

unsigned long

System.UInt32

32 位

CHAR

char

System.Char

用 ANSI 修饰。

LPSTR

char*

System.String 或   System.Text.StringBuilder

用 ANSI 修饰。

LPCSTR

Const char*

System.String 或   System.Text.StringBuilder

用 ANSI 修饰。

LPWSTR

wchar_t*

System.String 或   System.Text.StringBuilder

用 Unicode 修饰。

LPCWSTR

Const wchar_t*

System.String 或   System.Text.StringBuilder

用 Unicode 修饰。

FLOAT

Float

System.Single

32 位

DOUBLE

Double

System.Double

64 位

发表在 C# | 留下评论

Android SDK镜像的介绍使用

由于一些原因,Google相关很多服务都无法访问,所以在很多时候我们SDK也无法升级,当然通过技术手段肯定可以解决,但是比较麻烦,而且下载速度也不怎么样。

这里笔者介绍一个国内的Android镜像站,这样升级速度也贼快了。首先我们要感谢东软提供镜像服务器。

近来我发现一个更加简洁的方法:

1.Tools->Options

2.设置如图代理:

这样可以省去手动添加xml URL列表的烦恼。

发表在 Java | 标签为 | 留下评论

在Windows(64位)下搭建Android开发环境[图文教程+资源]

随着移动互联网的迅速发展,前端的概念已发生很大的变化,已不仅仅局限在网页端。而Android系统作为智能机市场的老大,作为前端开发工程师,非常有必要了解和学习。但面对众多学习资料,站在前端开发工程师的角色,怎样挑选出合适的路进行快速学习,而不必浪费大量时间去摸索,该系列文章希望能帮助到小伙伴们。

文章会挑选几个实际的例子,贯穿在整个系列中,涉及到Java、Android、程序设计等多方面知识,力求让大家快速掌握。俗话说,工欲善其事,必先利其器,系列的第一篇就从Window系统下Android的环境搭建说起。Let’s Go!

经过几天苦逼的努力,终于装好了。

现在把经验和各方面的资源分享给大家。

主要参照网页:http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html

JDK

Eclipse

ADT

一:JDK的安装和Java环境变量的设置

JDK下载地址

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

国内下载太慢,特地在网站上传了一个:ftp://www.cadgj.com/jdk-8u45-windows-x64.exe

JDK(Java Development Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。

JAVA_HOME

JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。

增加环境变量

PATH

PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin。

环境变量PATH

CLASSPATH

用于编译时JAVA类的路径,注意这里设置的是两个值,(.;)表示的是JVM先搜索当前目录。其值为:.;%JAVA_HOME%\lib\tools.jar。

环境变量CLASS

配置完毕后,通过cmd运行以下命令:java -version,javac 如果出现返回信息,则设置成功。

二:安装Eclipse

Eclipse下载地址

Eclipse下载地址:http://www.eclipse.org/downloads/? (选择Eclipse Standard版本即可)。

如果下载很慢请使用本站FTP下载

ftp://www.cadgj.com/eclipse-java-luna-SR2-win32-x86_64.zip

绿色版,启动的时候设置一下工作目录就可以了。

Eclipse为Java及Android开发的IDE。Eclipse不需要安装,把解压包解压后,剪切eclipse文件夹到你想安装的地方,打开时设置你的工作目录即可。

这个是安装后的,第一次界面和这个略有差异,不过也差不太多。

三:安装Android SDK

Android SDK下载地址

Android SDK下载地址:http://developer.android.com/sdk/index.html。

Andorid SDK为Android管理开发包工具,提供了Android各级平台的开发包和工具。注意,因为我们是独立安装,不是一体化(集成系列工具)所以需要单独下载SDK。(如图)

下载太慢的话请使用本站FTP下载:

ftp://www.cadgj.com/installer_r24.1.2-windows.exe

运行安装文件,并把安装目录下tools文件夹路径设置进PATH环境变量。

去到安装目录运行SDK Manager,一开始什么平台和工具也没有,需要下载回来。公司内网的话需要使用代理来下载。

注意设置:代理服务器 mirrors.opencas.cn

 

到 Tools -> Options… 把代理填上,点击 Close 后则会出现众多平台列表,把Android Tools 选上安装,另外建议把2.2以上的全部下载安装。我下载了2.0和所有4.0的。

四:安装配置ADT

启动Eclipse,点击 Help菜单 -> Install New Software… ?,点击 ?Add… ?,输入

选择”Archive..”按钮

选择文件”ADT-23.0.2.zip”

下载地址:ftp://www.cadgj.com/ADT-23.0.2.zip

选取要安装的项,一路Next完成安装并重启。这样ADT就安装完毕了。

配置ADT

选择 Window -> Preferences ,在弹出面板中就会看到Android设置项,填上安装的SDK路径,则会出现刚才在SDK中安装的各平台包,按OK则完成配置。此时Android的环境就搭建完毕,可以进行Android项目的开发了。

五:创建第一个Android项目

选择 File -> New -> Other -> Android -> Android Application Project。

输入项目所需信息

Application Name (应用的名称)

Project Name (在Eclipse中该项目的名称)

Package Name (存放Java类的包名称,其实质是存放的文件夹路径,.号为文件分隔符,我们编写的Java文件都会放在项目的src目录下,如com.tencent.helloworld表示类放在src/com/tencent/helloworld文件夹中)

运行Android SDK目录下的”AVD Manager.exe”

创建一个模拟器

点击 三角型 run按钮,然后选择刚才创建的模拟器,则程序开始运行。小提示:启动模拟器会比较慢,所以,当程序作出修改,需要再次运行时,不要关闭掉模拟器,直接按模拟器上的Home或返回键退出app,之后再按run,则可重新跑起。

 

结束:恭喜你!你的Android环境已经搭建成功。

 

 

 

 

 

 

 

发表在 Java | 标签为 , , | 留下评论

Android SDK Manager代理服务器

国内无法访问:dl.google.com下载Android开发环境,没办法只好寻找代理

经过几天查找终于找到了。

Android SDK Manager代理服务器

代理服务器:mirrors.opencas.cn

代理端口:80

发表在 Java | 标签为 , | 留下评论

java获取当前路径的几种方法

1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty(“user.dir”));//user.dir指定了当前的路径

2、使用File提供的函数获取当前路径:
File directory = new File(“”);//设定为当前文件夹
try{
    System.out.println(directory.getCanonicalPath());//获取标准的路径
    System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}

File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(“.”)和new File(“..”)两种路径有所区别。

# 对于getCanonicalPath()函数,“.”就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹
# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径
# 至于getPath()函数,得到的只是你在new File()时设定的路径

比如当前的路径为 C:/test :
File directory = new File(“abc”);
directory.getCanonicalPath(); //得到的是C:/test/abc
directory.getAbsolutePath();    //得到的是C:/test/abc
direcotry.getPath();                    //得到的是abc

File directory = new File(“.”);
directory.getCanonicalPath(); //得到的是C:/test
directory.getAbsolutePath();    //得到的是C:/test/.
direcotry.getPath();                    //得到的是.

File directory = new File(“..”);
directory.getCanonicalPath(); //得到的是C:/
directory.getAbsolutePath();    //得到的是C:/test/..
direcotry.getPath();                    //得到的是..

另外:System.getProperty()中的字符串参数如下:
System.getProperty()参数大全
# java.version                                Java Runtime Environment version 
# java.vendor                                Java Runtime Environment vendor 
# java.vendor.url                           Java vendor URL 
# java.home                                Java installation directory 
# java.vm.specification.version   Java Virtual Machine specification version 
# java.vm.specification.vendor    Java Virtual Machine specification vendor 
# java.vm.specification.name      Java Virtual Machine specification name 
# java.vm.version                        Java Virtual Machine implementation version 
# java.vm.vendor                        Java Virtual Machine implementation vendor 
# java.vm.name                        Java Virtual Machine implementation name 
# java.specification.version        Java Runtime Environment specification version 
# java.specification.vendor         Java Runtime Environment specification vendor 
# java.specification.name           Java Runtime Environment specification name 
# java.class.version                    Java class format version number 
# java.class.path                      Java class path 
# java.library.path                 List of paths to search when loading libraries 
# java.io.tmpdir                       Default temp file path 
# java.compiler                       Name of JIT compiler to use 
# java.ext.dirs                       Path of extension directory or directories 
# os.name                              Operating system name 
# os.arch                                  Operating system architecture 
# os.version                       Operating system version 
# file.separator                         File separator (“/” on UNIX) 
# path.separator                  Path separator (“:” on UNIX) 
# line.separator                       Line separator (“/n” on UNIX) 
# user.name                        User’s account name 
# user.home                              User’s home directory 
# user.dir                               User’s current working directory

发表在 Java | 留下评论