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

2012年2月22日

摘要: 引用: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 未页 阅读(475) 评论(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 未页 阅读(287) 评论(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 未页 阅读(356) 评论(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 未页 阅读(615) 评论(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 未页 阅读(517) 评论(0) 推荐(1) 编辑

2012年2月21日

摘要: 通过调用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 未页 阅读(762) 评论(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 未页 阅读(2600) 评论(3) 推荐(0) 编辑

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

posted @ 2012-02-21 14:07 未页 阅读(8322) 评论(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 未页 阅读(978) 评论(0) 推荐(0) 编辑

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

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