使用PythonHook做Hook

使用PythonHook做Hook
使用PythonHook做Hook

PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件。这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所以PyHook也只能运行在Windows平台。

关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用:

01 # -*- coding: utf-8 -*-

02 #

03 # by oldj

04 # https://www.360docs.net/doc/e52999415.html,/

05 #

06

07 import pythoncom

08 import pyHook

09

10 def onMouseEvent(event):

11 # 监听鼠标事件

12 print "MessageName:", event.MessageName

13 print "Message:", event.Message

14 print "Time:", event.Time

15 print "Window:", event.Window

16 print "WindowName:", event.WindowName

17 print "Position:", event.Position

18 print "Wheel:", event.Wheel

19 print "Injected:", event.Injected

20 print "---"

21

22 # 返回 True 以便将事件传给其它处理程序

23 # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截

24 # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了

25 return True

26

27 def onKeyboardEvent(event):

28 # 监听键盘事件

29 print "MessageName:", event.MessageName

30 print "Message:", event.Message

31 print "Time:", event.Time

32 print "Window:", event.Window

33 print "WindowName:", event.WindowName

34 print "Ascii:", event.Ascii, chr(event.Ascii)

35 print "Key:", event.Key

36 print "KeyID:", event.KeyID

37 print "ScanCode:", event.ScanCode

38 print "Extended:", event.Extended

39 print "Injected:", event.Injected

40 print "Alt", event.Alt

41 print "Transition", event.Transition

42 print "---"

43

44 # 同鼠标事件监听函数的返回值

45 return True

46

47 def main():

48 # 创建一个“钩子”管理对象

49 hm = pyHook.HookManager()

50

51 # 监听所有键盘事件

52 hm.KeyDown = onKeyboardEvent

53 # 设置键盘“钩子”

54 hm.HookKeyboard()

55

56 # 监听所有鼠标事件

57 hm.MouseAll = onMouseEvent

58 # 设置鼠标“钩子”

59 hm.HookMouse()

60

61 # 进入循环,如不手动关闭,程序将一直处于监听状态

62 pythoncom.PumpMessages()

63

64 if __name__ == "__main__":

65 main()

运行上面的脚本,试试看移动一下鼠标,或者按一下键盘(比如开一个记事本程序,随便写点东西),看看这个脚本输出了什么。你会发现,你的鼠标、键盘的每一个动作都被它捕捉到并打印出来了。

另外,需要注意上面两个监听函数的返回值。这两个函数可以没有返回值(实际上返回的是 None),如果有返回值的话,如果返回值为 True,则这个脚本在捕捉、处理对应的事件后会把事件继续传递下去,如果返回值为 False,则事件将会被阻塞在这儿,具体来说,就是你的鼠标或键盘将不再有响应。

有了 PyHook,我们可以做很多有趣的事情:比如记录一下自己一天鼠标的轨迹,再结合别的程序画一张图出来;或者记录一下你每天的按键记录,看看键盘上哪些键你按得最多;如果你很坏,还可以把它悄悄地装在别人的电脑中,看一看那个人一天都做了些什么;当然,由于 PyHook 还可以取得当前窗口的标题(WindowName),你还可以记录下来一天之中你在各个程序上花费了多少时间,看看自己有多少时间在看网页、多少时间在聊天、多少时间在真正地工作,呵呵。

hook的使用实例

在网上找了好久都没有找到消息hook的实例,下面是我的例子给大家分享一下 下面是dll中的代码: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //我的经验,编译的时候会提示DllMain,已在DllMain.cpp中定义,把DllMain.cpp从源文件里删掉就好了 #include "stdafx.h" #include HHOOK hkey=NULL; HINSTANCE h_dll; #pragma data_seg(".MySec") //定义字段,段名.MySec HWND h_wnd=NULL; #pragma data_seg() #pragma comment(linker,"/section:.MySec,RWS") BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { h_dll=hinstDLL; // MessageBox(0,"运行dllman","",MB_OK); return TRUE; } LRESULT CALLBACK my_test(int nCode,WPARAM wParam,LPARAM iParam)// { /* if(nCode==HC_ACTION) { MessageBox(0,"成功!!","标题",MB_OK); } else { MessageBox(0,"失败!!","标题",MB_OK); } */ MessageBox(0,"被截取","",MB_OK); UnhookWindowsHookEx(hkey); return 1; } void SetHook(HWND hwnd) { h_wnd = hwnd; // MessageBox(0,"运行sethook","",MB_OK); hkey=SetWindowsHookEx(WH_KEYBOARD,my_test,h_dll,0); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 下面是EXE的代码:有很多头文件是没用上的,我个人习惯都带着- -,虽然这不是好习惯

