bindsang

工作五年,长期从事于asp.net方面的编程,业余爱好VC编程,温和、谦虚、自律、自信、善于与人交往沟通
随笔 - 35, 文章 - 0, 评论 - 64, 阅读 - 64928
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  Windows编程

Windows编程,平台调用
摘要: 最近做了一个Web项目,服务端采用ASP.NET。浏览器中需要用到证书登录,为了使以后能够读取USBKey证书和密钥,所以使用了ActiveX技述。这中间遇到了好多的问题,不过最后都一个一个解决了。 首先是从客户机里导出证书和密钥的问题,基本的CryptoAPI提供了两个函数可以导出,一个是CryptSaveStore,另外一个是PFXExportCertStore函数。网上关于这两个函数导出证书的代码都有很多了,我也不想再在这里写。不过这两个函数都有一些问题,用起来我都不太满意。第一个函数也就是CryptSaveStore导出的证书怎么也不能用Windows向导导入到证书管理器中,这个问题折腾了我好久,最终没能解决只得放弃;第二个函数也就是PFXExportCertStore,这个函数虽说能导出证书可是只能导出PFX格式的,也就是可能包括了私钥(如果原本有的话)在内的证书,而且还得给个导出密码,重新导入的时候还得再次输入相同的密码。我想要做的是只导出证书文件本身,不导出私钥,对它用私钥签名,任何拿到证书的人都可以用证书上带的公钥进行验证证书的合法性,而且 阅读全文

posted @ 2009-06-18 23:42 阅读(1202) 评论(0) 推荐(0) 编辑

摘要:每个程序员学编程的时候都是从单线程的程序入手的,等到了具有比较多的编程实践经验后才开始接触到多线程编程,多线程的技术在程序使用上带来新的友好体验的同是也带来了一系列的问题,其中最大的一个问题就是“同步/死锁”。 在C#中提供了多种实现同步的类和方法,下面就分别对每种方式作一个说明。 阅读全文

posted @ 2008-12-24 11:44 阅读(4305) 评论(7) 推荐(1) 编辑

摘要:通常我们在做多线程编写WinForm程序的时候经常听到的一句话就是“窗体控件只能在主线程中创建”,刚开始的时候我也接受的是这样的教育,因此一直以来一直在编程中有意识的这样做了。平时也没有过多的去想为什么要这样做,就把这个当做是一条公理了,就像是数学中“两个不同的点确定一条直线,三个不在同一直线上的点确定一个平面”一样那么简单。 最近又一次在做一个WinForm程序,突发奇想想要试试在非主线程创建一个窗体控件会有什么结果为什么不能这样做。 结果运行这段程序的时候@1这个地方的两行代码也执行到了,可是却一点问题都没有,没有异常,没有特殊的提示,程序也能正常退出。这是怎么回事呢?不是说不能在非主线程上创建控件吗?可是我这个程序不是好好的运行着又怎么解释呢。带着这样的问题我又回头去看了一个自己写的代码,这次发现了一个问题:frm 调用的是ShowDialog方法,这会使调用线程一直阻塞在这个地方。会不会是这个原因呢?于是我把ShowDialog替换成了Show方法,一试,果然就出错了。我又试了其它几种常见的控件,TextBox,Label,Button都是这样,唯一 阅读全文

posted @ 2008-12-23 15:27 阅读(1700) 评论(7) 推荐(2) 编辑

摘要: C#里面没有现成的DirectShow的COM组件的定义,虽说在C#中可以使用一些特定的方式来操作COM组件(C#中COM操作(一)---实例化),可是对于DirectShow这样需要声明一大批的COM接口,类型,枚举却是一件漫长又枯燥的事件,而且搞不好一个不小心中间出个错误,导致最后调试总不通过而抓狂。即便是现在有了DirectShow.NET提供的对绝大部分的DirectShow的C#翻译,可是面对网上那么多的C++开源代码还有少得可怜的C#操作DirectShow的代码,你会怎么办?难道又是一行一行的翻译成C#吗,反正我是不会这样干的,于是这种方式首先被毙掉了。 俗话说最优秀的程序员也是最懒的程序员,类和方法能公用的就尽量公用,已存在的实现就不需要自己再去写一次了。既然有现成的C++的实现好的代码为什么不可以再次拿来用一用呢。可是在C#里面想要使用C++的实现(注意这里我用的是实现,并没有指定是类或方法),比较常见的是通过 DllImportAttribute特性导入相应的程序集,可是这种方式只可以调用方法,而且是限定死了的只能是C语言形式的导出方法。 阅读全文

posted @ 2008-12-22 14:23 阅读(2000) 评论(1) 推荐(2) 编辑

摘要:上一篇我们讲到了C#中创建COM对象的几种方式。不知大家也注意到了,最后一种方式中JetEngineClass类并没有提供方法供我们调用,要使用它的话必须先把这个引用转成接口引用才能直接使用里面的方法,实现早期函数绑定。虽然我们在声明JetEngineClass类的时候并没指定该类实现了IJetEngine接口,但是后面在使用的时候却直接把engine用as操作转成了IJetEngine接口,而且居然转成功了。而且大家也可以用is操作符测试一下,engine is IJetEngine反回的结果也为true。这就是本篇要讲的---C#中COM对象接口的查询。 阅读全文

posted @ 2008-08-01 12:22 阅读(3498) 评论(0) 推荐(0) 编辑

摘要:用C#做WinForm程序,时间长了难免会遇到和COM组件打交道的地方,用什么方式创建COM对象也成了我们必须面对的一个问题.据我所知道的创建COM对象的方法一共有以下几种:.... 阅读全文

posted @ 2008-07-31 11:10 阅读(2644) 评论(3) 推荐(1) 编辑

点击右上角即可分享
微信分享提示