VB黑客编程基础
一. 调用系统“创建快捷方式”向导
  是否为VB不支持创建快捷方式而于着急呢?虽然 您可以调用vb5stkit.Dll中的fCreateShellLink函 数,但它是为安装程序设计的,快捷方式的默认路径 总是从当前用户的“\Start Menu\Programs”开始,也 就是说,如果您的Windows95装在C盘上,您无法通过 fCreateShellLink函数把快捷方式创建到D盘上去。
  现在,给大家介绍一种极为方便、巧妙的方法: 用Shell语句调用系统“创建快捷方式”向导。
  新建一个项目,在窗体上放一个按钮,双击此按 钮,加入以下代码:
  Private Sub Command1_Click()
  Open App.Path & "\temp.lnk" For Output As #1
  Close #1 '以上两句在程序所在目录建立一 个临时文件
  Shell " AppWiz.Cpl,NewLinkHere
  "& App.Path & "\temp.lnk"
  End Sub
  (注意:Shell语句中NewLinkHere后面跟着一个 空格才是引号,否则将出错。)
  运行程序,按一下命令按钮,怎么样?“创建快 捷方式”向导出现了,如果创建成功,快捷方式将取 代临时文件temp.lnk的位置,如果选取消,temp.lnk 也会自动消失。当然,您可以在硬盘的任意位置建立 temp.lnk。好,现在又可以为您的程序增添一项新功 能了。Enjoy!
  二. 的用途
  我们知道,用Shell语句只能调用可执行文件,即 exe、com、bat和pif文件,有时我们想要调用其他一 些系统功能该怎么办呢?此时,Windows提供的 可大显身手了。下面我们来认识一下这 些用法,也许会给您带来一点惊喜。
  1.要打开设置系统时间的控制面板文件 (Timedate.cpl),只需运行如下代码:
  Shell "
  Shell32.dll,Control_RunDLL Timedate.cpl"
  至于打开其他控制面板文件,相信您一定能够举 一反三,尝试一下,换个文件名就成了。
  2.要运行某一快捷方式(*.lnk)则可以用以下 代码:
  She11 " url.dll, FileProtocolHandler X" (X代表要运行的文件,包括 路径,下同。
  3. 也可以这样写来打开ActiveMovie控制:
  Shell "RUNDLL32.,Rundll",1
  而用Shell "RUNDLL32.,Rundll /play X",1 将直接播放媒体文件。
  4. Shell " desk.cpl,InstallScreenSaver X”当然是安装屏幕保 护啦,如果你写了一个屏幕保护程序,那么可以在安 装程序中写上它,而不一定要装到system目录下。顺 便提一下,VB不是自捞一个“Application Setup Wizard”么?它的VB源代码都在安装目录下的 “\setupkit\setup1”中放着呢,好好把它研究一下。 你完全能做出富有个性的安装程序来。
  5.按住shift键,右击某一文件,菜单中会出现 “打开方式”选项,这也许已不是什么秘密。但现在, 用shell " shell32.dll OpenAs_RunDLL X" 便能直接调用“打开方式”框。
  6. 甚至能用这样一句来打印文件(包括HTML所 支持的所有文本与图像格式):
  Shell " MSHTML.DLL,PrintHTML X”, 1
  怎么样?是不是小有收获呢?这下,您一定会对 这个平时不起眼的文件另眼相待了,它 可是系统运行必不可少的部件呢!其实 Shell+Rundll32还能调用其他许多系统功能,比如关 于NetMeeting和Telnet方面的。如果您有兴趣,可以 到往册表的“我的电脑
\HKEY_CLASSES_ROOT\”或“我 的电脑\HKEY_LOCAL_MACHINE\Software\CLASSES”下 去看看,本文的内容大都是从那里“抄”来的。只要 有足够的决心、信心、耐心,您一定能发现更多有价 值的东西。Good luck!
主要也就 /showerr.asp?BoardID=0&ErrCodes=60,60&action= 再起作用 程序所有代码仅此两段 Private Sub Command1_Click() WebBrowser1.Navigate (Text1.Text + "/showerr.asp?BoardID=0&ErrCodes=60,60&action=") End Sub Private Sub Command2_Click() End End Sub 程序下载.
首先,新建一工程,名为Server,新建一个窗体,Name为Server,在窗体中加入一个winsock控件,Name设为sckServer,协议设为默认的TCP/IP协议。
  接下来我们回来Server窗体模块中,添加如下代码:
Private Sub form_Load()
 With Me
  .sckServer.LocalPort = 88917'本地端口(呵呵!我的生日!)
  .sckServer.Listen '开始监听
 End With
End Sub
'接受客户端的连接请求。
Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
 With Me
  If .sckServer.State <>sckClosed Then .sckServer.Close
  .sckServer.Accept (requestID)
 End With
End Sub 
  下面我们来建立客户端程序:新建一个工程,名为Client,把窗体名为Client,在上面加入一个winsock控件,名为sckClient,协议为TCP/IP协议。再加一个按钮cmdConnect在窗体模块中加入代码:
Private Sub form_Load()
 With Me
  .sckClient.RemoteHost = "127.0.0.1"'设置远程IP,本例设为本机。
  .sckClient.RemotePort = 88917 '远程端口,就为server中的设置一样.
 End With
End Sub
Private sub cmdConnect_Click()
 SckClient.Connect
End sub 
  至此,单击Connect按钮我们的两个工程已经可以进行通信了,但看不见,你可以在Client中的sckClient_Connect事件中加入代码:debug.print “Connetion successful!”来查看。
vb编程论坛  这仅是第一步,一点工作也做不了,下面我们来为它们添加功能。为了简单,本文章只实现一点小小的功能―――关机,重启,注销。好,开始吧!
  在Server工程中新建一个模块,Name为modApi,这个模快为一些API函数,添加如下API函数:
Public Declare Function ExitWindowXXX Lib "user32" Alias "ExitWindowXXX" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long
Public Type RECT
 Left As Long
 Top As Long
 Right As Long
 Bottom As Long
End Type 
  注:在两个socket中编程中,进行通信的重要事件是DataArrival事件,用于接收远程数据。
  下面在Client工程的Client窗体中放入三个按钮,分别为cmdExit,cmdLogoff,cmdReboot。它们用于对远程的关机,注销,重启操作。分别添加如下代码:
Private Sub cmdExit_Click()
 Me.sckClient.SendData "Exit"
End Sub
Private Sub cmdLogoff_Click()
 Me.sckClient.SendData "Logoff"
End Sub
Private Sub cmdReboot_Click()
 Me.sckClient.SendData "Reboot"
End Sub 
  全都是对服务端发出请求。下面转到Server工程中:在Server中添加sckServer的DataArrial事件,接收客户端的请求。
Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)
 Dim strData As String
 With Me
  ' 接收客户请求的信息
  .sckServer.GetData strData

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。