SQLSERVER2008开启远程数据库访问图解

SQL SERVER2008开启远程数据库访问图解moon.翘楚 2012-02-19 8:52 转载自zhangcheng1 最终编辑zhangcheng1 tag:sql server2008远程数据库,远程连sql,IP远程连SQL SERVER,1433端口映射 这篇文章不错,我试验了确实可以,moon.翘楚在这里再进行一下图文增补,让大家更加明白。 讲解SQL Server 2008开启远程连接 作者:blue1000出处:IT专家网论坛2010-06-23 07:00 sql server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: sql server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 1,SQL Server Management Studio Express(简写SSMS) 2,SQL Server 配置管理器/SQL Server Configuration Manager(简写SSCM) 有两点要注意: 1,2005的外围应用配置器在2008中换了地方 2,有些设置生效需要重启一下SQL Server step 1: 打开SSMS,用windows身份连接数据库,登录后,右键选择“属性” step 2: 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证模式”以启用混合登录模式 step 3: 选择“连接”,勾选“允许远程连接此服务器”,然后点“确定” step 4: 展开“安全性”->“登录名”->“sa”,右键选择“属性” step 5: 左侧选择“常规”,右侧选择“SQL Server 身份验证”,并设置密码 step 6: 选择“状态”,选中“启用”,点击“确定” step 7: 右击数据库选择“方面”

网络连接数据库

