在VBA中调用winsock控件
如果系统没有Winsock控件的话,可以下载下面的控件MSWINSCK.OCX,然后将该文件复制到C:\Windows\System32目录下。
在VBE窗口中,从菜单“工具”->“引用”中,点击“浏览”按钮,选择MSWinSCK.ocx文件,再从“工具箱”的“附加控件”中选择Microsoft Winsock Control。
此时使用Winsock控件的话,将会出现提示不安全的ActiveX控件的提示。可以点击同时下载的REG文件注册该控件即可。
zudhVJHh.rar (48.41 KB, 下载次数: 495)
一般在Excel的窗体中添加Winsock控件。
使用Winsock控件的应用程序一般是Client/Server结构,也就是客户端/服务器端。
以服务端为例,一般的步骤是:
先设置LocalPort本地端口,然后使用Listen方法侦听数据请求。然后处理ConnectionRequest和DataArrival事件。使用完后使用Close方法关闭连接。
Private Sub UserForm_Initialize()
Winsock1.LocalPort = 1999
Winsock1.Listen
End Sub
Private Sub UserForm_Terminate()
Winsock1.Close
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer() As Byte
TransferedBytes = TransferedBytes + bytesTotal
ReDim Buffer(bytesTotal - 1)
Winsock1.GetData Buffer, vbArray + vbByte
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Debug.Print "Sock Err:" & Description
End Sub
而客户端的一般步骤如下:
设置远程服务器端口RemotePort属性,然后使用Connect方法连接。处理ConnectionRequest和DataArrival事件。发送数据就直接使用Send方法就可以了,可以发送字符串或者Byte数组。
Private Sub UserForm_Initialize()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 2999
Winsock1.Connect
End Sub
Private Sub UserForm_Terminate()
Winsock1.Close
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData, vbString
If strData = "OK" Then
Winsock1.Close
Winsock1.RemotePort = 1999
Winsock1.Connect
MsgBox "You can send file now"
End If
End Sub
在VBA中调用winsock控件的更多相关文章
- 在WPF中调用Winform控件
最近在项目中用到了人脸识别和指纹识别,需要调用外部设备和接口,这里就用到了在WPF中调用Winform控件. 第一步,添加程序集引用.System.Windows.Forms和WindowsForms ...
- C# winform中自定义用户控件 然后在页面中调用用户控件的事件
下面是用户控件的代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- 如何在WPF中调用Winform控件
原文地址:http://hi.baidu.com/stuoopluwqbbeod/item/32ec38403da42ee2bcf45167 功能实现主要分三步:1.添加两个引用:WindowsFor ...
- 【转】Win32程序中调用ActiveX控件
#include "stdafx.h" #include <iostream> #include <windows.h> #include <comd ...
- 基于VB中WINSOCK控件的网上象棋系统的实现
本文发表在<微型机与应用>杂志2001年第3期. 基于VB中WINSOCK控件的网上象棋系统的实现 马根峰1 , 孙艳2 , 王平1 (1.重庆邮电学院自动化学院,重庆,40006 ...
- 袁创:使用反射动态调用ActiveX控件
■■■■前言 目前的基于.NET平台的软件研发中仍然存在大量的对COM及ActiveX控件的调用.使用C#调用ActiveX控件时一般是使用vs.net工具自动生成的互操作性程序集.这种方法操作简单, ...
- 使用反射动态调用ActiveX控件
使用反射动态调用ActiveX控件 袁永福 2018-3-2 ■■■■问题描述: 目前的基于.NET平台的软件研发中仍然存在大量的对COM及ActiveX控件的调用.使用C#调用ActiveX控件时一 ...
- C#调用OCX控件的常用方法[转]
小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~ ...
- VB中WinSock控件的属性、方法、事件及应用
一.WinSock简介 Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的 ...
随机推荐
- oracle job create table insert into
create or replace procedure proc_tzyj is begin insert into t_trade_activity@dw3_link.regress.rdbms.d ...
- Ipad Safari iframe cookie 当浏览器默认禁用第三方COOKIE
前一阵子,我们发现高版本的Safari中默认会阻止第三方cookie,如下图所示. 问题 什么是第三方cookie呢?在访问一个网站A时,网站A算作第一方,如果网站A中引用了另一个网站X(网站X的域名 ...
- Android实现接口方式注册监听器
初学Android,新手大都倾向使用匿名类的方式注册监听器, 如下: public class MainActivity extends Activity { private Button but ...
- Javascript中对象的Obeject.defineProperty()方法-------------(ES5/个人理解)
在讲到Obeject.defineProperty()方法之前先得说明一下ECMAScript中有两种属性:数据属性和访问器属性. 两种属性存在的意义:描述对象属性(key)的一些特性,因为这些属性是 ...
- 【代码】verilog之:按键消抖
此模块完美运行 /*-------------------------------------------------------------------------------------- -- ...
- bzoj 3122: [Sdoi2013]随机数生成器
#include<cstdio> #include<iostream> #include<map> #include<cmath> #define ll ...
- 尾递归(Tail Recursion)和Continuation
递归: 就是函数调用自己. func() { foo(); func(); bar(); } 尾调用:就是在函数的最后,调用函数(包括自己). foo(){ return bar(); } 尾递归:就 ...
- enmo_day_10
RMAN 创建备份集 : backup as backupset format ‘/backup/df_%d_%s_%p/bus’ tablespace hr_data; 创建镜像副本 :(备份慢,恢 ...
- [蟒蛇菜谱] Python方便使用的级联进度信息
class StepedProgress: '''方便显示进度的级联进度信息. ''' def __init__(self, stockPercent=[1], parentProgress=None ...
- 关于PCA的几何表示——MATLAB实现
关于PCA的一道练习题.这个折腾了好久...终于做出来像样的图,开始的时候忘记对原始数据标准化,怎么也不对.经过标准化之后,做的图看着还可以,有错误请指出! MATLAB代码PCA.m: clear ...