- 博客(349)
- 资源 (30)
- 收藏
- 关注
原创 在CSDN的最后一篇博客
大家好,最近由于忙于其他事情,博客更新得较慢,抱歉!不管怎样,我以后还是坚持写博客。尤其是坚持我一向的作风,重点为初学者朋友撰写通俗易懂、化繁为简的教程,以及技巧分享这是我在CSDN博客的最后一篇文章。我的博客将迁移至博客园:http://www.cnblogs.com/tcjiaan/。我一直希望能找到一个真正适合编程爱好者和开发者们交流学习的社区和分享平台。
2013-10-27 00:49:16
10160
4
原创 ClickOnce部署(5):自定义安全权限
今天我们来探讨一下在ClickOnce部署中如何严格控制应用程序的权限。演示应用为了在下文中能更好地演示,我们先要做一个测试项目。也为了显得简单易懂,我使用最常用且最常见的WinForm项目,这是地球上最丰富的物种。咱们做一个MD5的计算程序,这个应该够简单了吧?程序的功能是浏览打开一个文件,然后计算它的MD5,最后以字符串的形式输出。界面大致这样:其中用来输入文件
2013-10-20 18:02:10
7170
原创 ClickOnce部署(4):下载多个安装包
有时候,我们可能会一次性发布多个安装包,当然在网页上多加几个链接让用户逐个安装也是可取的。不过,也可以弄得更方便些,即用户先安装一个,作为一个"引导程序",然后通过这个程序去下载安装其他应用程序。我们还是说说真实的例子,这样好理解一点。假设我开发了两个应用程序,一个叫App1,另一个叫App2。我把这两个应用程序同时发布。我们可以在IIS服务器的根目录下新建两子目录,我们分别把这两
2013-10-08 15:11:06
6048
原创 ClickOnce部署(3):使用证书
在讲述证书的使用前,我们先来了解另外一个知识——发布网页。在前面所说的ClickOnce部署中,如果大家细心的话,应该会发现这么个问题。如上图,发布成功后,在"输出"窗口中提示无法查看发布网页。 好,我们先不管那是什么,现在我们不妨发布一个项目,但在"项目属性"窗口中的"发布"选项卡上,点击"选项"按钮,打开"发布选项"对话框。在"说明"页中输入基本信息,产品名称和发布者。
2013-10-07 17:08:31
8121
原创 ClickOnce部署(2):自动更新
上次我们说了如何用最基本的方式用ClickOnce技术部署应用程序项目,本篇我们来认识一下如何让应用程序具备自动更新的功能。我们依然通过实例来学习。第一步,随便建一个应用程序项目,至于是控制台、WPF还是WinForm就随意吧,我们的重点发布应用程序。比如这样:为了更好的演示,我们可以在窗口上显示当前发布的版本号。我这里是一个WinForm项目,故我就用一个Label控件来显示当前
2013-10-06 11:26:10
16883
原创 ClickOnce部署(1):一些发布方式
ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌。因此,有关ClickOnce的介绍,各位朋友可以直接查找MSDN文档,或者看下面这里,这是百度百科上的,其实也是Ctrl + C版本。http://baike.baidu.com/view/1390498.htm如果你对这些理论的东西不感兴趣,没关系,上面所提
2013-10-04 17:16:54
19447
原创 实战MEF(5):导出元数据
在导出组件类时,我们可以将一些附加信息(称为元数据)一同导出。本文我将给大家简单介绍一下在MEF框架中导出元数据的方法。
2013-09-16 17:00:37
4696
原创 实战MEF(4):搜索范围
前面我们了解了MEF中扩展类型的导入与导出,本节我们来看看几个常用的范围,即搜索扩展组件的范围,如当前程序集或某个目录。
2013-09-04 17:36:59
6072
原创 修心课(一):心态与生活
有时候,我们感觉走到了尽头,其实只是心走到了尽头。几米说过,我总是在最深的绝望里,看见最美的风景。内心是温暖潮湿的地方,适合任何东西生长。这个世界有时候硬邦邦的,有时候软塌塌的。当我们开心、伤心,当我们希望、失望,我们庆幸心里总唱着一首歌,让硬邦邦的世界不至硬进心里,让软弱的心不至倒塌不起。---《麦兜当当伴我心》
2013-09-03 22:52:01
3210
原创 实战MEF(3):只导出类的成员
MEF有着许多潜在的优势和实用价值,我们应该毫不保留地去发掘那些不被别人所知实用技巧,最大化地提高开发效率。前面我们演示过整个类型的导出与导入,本文我们就继续深入,看看如何导出某个类型的部分成员,如属性、字段、方法等。
2013-08-29 12:20:36
3505
原创 实战MEF(2):导出&导入
本文将介绍MEF框架中如何导出与导入扩展类型。 文章写在我的另一个博客中。http://www.cnblogs.com/tcjiaan/p/3277242.html
2013-08-23 12:15:06
3087
原创 实战MEF(1):一种不错的扩展方式
在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序。这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而对于像ERP系统那样复杂而且常常需要扩展的应用程序,这种扩展方法就不够方便,因为每次都要修改源代码或重新引用组件。尤其是组件(许多dll),如果每编写一个新组件又要在主项目中引用一次,显然主项目就不得不经常重新生成。要是能有一种机制,可以在主项目应用程序不作任何修改就可以自动识别并扩展组件,就会很便捷,我们
2013-08-21 20:04:58
6182
原创 如何在入口点使用异步等待(await)
本文将解决在Main入口点方法上不能使用async关键字的问题。在C#5中引入了一种很简单的实现异步等待的方法,即配合使用await运算符和async关键字。但是,async关键字是不能直接用在入口点上的,本文通过文法封装和委托两种方法解决该问题。
2013-08-10 17:50:32
10309
原创 不引用服务而使用WCF,手动编写客户端代理类
本文将演示如何通过自己手动编写代码来调用WCF服务。首先使用了ChannelFactory来创建通道,并调用与通道关联的服务协定。随后对代码进一步封装,选用从ClientBase类派生,可以更有效地简化代码,而且在处理有服务器回调的服务协定时也方便了许多。
2013-08-09 16:45:24
23100
2
原创 非常简单的语音朗读功能
在System.Speech.Synthesis命名空间下(位于程序集System.Speech中)有一个SpeechSynthesizer类,可以让我们极为轻松地就可以使用系统安装的语音阅读功能。这玩意儿不错,既简单又实用。
2013-07-30 20:59:02
10861
原创 桌面应用也可以提供HTTP文件下载
我们可以考虑,如果我们编写一个仅仅提供HTTP下载相关的少数功能的应用程序,我们似乎没有必要大动干戈在机器上弄个服务器搞个Web站点。通常这种情况,做个小小的窗口程序就可以完事了。所以,就会想到使用桌面应用程序来提供HTTP下载这想法了。本文将用一个例子介绍使用HttpListener类来在Windows桌面程序中实现提供HTTP下载的功能。
2013-07-18 17:46:30
4742
原创 关于枚举的一两件私房事
简单介绍Enum类的GetNames方法和Parse方法,使用二者,可以对枚举类型进行特定的操作。仅作为一种实用技巧分享。
2013-07-04 18:33:48
3407
原创 还记得BackgroundWorker吗?
今天一早醒来,猛然发现,很久没写博客了,算一算,其实应该不到一个月,可总觉得寰宇一个月,世上已千年。是啊,于是内心萌发了一股冲动的力量,今天该写点什么,可是,一时想不出来。打开电脑,突然想起来,昨天下午,有位仁兄和我讨论过一个事,不妨拿来说说。她说她的牛逼程序要处理一堆东东,要弄个进度条作提示,不过进度条是在另一个窗口中的,她的想法是,在开始处理数据时弹出进度对话框,实时显示处理进度,当处
2013-06-22 10:48:38
7824
原创 其实,反射还有另一种功能
说到反射嘛,估计各位不陌生,尽管很多人不知道到底是什么,当然也有人将其看作是“反编译”,有点像吧,但不能说是反编译,虽然有个“反”字,但没有“编译”。所以,我给反射下了这样一个概述,准确与否,也不清楚:反射可以动态获取程序集信息,或程序集中的类型信息,以方便动态调用。动态调用的好处是节约资源,通常情况下,我们添加程序集引用会在项目的引用中加入,这意味着只要应用程序运行了,这些程序集就会
2013-06-04 18:02:45
3377
1
原创 想在桌面上涂鸦吗
我曾经说过一句致理名言:涂鸦是人生一大乐趣。只要你懂得涂鸦之道,涂鸦是非常好玩的。在窗口上画多了,不爽了,想不想在桌面上画? 不要惊讶,这是可以的。Graphics类可以用一个静态方法FromHwnd来创建实例,如果想在桌面上涂鸦,只要得到桌面的句柄就可以了。那么如何得到桌面的句柄呢?要用到一个非托管API,即 [DllImport("User32.dll")]
2013-05-28 18:16:42
6238
原创 捕捉桌面上的窗口信息
今天我为大家带来一个有趣的例子,有点像Spy++的功能,通过鼠标在屏幕上移动,并实时捕捉指定坐标点处的窗口信息。窗口信息包括窗口标题,窗口句柄,窗口类名,以及呈现所捕捉窗口的缩略图。 现在我们不妨来思考一下,要实现这些功能,我们需要准备哪些技术要点?1、获取当前鼠标指针的屏幕坐标,这个用System.Windows.Forms命名空间下的Cursor类的Position属性就可以知
2013-05-27 17:05:44
4605
原创 跟我一起玩Win32开发(25):监视剪贴板
自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种“门前冷落鞍马稀”的感觉。于是,老邪就拿出《九阴真经》认真阅读,同时用迅雷下载经典大剧《汉武大帝》晚上睡觉前看上几集,老邪一向是善于向古圣先贤学习。大家知道,迅雷有一个监视剪贴板的功能,如果发现你复制剪贴板的内容包含符合迅雷下载地址格式的就弹出新建下载任务窗口。 可能我们也希望在自己的应用程序中也加入这样XX的功能,其实不难,真的,我
2013-05-20 17:15:39
8907
3
原创 跟我一起玩Win32开发(24):计时器
有好些时间没写博客了,今天要来耍一下计时器,就是我们常说的Timer,它虽然不是什么复杂的东西,也称不 上牛X,不过,用处还是不少的,对于那些需要每隔一定时间执行一次的任务,那是相当有用。先来认识一下一对函数,注意,是一对,不是一个。SetTimer——设置并启用计时器;KillTimer——取消计时器。现在你明白为什么要一对的原因了,就好比进程操作,有启动或创建进程的函数,就肯定
2013-05-12 13:48:48
7605
1
原创 关于绘制图形,吹一下小牛皮
你一看标题,肯定会想:靠!太菜了。是啊,很菜,简直菜歪歪了。自从被某些人封为“高手”起,我就丧失了当小白的机会,更别说当菜鸟了。其实,成为一名小白没有什么不好,是吧?无知无欲,人生更多欢乐,知得越多越痛苦,真的是这样,因为很多人总是知道他本不应该知道的东西,所以他们就活得很痛苦。有一位挚友不知道做了什么春梦,突然找到我说,他要写一个绘图程序。我说:“拿系统的画图程序来玩就行了,不够爽的话,就玩
2013-05-04 16:41:37
2955
原创 制作一个CheckListBox控件
虽然CodePlex上的WPF扩展的XXX ToolKit源码中有一个CheckListBox控件,但是,就看它那源代码,也过于复杂了。并且,我也希望自己来编写一个CheckListBox控件。所谓CheckListBox控件嘛,就是既可以Select又可以Check的ListBox控件。有人会说,不用写控件,自定义一个ListBoxItem的模板就行了,也确实可以这样做,不过,还是有些问题的
2013-04-27 17:58:07
7403
1
原创 跟我一起玩Win32开发(23):渐变颜色填充
GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。BOOL GradientFill( _In_ HDC hdc, _In_ PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nM
2013-04-22 23:42:01
8135
2
原创 (WPF)查找数据模板中的子元素
说明:严重抱歉,文章发表后,发现文中贴的代码有问题,现在进行修改。 最近,常与火星人交流心得,侃谈代码的艺术、学用之道,总之一句话,谈笑有鸿儒,往来无白丁。但毕竟与火星人沟通,由于两个星球的文明差异,会遇到一些波折。前两天在写一个WPF程序时,突然发现DataGrid控件没有筛选功能,但我不急,因为我知道,WPF的好处在于UI与逻辑的分离,要给数据网格控件加上输入筛选功能并不复杂,
2013-04-21 10:29:53
10313
原创 WPF翻转动画
小丫头比较调皮,为了做个东东来哄一下小丫头,我想到了做一个简单的三维翻转动画。在登录QQ 2013 的时候,我看到登录窗口也有类似的动画。在WPF中要翻转对象,估计是得用三维变换,所以我用到了AxisAngleRotation3D,让图形绕着Z轴来旋转。先看看效果。 是的,就是这样的效果,在XAML中,由于涉及三维图形,我先做了两个用户控件,作为正面和背面,然后让它旋转。设
2013-04-10 17:13:21
20170
1
原创 将树形结构生成文本,并输出
今天下午,吃饱了没事干,突然想写点什么,于是不由自主地想起了某件往事,当年在做XXX的时候好像有一个功能没有做出来。据说算法很复杂,当时就没有研究。不过,今天想到用递归的方法,把这个功能大致做出来了,虽然称不上完美,至少还是比较简单的,而且代码也不多,才几行。先给大家看看运行结果,如下图:其实我说的这么神秘,也没什么,就是这个,把树形的目录结构输出到一个TXT文件中。其实当初的
2013-04-08 16:46:54
4534
原创 谁的青春不迷茫?我该说点什么呢
最近,我看到的文字中,“迷茫”二字出现的频率很高,比美国X总统当选的概率还要高。所以,我忍不住想写点东西。是啊,有哪位神童生下来就为自己的一生计划好的?谁的青春不迷茫呢?谁不会迷失过自己?所以,迷茫的青春算什么,那是好事,那是老天在考验你,给你机会去做出选择,连老天爷都给你机会了,如果你不去珍惜,那就算了,反正时间不等人。由于农历与公历的不同步,严重导致我对自己的生日的具体日期产生了可
2013-04-07 20:26:30
14029
4
原创 WCF也可以做聊天程序
先看一个截图。 上面的图,各位乍一看,可能会觉得是用Socket编写的聊天程序。告诉你吧,这玩意儿不是用Socket实现,呵呵,当然它的底层肯定与Socket有一定关系,我只说我的代码没有用到socket而已。那么,除了Socket可以用于通信,还有其他技术吗?有啊,首先,如果你足够强大,用HTTP也行,但HTTP初始化的过程貌似比较慢。那么还有吗?当然了,各位还记得.NET以前有
2013-04-05 12:14:19
11254
2
原创 让序列化与Socket合作愉快
我们在编写与Socket有关的应用程序时,在发送软为复杂的数据时,可能我们最常做的是把各个部分的数据转换为字符串,然后将这些字符串用一个分隔符连接起来进行发送。不过,不知道你有没有想过这样做还是有问题的。比如,我用#来分隔各个字符串,在根据客户端输入的内容到服务器端进行查找,然后返回结果,万一用户输入的查找关键字中就包含#,那么就会影响我们对字符串进行分割了。不知道各位有没有想过,把序列化
2013-04-02 16:24:30
6675
1
原创 关于我的WP8开发的新书,我想说的一些话
我的新书《Windows Phone 8 开发技巧与案例精解》已经上市,也有读者已经购买。这里,我想在这里再说明一些东西。我力求做到最好,不过,能不能完全满足大家的需要,是很难有定论的。而我的立足点是挑选出WP开发中较为常用和实用的技巧来讲述,就初衷而言,我不会所有内容都涉及,毕竟图书是供学习参考的,不是字典。我以前也看过不少编程类的图书(但我只买过三本,其他的由图书馆提供),从一开始的V
2013-03-29 12:17:18
8204
1
原创 跟我一起玩Win32开发(22):抓取屏幕
关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy。这里有一个完整的例子,可以看看。http://msdn.microsoft.com/EN-US/library/windows/desktop/dd183402(v=vs.85).aspx 把屏幕的内容复制到窗口的客户区域中,通常会用BitBlt函数,函数的功能是把一块颜色数据从一个DC复制到
2013-03-27 17:08:39
14563
原创 跟我一起玩Win32开发(21):复制&粘贴&剪贴板操作
我要提醒一下大家,看了我的博文学到的知识,千万不要用于实际开发,不然你会被你的上司骂:“妈的,这些东西哪来的,从来没有人这样做过。”不信你试试,脑细胞被冻结的经理或者技术总监们肯定会这样说的。如果是一些有X年工作经验(X永远不可能大于100)的程序员肯定会说:“你怎么这么不成熟?”你如果被别人这么说之后,不知道你会不会很伤心,或者很生气?我呢,曾经被N个人这样教育过,不过你猜猜我当时的心情
2013-03-24 12:27:20
13877
8
原创 跟我一起玩Win32开发(20):浏览文件夹
最近忙于一些相当无聊的事情,还没忙完,不过,博客还是要写的,不然我头顶上会多了几块砖头。在上一篇博文中,我们浏览了文件,今天我们也浏览一下目录,如何?浏览目录我们同样有两个规矩,用托管类库的我就不说了,相信大家两分钟就能弄好。重点还是说说第二个规矩,用API方式。我们用到的是Shell函数,一提到Shell,可能有朋友会感到痛苦,因为它很多函数涉及到COM,不过,也没什么了,反正我的哲学理
2013-03-17 11:24:08
12632
1
原创 跟我一起玩Win32开发(19):浏览和打开文件
在应用程序中,我们很经常要实现的功能,是Open文件或保存文件对话框,让用户来选择一个或N个文件。本文我将介绍两种思路,第一种方法较为复杂,第二种方法较为简单。方法一:老规矩这是一种传统方法,使用GetOpenFileName或者GetSaveFileName函数,看名字就知道,前者用来打开文件,后者是保存文件,这两个函数的用法是一样的,因此,我只演示其中一个。无论你使用哪个函数,都要
2013-03-09 16:43:29
9629
原创 跟我一起玩Win32开发(18):使用对话框的两个技巧
相信大家知道对话框怎么用了,就是先用“资源编辑器”设计一个对话框,然后在代码中加载处理。今天,我向大家分享两个使用对话框的技巧,还是比较实用的。不用担心,先喝杯茶,很简单的,一点也不复杂,总之,看俺写的博客,你不会有思想压力的。放心好了。 这两个技巧分别是:1、在显示某个对话框时,向对话框传递数据。这个我相信大家能够理解,就好比咱们在做Web开发的时候,在打开一个页面时,可能会考虑
2013-03-05 16:09:00
10759
3
原创 跟我一起玩Win32开发(17):启动和结束进程
这里我再次说明一下,我不知道为什么,现在的人那么喜欢走极端,估计是价值观都“升级”了的缘故吧。我撰写这一系列Win32相关的文章,并不是叫大家一定要用Win32去开发项目,仅仅是给大家了解一下,Win32是个啥东西而已。另外,在专访中,有些人也误认为我说C++非学不可,那也不是,我也提到过了,C++的学习可以使你懂得更多知识,为你以为学习各种技术打下基础。 今天,我们来了解一下,在
2013-02-28 11:08:45
17312
2
原创 招聘信息大围观
顺便说一下,我的有关WP开发的新书已经出版了。有兴趣的可以看这里:http://product.china-pub.com/3022160 =================================================相信大家都有找工作的经历,也看过不少招聘信息。不过,不知各位是否发现一个有兴趣的现象,许多公司的招聘信息千篇一律,我很佩服他们能把搜索引擎的作用发
2013-02-26 00:07:54
4858
13
手动编写WCF客户端实例
2013-08-09
在桌面应用中实现提供HTTP下载功能
2013-07-18
BackgroundWorker后台任务实例源码
2013-06-22
WPF版CheckListBox控件
2013-04-27
WCF聊天程序示例
2013-04-05
序列化与Socket结合使用示例
2013-04-02
Win32系列文章19:打开文件示例代码
2013-03-09
Win32开发系列文章18:向对话框传参与返回数据示例源码
2013-03-05
Win32开发系列文章17-启动和关闭进程示例源码
2013-02-28
Win8应用开发博文之StreamSocket例子代码
2013-01-19
WPF制作的窗口启动和关闭时的动画
2012-12-22
Win8开发博文第22节示例源代码
2012-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人