package day01; import java.sql.Connection; import java.sql.DriverManager; public class JDBCConnection { public static void main(String[] args) throws Exception { //注册驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //连接 Connection conn=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.7.134:1521:orcl", "system","tarena"); System.out.println(conn); } } NetCTOSS 电信运营支撑系统 资费管理模块资费: cost/fee 主要功能: 针对资费信息的CURD(增删改查)操作. 常见的企业级应用 OSS : 运营支撑系统 CRM: 客户关系管理 ERP: 企业资源规划 技术: JavaEE开发、JavaWeb开发 JavaSE JavaEE Web技术数据库 常见的软件架构体系: (1) C/S client/server客户端/服务架构 client 需要单独安装客户端软件QQ serve 服务器端软件 优点: 客户端可以单独开发,功能和界面可以非常丰富 缺点: 软件的升级成本高 (2)B/S browser/server浏览器/服务架构 是一种特殊的c/s结构 client: 浏览器Browser IE/Firefox/chrome server: 服务器Web服务器 http协议超文本传输协议简单、无状态的协议请求request和应答response

用PLSQL远程连接Oracle数据库

PL/SQL Developer 远程连接Oracle数据库 1、配置服务器tnsnames.ora文件,如果本机上没有安装oracle,可以从安 装了oracle的机上拷贝一个(tnsnames.ora文件)放在指定目录下,因为我已安装oracle,所以直接配置该文件。 # tnsnames.ora Network Configuration File: D:\Oracle11g\product\11.2.0\dbhome_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.25.224)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) orcl为远程Oracle数据库的实例名,IP地址和端口也要配置正确。 2、配置完成后,Oracle客户端应该可以连接到远程Oracle 数据库上。

数据库系统的访问

第7章数据库系统的访问 对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。 这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S,B/S系统中必须广泛使用访问接口技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。常见的数据库访问接口的技术有固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.360docs.net/doc/e52999415.html, 以及基于XML的数据库访问等几种流行的方式。这其中以ODBC技术和JDBC技术应用最广泛,也是目前最为优秀的访问接口方式。 本章主要对几种常见的数据库访问技术(如固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.360docs.net/doc/e52999415.html,以及基于XML的数据库访问等)进行介绍。 7.1 数据库的访问接口 所谓访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。 访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。 ⑴网络透明性:能支持所有类型的网络。 ⑵服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的访问接口都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。 ⑶语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。 应用系统访问数据库的接口方式有多种,本节介绍固有调用、ODBC和JDBC。 7.1.1 固有调用 每个数据库引擎都带有自己的包含用于访问数据库的APl函数的动态链接库DLL,应用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就说它执行的是“固有调用”,因为该调用对于特定的数据库产品来说是“固有” (专用)的。 固有调用接口的优点是执行效率高,由于是“固有”,编程实现较简单。但它的缺点也是很严重的:不具通用性。对于不同的数据库引擎,应用程序必须连接和调用不同的专用的动态链接库,这对于网络数据库系统的应用是极不方便的。 7.1.2 ODBC ODBC是“开放数据库互连”(Open Database Connectivity)的简称。ODBC是Microsoft 公司提出的、当前被业界广泛接受的应用程序通用编程接口(API)标准,它以X/Open和ISO/IEC的调用级接口(CLI)规范为基础,用于对数据库的访问。我们可以用如下图示来说明ODBC概念。

数据库访问技术

7.2 数据库访问技术 访问数据库中的数据对象时,一般可采用两种访问方式:一是登录用户直接借助DBMS 的数据操纵工具,通过图形或SQL命令接口联机访问;另外一种为程序代码通过应用程序编程接口(Application Programming Interface,API)进行数据库连接验证以及数据操作。两种数据库访问方式,可以抽象为图7.5的层次结构,从中可见中间的接口组件是数据库访问的桥梁与核心,本节主要就该部分的通用接口技术(即API访问方式)部分进行介绍。 图7.5 数据库访问结构示意 根据底层数据操作模式的差异,数据库接口可简单分为:本地(Local)数据库接口和客户机/服务器(Client/Server)数据库接口。 1.本地数据库接口 通过DBMS将用户数据请求转换成为简单的磁盘访问命令,并交由操作系统的文件管理系统执行;然后DBMS从文件管理系统得到数据响应并加以处理。由于DBMS数据文件组织结构的差异,本地型DBMS只能够读取特定的数据源。 2.客户机/服务器数据库接口 数据处理工作分散到工作站和服务器上处理。工作站通过特定的数据库通信API,把数据访问请求传给相应的服务器的后端数据驱动程序。由于不同客户机/服务器数据库管理系统通信机制的差异,异构数据库之间也难以实现透明通信互访。 因此,仅依靠特定DBMS提供的数据库访问接口难以支撑透明的、通用的异构数据库访问。后台数据库管理系统的变更或升级,需要程序员对特定API的重新学习,以及对应用程序代码的改写;而市场上DBMS产品众多,必将进一步加大系统开发人员的学习和维护压力,应用程序与数据源间的独立性难以真正实现。为此,建立更为通用的数据访问技术规范,为程序用户提供一套完整、统一的数据库访问接口,得到了数据库业界广泛认同与支持,并由此产生了众多成熟的数据库访问接口应用技术规范。 到目前为止,主流的数据库访问技术包括ODBC、MFC ADO、RDO、OLE DB、ADO、https://www.360docs.net/doc/e52999415.html,以及JDBC等通用技术标准。这些通用数据库访问技术的出现与发展大大降低了数据库系统开发与维护门槛,改善了数据库系统的移植性、扩展性,极大推动了数据库技术的发展与普及。下面就主流数据库访问技术发展与演化进行介绍。

常用钩子的类型

常用钩子的类型 1、WH_CALLWNDPROC 1、WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可以监视发送到窗口过程的消息。系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook子程,并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRET Hook 子程。 WH_CALLWNDPROCRET Hook传递指针到CWPRETSTRUCT结构,再传递到Hook子程。CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息关联的消息参数。 2、WH_CBT Hook 在以下事件之前,系统都会调用WH_CBT Hook子程,这些事件包括: 1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件; 2. 完成系统指令; 3. 来自系统消息队列中的移动鼠标,键盘事件; 4. 设置输入焦点事件; 5. 同步系统消息队列事件。 Hook子程的返回值确定系统是否允许或者防止这些操作中的一个。 3、WH_DEBUG Hook 在系统调用系统中与其他Hook关联的Hook子程之前,系统会调用 WH_DEBUG Hook子程。你可以使用这个Hook来决定是否允许系统调用与其他Hook关联的Hook子程。 4、WH_FOREGROUNDIDLE Hook 当应用程序的前台线程处于空闲状态时,可以使用WH_FOREGROUNDIDLE Hook执行低优先级的任务。当应用程序的前台线程大概要变成空闲状态时,系统就会调用WH_FOREGROUNDIDLE Hook子程。 5、WH_GETMESSAGE Hook 应用程序使用WH_GETMESSAGE Hook来监视从GetMessage or PeekMessage函数返回的消息。你可以使用WH_GETMESSAGE Hook去监视鼠标和键盘输入,以及其他发送到消息队列中的消息。

SQL2000数据库实现远程连接

SQL 2000数据库怎么实现远程连接 SQL Server 2000无论是个人版、企业版还是标准版,只要细版本在8.00.1760以下,均不提供远程数据库连接,即使服务器端工具和客户端工具的设置均有TCP/IP设置和数据库连接属性也设置了RPC远程连接,仍然不能实现远程连接。该怎么解决呢? 解决方案如下: 首先,需要打SP4补丁,该补丁包含了以前sp1、2、3的补丁,安装此补丁后一般要重新启动计算机,再进行远程连接就可以了,如再企业管理器可远程注册服务器、查询分析可连接远程服务器、ODBC可连接远程服务器。 要点: 1.确认服务器端SQL服务端口号是否为:1433 2.如果不是1433,配置客户端 3.建立服务器端登录帐号,确保角色及管理数据库 一、查看服务器端情况 1. 看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 服务器的IP拼写正确。 2. 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433 通常端口值是1433,因为1433是sql server 的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。 如果这一步有问题,应该检查以下选项。 1) 检查远程服务器是否启动了sql server 服务。如果没有,则启动。 2) 检查sql server服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。 3) 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。 事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏sql server服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变(具体方式见二:设置客户端网络实用工具)。

