摘要: 摘要:在《csdn开发高手》2004年第03期中的《化功大法——将DLL嵌入EXE》一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也有相似的VB程序,但在某一技术论坛上提起这种设计方法时,有网友提出:“这种方法好是好,但就是启动速度太慢”。这是因为程序启动时实现DLL释放,然后再加载释放出来的DLL,这个过程会耗费一定的时间。鉴于此问题,经过 阅读全文
posted @ 2011-04-07 20:37 S.Kei.Cheung 阅读(694) 评论(1) 推荐(0) 编辑
摘要: /**********************************************************功能:通过C#程序调用Windows记事本程序编辑*名为test.txt的文本文件。**在整个程序中System.Diagnostics.Process.Start(Info)*为语句。*只是单独执行一个外部程序,可用一条如下代码即可:*System.Diagnostics.Process.Start(*"外部程序名","启动参数");**************************************************** 阅读全文
posted @ 2011-04-06 12:07 S.Kei.Cheung 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。步骤1. 创建一个CSharpInvokeCPP的解决方案:2. 创建一个C++的动态库项目:3. 在应用程序设置中,选择“DLL”,其他按照默认选项:最后点击完成,得到如图所示项目: 我们可以看到这里有一些文件,其中dllmain.cpp作为定义DLL应用程序的入口点,它的作用跟exe文件有个main或者WinMain入口函数是一样的,它就是作为DLL的一个入口函数,实际上它是个可选的文 阅读全文
posted @ 2011-04-05 21:41 S.Kei.Cheung 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore输入keystore密码:再次输入新密码:您的名字与姓氏是什么? [Unknown]: qiaoling您的组织单位名称是什么? [ 阅读全文
posted @ 2011-04-03 13:29 S.Kei.Cheung 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 1. 该格式图片的特点2. 制作方式一 .9.png 格式的文件的特点 与传统的png 格式图片相比, 9.png 格式图片在图片四周有一圈一个像素点组成的边沿,该边沿用于对图片的可扩展区和内容显示区进行定义。这种格式的图片在android 环境下具有自适应调节大小的能力。(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。(2)允许开发人员定义内容显示区,用于显示文字或其他内容 如下图所示: 左侧和上方的黑线交叉的部分即可扩展区域 右侧和下方的黑线交叉的部分即内容显示区二、 .9.png 图片的制作 android sdk 的 tools 文件夹 阅读全文
posted @ 2011-03-30 22:59 S.Kei.Cheung 阅读(397) 评论(0) 推荐(0) 编辑
摘要: Android工程的的主配置文件androidmanifest.xml的一些高级属性大多数开发者可能不了解,下面我们一起来看一看。支持的屏幕大小设置,我们可以显示的指定允许运行在:<supports-screens android:largeScreens="true" //WVGAandroid:normalScreens="true" //HVGA android:smallScreens="true" //QVGA android:resizable="true" android:anyDensity= 阅读全文
posted @ 2011-03-29 15:26 S.Kei.Cheung 阅读(597) 评论(0) 推荐(1) 编辑
摘要: 在我之前的安全与权限系列文章中对此已经有所描述,但是具体到标签的使用没有一个系统的比较。于是乎偶就想写篇文章总结下。本文只是浅析在Manifest文件中各个标签的用法,算是抛砖引玉。(终于拽了个成语,虽然到目前为止,偶连块砖头都没有收到过,但是本着予人玫瑰,手有余香的助人为乐精神,偶还是撰写了这篇文章。好,打住,开始正文。)在Android的manifest文件中有四个标签与permission有关,它们分别是<permission><permission-group> <permission-tree> 和 <uses-permission>。 阅读全文
posted @ 2011-03-29 14:51 S.Kei.Cheung 阅读(722) 评论(0) 推荐(0) 编辑
摘要: Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过JavaReflectionAPIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制没啥用。或许在J2EE、J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该机制会带给你许多惊喜。如果熟悉Android,那么你应该知道,Google不知出于什么原因,在系统源码中一 阅读全文
posted @ 2011-03-29 13:58 S.Kei.Cheung 阅读(2978) 评论(4) 推荐(7) 编辑
摘要: 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。 (2) 使用next()获得序列中的下一个元素。 (3) 使用hasNext()检查序列中是否还有元素。 阅读全文
posted @ 2011-03-26 10:29 S.Kei.Cheung 阅读(407) 评论(1) 推荐(0) 编辑
摘要: 1.概要本文主要介绍在Android平台上开发网络应用的一些常用接口。2. Android平台上可以使用的几种网络接口Android平台的网络应用绝大部分都是基于Java的编程接口的,也就是说我们开发类似的运用的时候可以有多种选择,比J2me确实好多了。2.1.标准Java接口java.net.*下面提供了访问HTTP服务的基本功能。使用这部分接口的基本操作主要包括:创建URL以及URLConnection / HttpURLConnection对象设置连接参数连接到服务器向服务器写数据从服务器读取数据 1 import java.io.InputStream; 2 3 import java 阅读全文
posted @ 2011-03-26 10:21 S.Kei.Cheung 阅读(1065) 评论(0) 推荐(1) 编辑