博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

02 2012 档案

摘要:xml文件格式如下:<?xml version="1.0" encoding="utf-8"?><userdata createuser="false"> <dataconnection> <server>localhost</server> <uid>sa</uid> <pwd></pwd> </dataconnection><net> <name>jiayuan</name> 阅读全文

posted @ 2012-02-27 11:32 未页 阅读(173) 评论(0) 推荐(1) 编辑

摘要:对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式,数据按照这种格式在网络中传输然后再通过XSLT将数据转换成用户期望的样子表示出来,这样便轻易的解决了数据格式不兼容的问题。用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方! 我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML。下面我们来了解一下使用程序访问XML的一些基础理论知识。 访问的两种模型: 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象... 阅读全文

posted @ 2012-02-23 13:49 未页 阅读(505) 评论(0) 推荐(1) 编辑

摘要:新建项目->VisualC++->win32->Win32项目->输入项目名称->next->应用程序类型选dll,附加选项选上“导出符号”,添加公共头文件视情况可以加上MFC->完成。 此时生成的项目有示例代码,可以在原来的代码上修改。 需要注意的是: #define 项目名_APIextern "C" _declspec(dllimport) 原来的宏定义可能不包括extern "C",加上可以被C#等语言调用。 在C#中调用的时候,把dll放到目录中, using System.Runtime.Intero 阅读全文

posted @ 2012-02-22 15:00 未页 阅读(1281) 评论(0) 推荐(0) 编辑

摘要:C#程序实现动态调用DLL的研究摘要:在《csdn开发高手》2004年第03期中的《化功大法——将DLL嵌入EXE》一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也有相似的VB程序,但在某一技术论坛上提起这种设计方法时,有网友提出:“这种方法好是好,但就是启动速度太慢”。这是因为程序启动时实现DLL释放,然后再加载释放出来的DLL,这个过程会 阅读全文

posted @ 2012-02-22 14:59 未页 阅读(1044) 评论(0) 推荐(1) 编辑

摘要:被C#调用的DLL一般只需要把导出的函数以适当的形式呈现即可调用,比如extern "C" __declspec(dllexport)BOOLIntegrate3 (){...},这样的函数,在C#里面声明如:[DllImport("xxx.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)] public static extern bool Integrate3();,这里的调用相对是简单的,而有些数据类型则必须通过MarshalAs来做托管类 阅读全文

posted @ 2012-02-22 14:58 未页 阅读(1157) 评论(0) 推荐(0) 编辑