恶意插件务必清除,介绍几种手工清除方法

20种恶意插件手工清除方法 如今,恶意软件及插件已经成为一种新的网络问题,恶意插件及软件的整体表现为清除困难,强制安装,甚至干拢安全软件的运行。下面的文章中就给大家讲一部份恶意插件的手工清除方法,恶意插件实在太多,无法做到一一讲解,希望下面的这些方法能为中了恶意插件的网友提供一定的帮助。 1、恶意插件Safobj 相关介绍: 捆绑安装,系统速度变慢,没有卸载项/无法卸载,强制安装,干扰其它软件正常运行, 清除方法: 重新注册IE项,修复IE注册。从开始->运行 输入命令 regsvr32 actxprxy.dll 确定 输入命令 regsvr32 shdocvw.dll 确定 重新启动,下载反间谍专家查有没有ADWARE,spyware,木马等并用其IE修复功能修复IE和注册表,用流氓软件杀手或微软恶意软件清除工具清除一些难卸载的网站插件。 到https://www.360docs.net/doc/e52999415.html,下载KillBox.exe。在C:\Program Files\Internet Explorer\目录下,把LIB 目录或Supdate.log删除。 跳窗网页可能保留在HOSTS,一经上网就先触发该网址为默认,就会自动打开,检查HOSTS: 用记事本在C:\WINDOWS\system32\drivers\etc\目录下打开HOSTS 在里面检查有没有网址,有则删除。 或在前面加 127.0.0.1 保存后屏蔽掉。 如果是弹出的信使: 从开始->运行,输入命令: net stop msg net stop alert 即终止信使服务。 2、恶意插件MMSAssist 相关介绍: 这其实是一款非常简便易用的彩信发送工具,但它却属于流氓软件!并采用了类似于木马的Hook(钩子)技术,常规的方法也很难删除它,而且很占用系统的资源。 清除方法: 方法一:它安装目录里第一个文件夹有个.ini文件,它自动从 https://www.360docs.net/doc/e52999415.html,/updmms/mmsass.cab下载插件包,包里有albus.dll文件,UPX 0.80 - 1.24的壳,脱掉用16位进制软件打开发现这个垃圾插件利用HOOK技术插入到explorer和iexplore中,开机就在后台自动运行。 安全模式下,右键点击我的电脑-管理-服务-禁用jmediaservice服务,删除C:\windows\system32下的Albus.DAT,删除C:\WINDOWS\SYSTEM32\DRIVERS下的Albus.SYS,删除彩信通的安装文件夹,开始-运行-regedit-查找所有MMSAssist并删除,如果怕注册表还有彩信通的垃圾存在,下载个超级兔子扫描下注册表再一一删除,你也可以试试超级兔子的超级卸载功能。 要阻止它再次安装,也很简单。彻底删除它之后,你在它原来的位置新建一个与它同名的文件夹,

Rootkit的类型、功能及主要技术

Rootkit的类型、功能及主要技术Rootkit 的类型小结 1.固化Rootkits和BIOS Rootkits 固化程序是存于ROM中,通常很小,使用系统硬件和BIOS 创建顽固的软件镜像。将制定的代码植入到BIOS 中,刷新BIOS,在BIOS 初始化的末尾获得运行机会。重启无用、格式化无用,在硬盘上无法探测,现有的安全软件将大部分的扫描时间用在了对硬盘的扫描上。 本文整理:(第三方信息安全网)https://www.360docs.net/doc/e52999415.html,/ 2 内核级Rootkits 内核级Rootkits(Kernelland Rootkits)是通过修改内核、增加额外的代码、直接修改系统 调用表、系统调用跳转(Syscall Jump),并能够替换一个操作系统的部分功能,包括内核和相关的设备驱动程序。现在的操作系统大多没有强化内核和驱动程序的不同特性。许多内核模式的Rootkit 是作为设备驱动程序而开发,或者作为可加载模块,如Linux 中的可加载模块或Windows 中的设备驱动程序,这类Rootkit 极其危险,它可获得不受限制的安全访问权。如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个系统的稳定性产生深远的影响。 特点:无进程;无端口。与用户级Rootkit 相比,与操作系统处于同一级别,可以修改或破坏由其它软件所发出的任何请求。 3 用户态Rootkits 用户态Rootkits(Userland Rootkits)是运行在Ring3 级的Rootkit,由于Ring3 级就是 用户应用级的程序,而且信任级别低,每一个程序运行,操作系统给这一层的最小权限。用

