博文

简单认识HOOK(2008-01-22 13:58:00)

摘要:SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,NULL,GetCurrentThreadId());   第一个为消息类型,听说有13种 第二个为返回消息 第三个为HINSTANCE 第四个为(用DLL全局钩子的话该项可为0)线程ID   LRESULT CALLBACK KeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam) 消息处理   LRESULT CALLBACK KeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
 CString str;
 int keydown ;
 for(keydown=0x41 ;keydown<=0x5A;keydown++)
 {
  if((DWORD)keydown == wParam)
  {
   if(FindWindow(NULL,"获取按键值") != NULL)
   {
    CHOOK_KEYBOARDDlg * ck ;
   // ck =(CHOOK_KEYBOARDDlg *)FindWindow(NULL,"获取按键值") ;
   // ck =(CHOOK_KEYBOARDDlg *)GetActiveWindow();
   // ck =(CHOOK_KEYBOARDDlg   *)GetParent(GetActiveWindow());
   // ck->m_hWnd =Fin......

阅读全文(2787) | 评论:0

转dll学习笔记-隐式调用 (2007-10-26 16:43:00)

摘要:http://blog.sina.com.cn/s/blog_4aaf9c3d010006rn.html......

阅读全文(2323) | 评论:0

VC调用DLL问题(2007-08-16 09:54:00)

摘要: VC调用DLL问题  提问: 在vc里编译成功了一个dll,怎么在另一个程序里调用它. 参考文章: 选择具有高可用性的数据库: SQL Server与Oracle对比分析 3 选择具有高可用性的数据库: SQL Server与Oracle对比分析 2 选择具有高可用性的数据库: SQL Server与Oracle对比分析 1 Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择 在 Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择 ASP分页函数 纯ASP代码生成图表函数1——柱状图调用示例 asp中随机生成文件名的函数 asp中加密与解密对应的函数 如何把ASP编写成DLL 网友回答: 发表者:chunhai12 hmodule   loadlibrary(  
      lpctstr   lpfilename       //   file   name   of   module  
  );  
   
  例如  
   
  hinstance   hlibrary;  
  hlibrary=loadlibrary("mydll.dll");  
  //……  
  freelibrary(hlibrary); 发表者:healer_kx 加入lib和头文件,   把dll放在exe的目录。 发表者:zengwujun 下面通过例子介绍如何在动态链接库中定义函数、资源、和类以及如何在工程中使用动态链接库中已定义的函数、资源、  
   
  类。   ......

阅读全文(15334) | 评论:0

利用VC从DLL传递消息到EXE(2007-08-16 09:33:00)

摘要:http://www.pcdog.com/edu/vc/2005/12/s056892.html   利用VC从DLL传递消息到EXE 来源:CSDN 作者:sundy26 2005-12-17 出处:pcdog.com
下一页 1 2 3 4    在进行DLL开发过程中,尤其在进行底层硬件开发过程中,比如实时接收数据,进程需要和应用程序进行交互,而DLL和应用程序最好的交互就是发消息了,在DLL中定义消息的方式和在应用程序中定义消息的方式非常相似。下面谈谈这两种定义的方法:   一、在应用程序自定义消息方法:         一般自定义消息有一定的范围,虽然说自定义消息从WM_USER开始,但是由于我们的工程里面一般还有很多其他的控件,他们也要占用一部分WM_USER消息范围,所以我们必须为他们留出一部分范围,这里,我们保留100个消息,一般情况下,这可以满足我们的要求。   (1)    定义消息的值。在我们要发生消息的地方(例如CMyView.cpp的开始部分)或者stdafx..h文件,进行如下定义:
#define WM_MSG  (WM_USER+101)           接下来的工作其实很简单,我们在前面说了,消息正常工作有3个部分必须协调:消息声明、消息映射、消息体。我们就一次进行手工加入。         (2)首先在AFX_MSG块中加入消息声明:在CMyView.h中,找到如下部分,并加入消息声明:
         protected:          &......

阅读全文(2418) | 评论:0

一步一步教你用vc和vb调用c++ dll(2007-08-15 11:04:00)

摘要:http://www.51goushu.com/view.asp?id=500 一步一步教你用vc和vb调用c++ dll

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:445
Step by Step: Calling C++ DLLs from VC++ and VB一步一步教你用VC和VB调用C++ DLL.作者 Hans Dietrich 翻译烟灰介绍本系列教程讨论了普通情况下4种使用DLL的方法

Part 1
从VC++应用程序调用C++ DLL的函数
从VC++应用程序调用C++ DLL的类
Part 2
从VB应用程序调用C++ DLL的函数
Part 3
从VB应用程序调用C++ DLL的类
Part 4
从VC++应用程序动态的调用C++ DLL的函数


从VC++应用程序调用C++ DLL的函数Visual Studio 6 使创建包含函数或类的动态连接库(DLL) 变得非常容易.


第一步打开 Visual Studio 然后选择 File | New菜单项:
选择 Win32 Dynamic Link Library, 输入工程名, 敲 OK.

选择 A DLL that exports some symbols 并单击Finish.在File View里你会看到如下的工程文件:

第二步在Test.cpp里,你将看到如下代码:// Test.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#include "Test.h"

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
switch (ul_reason_for_call)
......

阅读全文(5121) | 评论:0

VC实现串行通信的动态链接库- -(2007-08-15 10:27:00)

摘要:时间:2005-06-27 作者:刘建武    本文是作者根据工程中的实践经验,以实例方式介绍了用VC++编写DLL实现串行通信的方法,并给出了用其它语言调用该DLL的范例。   一、引言   串行通讯口作为计算机与外部串行设备进行数据传输的重要端口,因其使用简单、方便,在业界的各种计算机系统中得到了广泛的应用。由于应用范围很广,软件人员在串行通信方面也积累了丰富的编程经验。关于串行通信的文章不时见于报端,并且还有一些专门讨论串行通讯编程的书籍,为软件人员提供了丰富的资源,同时对初次涉足串口编程的软件开发者提供很好的范例帮助。   虽然关于串口编程的资料很多,但由于工程上需求多种多样,需要根据不同的条件对串口进行灵活控制,在实际应用中,常用的方法有:   (1)用汇编或标准通讯函数,往指定端口直接读写数据;   (2)利用Visual Studio提供的MSComm控件;   (3)使用Windows提供的API函数。   本文是作者在工程实践中根据实际需要,在Visual C++环境中,直接使用Windows提供的API函数实现一个串行通信动态链接库(DLL)的完整实例,实例既给出了DLL函数的编写方法,又包括一份用其它编程工具(VB)对此DLL进行声明及调用的范例。为了使读者一目了然,并减少代码量,本例作了简化,但完全可以运行。希望对需要进行串行通信编程的同行以及需要学习编写DLL的编程爱好者提供一点帮助。   二、准备知识   1.DLL基本概念   动态链接库(DLL) 是Windows操作系统的基础,Windows API中的所有函数就是包含在DLL中,它有众多优点,如:简化软件项目管理以便分工合作,有助于节省内存,便于资源共享并且可以用多种语言来编写。   用VC++ 编写动态链接有以下四种类型:Win32 DLL、MFC常规DLL(动态链接MFC)、MFC常规DLL(静态链接MFC)、MFC扩展DLL等,关于它们之间的区别,在此不一一介绍,可参阅相关文档。本程序的编写为Win32 DLL。   2.串行通信基础知识   在Windows系统,系统通过一个叫DCB(Device Control Block)的结构对串行口进行配置,通过Windows API GetCommState函数可以得到......

阅读全文(3123) | 评论:0

深入浅出Visual C++动态链接库(Dll)编程(2007-08-14 14:59:00)

摘要:http://soft.yesky.com/lesson/318/2166818.shtml   深入浅出Visual C++动态链接库(Dll)编程

  动态链接库(DLL)是Windows系统的核心,也是COM技术的基础,因此突破动态链接库一直是技术人员的攻坚目标,本期专题将由浅入深的介绍动态链接库的基础慨念、分类、实现和应用。
 基础慨念   我想首先阐述一下动态链接库DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。[全文阅读]
 非MFC DLL   前文给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。[全文阅读]  MFC规则DLL   MFC规则DLL的概念体现在两方面: (1) 它是MFC的; “是MFC的”意味着可以在这种DLL的内部使用MFC; (2) 它是规则的; “是规则的”意味着它不同于MFC扩展DLL,在MFC规则DLL的内部虽可以使用MFC,但其与应用程序的接口不能是MFC。而MFC扩展DLL与应用程序的接口可以是MFC,可从MFC扩展DLL中导出一个MFC类的派生类。 [全文阅读]
 MFC扩展 DLL   MFC扩展DLL与MFC规则DLL的相同点在于在两种DLL的内部都可以使用MFC类库,其不同点在于MFC扩展DLL与应用程序的接口可以是MFC的。MFC扩展DLL的含义在于它是MFC的扩展,其主要功能是实现从现有MFC库类中派生出可重用的类。[全文阅读]
 DLL典型实例   动态链接库DLL实现了库的共享,体现了代码重用的思想。我们可以把广泛的、具有共性的、能够多次被利用的函数和类定义在库中。这样,在再次使用这些函数和类的时候,就不再需要重新添加......

阅读全文(2715) | 评论:0

DLL是如何运做的?(2007-08-14 14:46:00)

摘要:一、从DLL技术说起

要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重......

阅读全文(2733) | 评论:1