摘要:本来是想实现控制台程序运行时自动全屏,但是只找到VC下的实现方法(http://www.vckbase.com/bbs/prime/viewprime.asp?id=347)。其中要使用两个未公开的Win32 API函数来存取控制台窗口,这就需要使用动态调用的方法,动态调用中使用的Windows API函数主要有三个,即:Loadlibrary,GetProcAddress和Freelibrary。步骤如下:1.Loadlibrary:装载指定DLL动态库2.GetProcAddress:获得函数的入口地址3.Freelibrary:从内存中卸载动态库但是C#中是没有函数指针,无法直接使用Ge 阅读全文

posted @ 2012-02-22 14:25 未页 阅读(540) 评论(0) 推荐(0) 编辑

摘要:原来的工程是用C++语言编写的。如果需要在C#工程中调用c++完成的功能模块,一个简单的做法就是将原有C++模块封装为动态链接库(DLL), 而在c#中直接导入已有的DLL 接口。具体的做法如下:(1) 将原来C++模块封装为DLLa.创建和使用动态链接库(2) 在C#工程中声明导入的DLL中函数接口一个简单的实例如下:假设已有C++ 函数publicstaticexterninttutorial (int*z,int*x,int* y ); // C++函数声明为了在C# 中调用tutorial函数,需要在相应的CS文件中导入相关的函数声明:using System.Runtime.Inte 阅读全文

posted @ 2012-02-22 14:15 未页 阅读(423) 评论(0) 推荐(0) 编辑

摘要:引用:http://www.cnblogs.comhttp://archive.cnblogs.com/moonz-wu/archive/2008/02/29/1086759.html这篇文章没有什么新意,在2004年的时候就有人写过那时候VS还只是2003版,而且网络上也有很多转来转去的文章,其实一共那么两三篇。其实我也是从那里学来的,只不过中间经历的一些郁闷,因为那些文章没有提到一些注意的事项确是很烦人。1. 建立一个C#控制台工程,主要用于调试。2. 在解决方案中添加一个新的空工程(VC++的)。3. 添加一个源文件到Source Files文件夹(xxx.c or xxx.cpp)。4 阅读全文

posted @ 2012-02-22 10:46 未页 阅读(478) 评论(0) 推荐(0) 编辑

摘要:usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.Runtime.InteropServices;//注入dll需要引用的命名空间 namespaceTG300 { publicclassTG300API { //打开读写器 [DllImport("RM300API.dll",EntryPoint="OpenReader")]//在这里注入dll和对应的C++的方法 publicstaticexternIntPtrOpenReader([MarshalA 阅读全文

posted @ 2012-02-22 10:26 未页 阅读(291) 评论(0) 推荐(0) 编辑

摘要:这几天公司需要做一个通过刷卡来控制用户上网的功能。我先扩展了windows DDK的passthru源码包,生成了一个NDIS中间层驱动文件。接下来就要写程序控制这个驱动,以达到上网控制的目的。控制程序是用C++代码完成的,先编译成动态链接库(dll)文件。编译的过程就不再废话了,网上很多。这里提示一点就是开始建立MFC dll工程的时候,应该选择“动态链接库和MFC静态链接”这一项,这样编译出来的dll文件是不需要引入库文件(.lib)的。生成好后,得到dll文件(如ForbidNetDll.dll),写一个简单的C#类,例如前面的dll文件导出函数为int forbidNet(int fl 阅读全文

posted @ 2012-02-22 10:24 未页 阅读(359) 评论(0) 推荐(0) 编辑

摘要:在最近要做的一个项目中,其核心算法是用C++写的,而界面部分准备用C#实现是较好的选择,这就需要在C#的框架中调用C++部分。在C#中调用C++组建大致有两种方法,一种是将它封装成COM,另一种是封装成动态链接库(DLL)。文章《如何在C#中加载自己编写的动态链接库(DLL)》对这两者做了大致比较,详细讲解了后一种方法,在MSDN的中文版中也有对这个问题更专门的讲解:在 C# 中通过 P/Invoke 调用Win32 DLL。C++和C#中所用的数据类型不同,机制也有所区别,在传递参数时需要特别注意。在C#和C++中还可以通过COM组建的方式来共享数据。比如我要做的这个项目中,C#和C++部分 阅读全文

posted @ 2012-02-22 10:14 未页 阅读(623) 评论(0) 推荐(1) 编辑

摘要:为了能用上原来的C++代码,只好研究下从C# 中调用DLL首先必须要有一个声明,使用的是DllImport关键字:包含DllImport所在的名字空间using System.Runtime.InteropServices;public class XXXX{[DllImport(“MyDLL.dll")]public static extern int mySum (int a,int b);}[DllImport(“MyDLL.dll")]public static extern int mySum (int a,int b);代码中DllImport关键字作用是告诉编 阅读全文

posted @ 2012-02-22 09:12 未页 阅读(521) 评论(0) 推荐(1) 编辑

摘要:通过调用Win32 API实现。publicclassUser32API{privatestaticHashtableprocessWnd=null;publicdelegateboolWNDENUMPROC(IntPtrhwnd,uintlParam);staticUser32API(){if(processWnd==null){processWnd=newHashtable();}}[DllImport("user32.dll",EntryPoint="EnumWindows",SetLastError=true)]publicstaticexter 阅读全文

posted @ 2012-02-21 17:13 未页 阅读(773) 评论(0) 推荐(2) 编辑

摘要:Have an application functionaluty which has 4 forms which are needed to interact by the user by dragging data from these forms to one anotherthe main form is located in the MDI Parent and the rest are on their respective screen (3 other secondry screens)At the moment i am testing using 2 screens but 阅读全文

posted @ 2012-02-21 14:09 未页 阅读(2622) 评论(3) 推荐(0) 编辑

摘要:分屏显示即可把一台主机内运行的多个程序分别显示在不同的两个(或多个)屏幕上。目前市面上主流的显卡都支持分屏显示(显示双屏幕),如果需要显示2个以上的屏幕,则应使用“拖机卡”类的硬件。设置分屏显示的两种方法如下:1、用两个显卡连接两台显示器,进入系统后,分清楚哪一个是主显卡,在桌面空白处右键单击,点属性,然后在窗口中点“设置”选项卡,会看到有两个显示,分别是1(主显卡)和2(副显卡),点击那个2,在下面的“将windows桌面扩展到该监视器”打上对号,确定后,你试着把鼠标往主显示器右边界移动,再移动,鼠标会跑到第二台显示器上去了,这样,同样运行几个程序,分别将它们的窗口拖拽到两个显示器的区域中就 阅读全文

posted @ 2012-02-21 14:07 未页 阅读(8371) 评论(8) 推荐(1) 编辑

摘要:在窗口的中间有一个System.Windows.Forms.PictureBox控件(该控件区域的面积为所在窗口的1/4),当该控件的大部分区域落在其中一台显示器时,在另一台显示器将不显示该控件,(该PictureBox控件将移动到主显示器所在的窗口区域)。 实现方法:using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace WindowsApplication12{// 阅读全文

posted @ 2012-02-21 10:31 未页 阅读(981) 评论(0) 推荐(0) 编辑

摘要:这几天研究了一下Windows系统的多显示器模式的编程,实现了Windows下支持10显示器模式的通用com组件,这里做一个整理和回顾,希望能对再这方面开发的兄弟们有些启发和帮助:(一) Windows系统下的多显示器模式的原理 Microsoft新的操作系统(Windows 98\Windows2000\WindowsXP)内置了对多监视器的支持,即用户可以在一台计算机上安装多个显示卡并接上多个显示器,然后把这些显示器的显示区域组织成一个大的虚拟的Windows桌面。每一个显示区域的底部都有系统任务栏,我们可以在任何一个显示区域内增加桌面快捷方式,这样就可以在第一个显示区域上用Visual 阅读全文

posted @ 2012-02-21 10:28 未页 阅读(831) 评论(0) 推荐(0) 编辑

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