Labview中远程数据库访问技术

摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。对在局域网中以网络 共享方式访问远程Access数据库进行了详细介绍,最后给出了应用该方法开发的一个实例。关 键词:LabviewADO远程数据库引言Labview是美国NI公司开发的一种图形化编程语言,其主 要用于数据采集、仪器控制、过程监控等领域。Labview具有丰富的采集与分析函数库,在Labview环境下可以方便快捷地开发监控系统软件。现代监控系统一般构建于局域网内,且 摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。对在局域网中以网络共享方式访问远程Access数据库进行了详细介绍,最后给出了应用 该方法开发的一个实例。 关键词:Labview ADO 远程数据库 引言 Labview 是美国NI公司开发的一种图形化编程语言,其主要用于数据采集、仪器控制、过程监控等领域。Labview具有丰富的采集与分析函数库,在Labview 环境下可以方便快捷地开发监控系统软件。现代监控系统一般构建于局域网内,且监控系统自身也是企业生产管理系统的一个子系统,因此不可避免地要访问本地或远程数据库。Labview开发版中并没有提供直接与通用数据库接口的工具,但可以 通过以下方法解决:购买NI公司开发的附加软件工具包;利用其它语言如VC++编写DLL访问数据库;利用ADO控件访问数据库。[1]Labview支持Activex控件,与其它方法相比基于ADO技术构建本地或远程数据库访问接口不失为一种简单而又经济 的方法。 1 ADO技术简介 ADO(Activex Data Objects)是Microsot为OLE DB设计的应用层接口,它为一致的数据访问接口提供了良好的扩展性而不局限于单一的数据源。ADO接口编程模型中包括连接(connection)、命令(command)、参数(parameter)、 记录集(recordset)、字段(field)、错误(error)、属性(property)、集合(collection)、事件(event)等元素。其中connection、command、recordset是三个主体对象,parameters、fields、errors、properties、是四个集合对象。ADO的一般操作方式为:1 连接到数据源;2 指定访问数据源的命令;3 执行命令;4 将命令执行后产生的结果保存在缓存中;5 更新数据源。ADO接口继承了OLE DB的高速性,可以高速访 问本地或远程的数据源。 2在Labview 中使用ADO接口 在Labview 中使用ADO接口访问数据库一般包括以下几个步骤:建立ADO控件;连接到数据源;生成SQL命令;执行命令;关闭连接。具体步骤如图1 所示。 2.1建立ADO控件 在前面板控件模板中选择Activex子模板单击Automation Refnum项,右键单击Select Activex Class的Browse从类型库中选择 Microsoft Activex Data Objects 2.7 library Version 2.7,之后可以向框图程序中加 入connection、command、recordset等对象。 2.2连接到数据源 首先在Diagram中单击鼠标右键,从Function模板选择communication 子模板,从中选择Activex项的Automation Open 与ADODB_Connection相连即 可打开连接。接着同样从communication子模板的Activex项中选择 Invoke node (方法节点)并与Automation Open 相连,在其上单击右键选择methods项的Open方法即出现图1中所示的节点。其中“Open”表示该节点为打开“连接对象”,“ConnectionString”是连接到数据源的字符串,“UserID”和“Password”

第七讲 VB访问SQL Server2000数据库的方法

第七讲 VB访问SQL Server2000数据库的方法 一、ODBC数据源设置 1、ODBC简介 ODBC Open DatabaseConnectivity开放式数据库互连)是Mircosoft公司有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API Application应用程序编程接口)。这些API利用SQL来完成大部分的任务。ODBC本身提供对SQL语言的支持,用户可以直接将SQL送给ODBC一个基于ODBC的应用程序对数据库操作不依赖于任何DBMS,不直接与DBMS打交道,所有数据库操作由ODBC驱动程序完成。 2、ODBC数据源的创建(建立ODBC数据源) 前台系统Windows 2000 professional系统,后台Windows 2000 Server系统。以Windows 2000 professional为例: (1)单击“开始”/设置/控制面板/管理工具/数据源ODBC,打开“ODBC数据源管理器”,选择“用户DSN or 系统DSN”,单击【添加】按钮,打开“创建用户数据源”对话框,选择“SQL Server”,单击【完成】按钮。

(2)打开“创建新的数据源到SQL Server”窗口: ○1你想用什么名称命名数据源:在名称框中输入xn。 ○2服务器:为网络中数据库服务器(默认是本地服务器Local,可选远程服务器IP)。 ○3登陆ID:xn密码:xn(取决于安装SQL时所指定的密码)。特别注意此处为确保数据库安全起见,数据库管理员可以给用户指定一个用户名及密码。这里为简便起见使用管理员用户名及密码。 ○4更改数据库为:aa(所要使用的数据库)。

远程访问数据库

远程访问数据库 对于oracle数据库,可以通过建立dblink的方式,在一个数据库中访问获取另一个数据库的数据,具体实现方式如下: 1.建立DATABASE LINK: 在本机数据库中执行如下语句: Create public database link ERPDATABASE–远程数据库连接名 Connectto apps identifiedby apps Using '(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.100) (PORT = 1521) ) ) (CONNECT_DATA = (SERVICE_NAME = ERPTEST) ) ) ' ; 蓝色部分可以从数据库安装目录\product\10.2.0\db_1\network\ADMIN的路径下找到,拷贝tnsnames.ora文件中的对应信息。 以上连接信息可以用oracle客户端的Net Manager工具生成:

2.查看数据 成功之后,可以在本机数据库中查看ERPTEST数据库的数据: 其中需要注意的有: 1)ygfm为数据库用户名,因为dblink的连接信息中使用的apps用户是数据库dba,所以可以方位ygfm的数据,这里要注意的是apps需要有ygfm的访问权限。 2)注意需要使用’ @ERPDATABASE’标识远程数据库。 3.建立同义词 可以建立同义词减少输入: 执行以下语句: Create synonym ygfm_analyse_base for ygfm.ygfm_analyse_base@ERPDATABASE; 查询: select * from ygfm_analyse_base; 需要注意的是:这里建立的DATABASE LINK 不同于tnsnames.ora文件中的连接信息,这里是在数据库中保存连接信息,而tnsnames.ora文件中的连接信息是在数据库层面之上的。

数据库访问技术简介

数据库访问技术简介 数据库中的数据存放在数据库文件中,我们要从数据库文件中获取数据,先要连接并登陆到存放数据库的服务器。一般来说,访问数据库中的数据有两种方式:一是通过DBMS (Data Base Management System,数据库管理系统)提供的数据库操作工具来访问,如通过SQL Server 2000的查询设计器来提交查询,或者通过SQL Server 2000的企业管理工具来访问。这种方式比较适合DBA对数据库进行管理;二是通过API(Application Programming Interface, 应用编程接口)来访问数据库,这种方式适合在应用程序中访问数据库。 在数据库发展的初期,各个开发商为自己的数据库设计了各自不同的DBMS,因此不同类型的数据库之间数据交换非常困难。为了解决这个问题,Microsoft提出了ODBC(Open Data Base Connectivity,开放数据库互连)技术,试图建立一种统一的应用程序访问数据库接口,使开发人员无需了解程序内部结构就可以访问数据库。 1、Microsoft提出的系列数据库访问技术 1.1、ODBC ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。应用程序可以使用所提供的API来访问任何提供了ODBC驱动程序的数据库。ODBC规范为应用程序提供了一套高层调用接口规范和基于动态链接的运行支持环境。ODBC已经成为一种标准,目前所有的关系数据库都提供了ODBC 驱动程序,使用ODBC开发的应用程序具有很好的适应性和可移植性,并且具有同时访问多种数据库系统的能力。这使得ODBC的应用非常广泛,基本可用于所有的关系数据库。 要使用ODBC,先要了解以下概念:ODBC驱动管理器、ODBC驱动程序、数据源。它们都是ODBC的组件。ODBC组件之间的关系如图1所示。

常见表扣的分类

《外贸手表那些事儿》 外贸钟表交流微信号:YXCsince1989 第一课 第一讲——表扣 根据结构功能使用方法的不同,手表表扣有如下7种基本类型: 手表针扣、手表皮带按扣、手表钩扣、手表蝴蝶扣、手表暗扣、手表折叠扣和手表折叠安全扣。 1. 手表针扣(Buckle)不锈钢材质为多,也有塑料材质的,有单针和双针,是人们平常见得最多的手表表扣之一,它一般被用于皮带手表,硅胶手表,可自行调节手表表带周长,使用方便.可镭射LOGO.

2.手表皮带按扣(leather deployment buckle),蝴蝶扣的一种,使用得高档皮带手表,基本上都是不锈钢材质。因为只固定于皮带一边,因此使用较复杂,但是牢固。可镭射LOGO。

3.手表钩扣(Hook Buckle) ,一般为不锈钢,多用于钢网带和不锈钢带手表.可镭射LOGO。

4 蝴蝶双按扣(Push-Button Hidden Clasp),基本上都是不锈钢,由于连接钢带两边,操作比皮带蝴蝶扣更加方便,佩带舒适,多用于高档不锈钢手表,陶瓷手表。一般不可镭射LOGO(因为藏在表带下面,LOGO看不到),LOGO可做在表带上面。

5.手表暗扣(hidden clasp )基本上都是不锈钢,一般用于钢带手表,折叠起来后与表带浑然一体,非常美观因此也很受人们欢迎。一般不可镭射LOGO(因为藏在表带下面,LOGO看不到),LOGO可以做在表带上面. 6. 手表珠宝扣(Bracelet Clasp) ,有不锈钢材质也有合金材质,一般用于中低档手链手表。操作方便,可镭射LOGO。

7. 手表折叠安全扣(folding clasp with safety),龟背扣的一种,有单按双按,一般为不锈钢材质,单按扣很便宜,是中低档钢带手表中使用率最高的表扣类型,生活中非常常见,不过如果质量不过关的话比较容易松脱。双按保险扣(右图)质量比较好,可以镭射LOGO.

VB访问数据库的方法及接口分析

摘要:本文介绍了几种Visual Basic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互的转化关系。 1VB访问数据库的方法 VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面以列表的方式列出每一类,及每一类包含的方法。 1.1接口对象法(API) VBSQL:通过DB-Library访问微软的SQL Server。 ODBC API:任何一种ODBC数据源16位和32位。 DAO/Jet:本地的Jet/Access.MDB、顺序索引数据库(ISAM)和任何ODBC数据源。 DAO/ODBC Direct:任何一种ODBC数据源(经过RDO)。 RDO2.0:任何一种ODBC数据源(LevelⅠ或Ⅱ)。 ADO:任何一种ODBC数据源和任何经过OLE DB界面接口的数据源。 1.2数据控件法 Data Control:DAO/Jet数据界面接口。 Data Control/ODBC Direct:DAO/ODBC Direct数据界面接口。 RemoteData Control/RDC:RDO数据界面接口。 Advanced Data Connector/ADC:ADO数据界面接口。 2几种接口的比较 ADC(Advanced Data Connector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。 ADO(Active Data Objects):Active数据对象。是DAO/RDO的后继产物,ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件

VB外挂之HOOK技术的最详细教程

vb外挂之HOOK技术终极详细解说 By:史上最大小强 很多学习vb的人都想学习外挂及hook,我在网上也找到了一段程序,后台键盘记录外挂,其实网上大多数流传的HOOK代码都跟这段代码几乎一个出处。网上有关于这些代码的解释,但是关键部分根本就没解释,等于没说。 下面的程序解释得很详细。有的地方全属个人看法,不过还是值得一看。不对的地方欢迎大家指出。当然,高手勿笑。 好吧,正式我们的hook学习。 Hook并不神秘,它说到底就是通过调用API函数在消息队列中安装钩子,实现截获消息,处理消息的功能。在这里,我浅浅的讲讲windows的消息机制。比如,我们按键盘的某个键时,系统就会生成一个消息到系统的消息队列,系统再发送到应用程序消息队列中,windows有不同的消息队列。对于键盘钩子,是安装在系统的消息队列中。 看程序:(以下程序在模块中,呵呵,工程-----添加模块) Option Explicit ‘强制性变量声明,不允许出现未声明的变量。呵呵,都懂!! Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer ‘Getkeystate是api函数,顾名思义,获取某个键的状态,参数nvirtkey就是某个键的虚拟键键码,不同的系统虚拟键码不同。比如vbkeycontrol或者vbkeyshift就可以作为参数。 返回值是16位的,如开关键打开,则位0设为1(开关键包括CapsLock,NumLock,ScrollLock);如某个键当时正处于按下状态,则位15为1;如已经抬起,则为0。数据在储存器中,最高位为1时是负数,为0时是正数。 Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long ‘Setwindowshookex,就是建立钩子的函数,最主要的的函数。 参数: Idhoook:要建立什么类型的hook。 有以下类型: WH_MSGFILTER = -1; 线程级; 截获用户与控件交互的消息 WH_JOURNALRECORD = 0; 系统级; 记录所有消息队列从消息队列送出的输入消息, 在消息从队列中清除时发生; 可用于宏记录 WH_JOURNALPLAYBACK = 1; 系统级; 回放由WH_JOURNALRECORD 记录的消息, 也就是将这些消息重新送入消息队列 WH_KEYBOARD = 2; 系统级或线程级; 截获键盘消息 WH_GETMESSAGE = 3; 系统级或线程级; 截获从消息队列送出的消息 WH_CALLWNDPROC = 4; 系统级或线程级; 截获发送到目标窗口的消息, 在SendMessage 调用时发生 WH_CBT = 5; 系统级或线程级; 截获系统基本消息, 譬如: 窗口的创建、激活、关闭、最大最小化、移动等等 WH_SYSMSGFILTER = 6; 系统级; 截获系统范围内用户与控件交互的消息

数据库访问方式

数据库访问的三种方式 访问数据库的方式有三种:直接访问,如访问Paradox和DBase 数据库: 通过ODBC 访问,如访问 Access、Foxpro等数据库: 通过内嵌(Native) 方式访问数据库,如访问SQLServer、 Oracle、DB2等。在Delphi中,可以使用Table控件或/和Query控件来访问数据库,二者的设置和用法部差不多,因此下面仅 Table控件为例说明这三种方式的特点和用法。 1.直接访问Delphi可以直接访问Paradox 和IDBase这两个桌面型的数据库系统。访问这两种类型的数据库时不需要特别的设置,只需要把文件路径赋给Table 控件的属性DatabaseName就可以访问该路径下的数据库了。当然,也可以事先建立映射数据库路径的数据库别名,然后把Table控件的DatabaseName属性设置为相应的数据库别名。 2. 通过ODBC访问访问Paradox和DBase以外的数据库,通常是通过ODBC来实现的Delphi 可以访问支持ODBC的数据库系统,如Access、SQLServer 和Oracle 等。 ODBC 访问数据当然,通过库时,首先要使用Windows的控制面板或Delphi的数据库引擎(BDE) 建立ODBC数据源的名称赋给Table控件的属性DatabaseName而达到访问该数据库的目的。这种方式的弊端是在程序运行时由Delphi系统自动弹出登录到数据库的英文界面的窗口,既不美观又不便于控制。因此,笔者建议在数据库应用程序中使用Database 控件来登录到数据库系统。把Table控件与Database控件关联的方法是把其DatabaseName 属性值指定为Database控件的DatabaseName属性值。个Database控件可以管理若干个Table 控件。和Database控件建立关联以后,只要该Database控件已经和数据库建立了连接,Table控件就可以直接访问数据库而无须再次登录。 3. 通过内嵌方式访问Delphi 中可以不通过ODBC,而以内嵌方式访问SQLServer、Oracle、DB2 等数据库系统。这需要使用数据库别名来指定数据库,数据库别名可以事先建立,也可以在程序运行时动态创建。前者称为静态别名,后者称为动态别名。使用数据库别名来访问数据库的方法和使用。DBC数据源的情形相同,这里不再累述。通过内嵌方式访问数据库的静态别名必须在BDE中建立。以访问SQL Server 数据库为例,在建立别名时必须指定数据库服务器的名称 (SERVER NAME) 、主机名(HOSTNAME) 以及要访问的数据库名称(DATABASE NAME) ,可以指定登录用户名(USERNAME) 和口令(PASSWORD) 等。通过动态创建的别名来访问数据库必须使用Database控件。如何设置Database控件中访问数据库的参数呢?用鼠标双击Database控件,出现参数设置窗口,在"Drivername" 栏选择要访问的数据库系统,如"MSSQL",然后选择按钮"Defaults",就会把BDE 中该数据库系统所需的参数名称和缺省值加入到"Parameteroverrides"列表中。根据实际情况更改参数中的"SERVERNAME仁"DATABASE NAME" 等工页。然后选择按钮"OK"就可以了。需要说明的两点是,以内嵌方式访问数据库需要在安装Delphi13.0时指定安装SQLLit山Query 控件的SQL语句不能以分号结尾。结论通过内嵌方式访问数据库与通过ODBC访问数据库相比,前者的速度要快些。而且,内嵌方式可以在程序中动态地设置连接数据库所需的参数,用户不必设置。DBC数据源,这就降低了对用户技术水平的要求,并且减少了用户的工作量。从系统配置的难易和复杂程度来看,使用内嵌方式开发出的数据库应用系统更便于普通用户使用。因此,笔者建议在开发较大型的应用系统时,最好通过内嵌方式来访问数据库。

相关文档
最新文档