预览模式: 普通 | 列表

VB.net读写二进制数据方法

一、二进制文件读写

1、写二进制数据到指定目录


dim barray() as byte
dim strFileName as string
My.Computer.FileSystem.WriteAllBytes(strFileName, barray, False)
==>将barray字节数组中的数据创建在strFilename目录文件下,存储格式为二进制,False表示不添加,直接覆盖创建。

 

查看更多...

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 437

vb.net 中功能强大的Tostring()

功能强大的Tostring()

//2007年4月24日
this.TextBox6.Text = System.DateTime.Now.ToString("D");
//2007-4-24
this.TextBox7.Text = System.DateTime.Now.ToString("d");

//2007年4月24日 16:30:15
this.TextBox8.Text = System.DateTime.Now.ToString("F");
//2007年4月24日 16:30
this.TextBox9.Text = System.DateTime.Now.ToString("f");

//2007-4-24 16:30:15
this.TextBox10.Text = System.DateTime.Now.ToString("G");
//2007-4-24 16:30
this.TextBox11.Text = System.DateTime.Now.ToString("g");

查看更多...

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 413

VB.NET中如何动态创建控件

Option Explicit
Private WithEvents NewTextBox As TextBox
'通过使用WithEvents关键字声明一个对象变量为新的命令按钮

Private Sub Command1_Click()
If NewTextBox Is Nothing Then
Set NewTextBox = Controls.Add("VB.TextBox", "cmdNew", Form1)
NewTextBox.Move 200, 200
NewTextBox.Width = Form1.Width - 450
NewTextBox.Height = Form1.Height - 1400
NewTextBox.Visible = True
End If
End Sub

Private Sub Command2_Click()
If NewTextBox Is Nothing Then
Exit Sub
Else
Controls.Remove NewTextBox
Set NewTextBox = Nothing
End If
End Sub

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 369

VB.net线程传递参数四种方法

Thread线程启动方法,一般来说要么是一个无参数的方法,要么是一个带有object参数的方法并且在Start时传递参数的值。
但是我们可以利用一些技巧给方法传递不受限制的参数。这些方法又可以在实际使用过程相互融合。
方法简单直接上代码,供君参考。

Imports System.Threading Module Module1 Sub Main() '第一种:在Start中传递参数值,但方法中的参数类型需为object类型 Dim t1 As New Thread(AddressOf CountNumber) t1.Start(10) '第二种:通过Lambda表达式创建线程,可以传递任意的参数 Dim t2 As New Thread(Sub() PrintNumber(20) End Sub) t2.Start() '第三种:通过实例化类来传递参数,然后调用类方法 Dim c As New Count(10) Dim t3 As New Thread(AddressOf c.CountNumber) t3.Start() '第四种:通过传递类或结构,以达到向方法传递多个参数 Dim p As New Person() With { .FirstName = "严", .LastName = "查散" } Dim t4 As New Thread(AddressOf ShowName) t4.Start(p) Console.Read() End Sub '传递单个参数 Private Sub CountNumber(number As Object) Dim sum As Integer For i As Integer = 1 To Integer.Parse(number) sum += i Next Console.WriteLine(sum) End Sub '传递非object参数 Private Sub PrintNumber(number As Integer) Console.WriteLine(number) End Sub '把方法包装成类,在实例化时传递参数 Class Count Dim number As Integer Sub New(number As Integer) Me.number = number End Sub Public Sub CountNumber() Dim sum As Integer For i As Integer = 1 To Integer.Parse(number) sum += i Next Console.WriteLine(sum) End Sub End Class '传递一个类或结构达到传递多个参数 Private Sub ShowName(person As Object) Dim myPerson As Person = CType(person, Person) Console.WriteLine(myPerson.FirstName & myPerson.LastName) End Sub Class Person Public Property FirstName As String Public Property LastName As String End Class End Module

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2899

Function GetWebCode(ByVal strURL As String) As String
Dim httpReq As System.Net.HttpWebRequest
Dim httpResp As System.Net.HttpWebResponse
Dim httpURL As New System.Uri(strURL)
Dim ioS As System.IO.Stream, charSet As String, tCode As String
Dim k() As Byte
ReDim k(0)
Dim dataQue As New Queue(Of Byte)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
Dim sTime As Date = CDate("1990-09-21 00:00:00")
httpReq.IfModifiedSince = sTime
httpReq.Method = "GET"
httpReq.Timeout = 7000

Try
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Catch
Debug.Print("weberror")
GetWebCode = "<title>no thing found</title>" : Exit Function
End Try
'以上为网络数据获取
ioS = CType(httpResp.GetResponseStream, Stream)
Do While ioS.CanRead = True
Try
dataQue.Enqueue(ioS.ReadByte)
Catch
Debug.Print("read error")
Exit Do
End Try
Loop
ReDim k(dataQue.Count - 1)
For j As Integer = 0 To dataQue.Count - 1
k(j) = dataQue.Dequeue
Next
'以上,为获取流中的的二进制数据
tCode = Encoding.GetEncoding("UTF-8").GetString(k) '获取特定编码下的情况,毕竟UTF-8支持英文正常的显示
charSet = Replace(GetByDiv2(tCode, "charset=", """"), """", "") '进行编码类型识别
'以上,获取编码类型
If charSet = "" Then 'defalt
If httpResp.CharacterSet = "" Then
tCode = Encoding.GetEncoding("UTF-8").GetString(k)
Else
tCode = Encoding.GetEncoding(httpResp.CharacterSet).GetString(k)
End If
Else
tCode = Encoding.GetEncoding(charSet).GetString(k)
End If
Debug.Print(charSet)
'Stop
'以上,按照获得的编码类型进行数据转换
'将得到的内容进行最后处理,比如判断是不是有出现字符串为空的情况
GetWebCode = tCode
If tCode = "" Then GetWebCode = "<title>no thing found</title>"
End Function

将如上代码复制,并引用:
Imports System.Net
Imports System.IO
Imports System.Text.Encoding
Imports System.Text

然后,就可以使用这个代码完成网页源代码下载的工作了。

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 368

cefsharp 禁止图片加载

只需要添加一句话就可以实现此功能


chromeBrowser.BrowserSettings.ImageLoading = CefState.Disabled;

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 439

VB.net正则验证Email地址

 Imports System.Text.RegularExpressions
''' <summary>
''' 校验邮箱地址是否合法
''' </summary>
''' <param name="addr"></param>
''' <returns>合法返回True,不合法返回false</returns>
Public Function validateEmail(ByVal addr As String) As Boolean
Dim reg As New Regex("\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}")
Return reg.IsMatch(addr)
End Function

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 423

vb.net 请求被中止: 未能创建 SSL/TLS

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 or SecurityProtocolType.Tls or SecurityProtocolType.Tls11 or SecurityProtocolType.Tls12
ServicePointManager.Expect100Continue = True

Tags: vb.net

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 306

^[\u2E80-\u9FFF]+$
匹配所有东亚区的语言


^[\u4E00-\u9FFF]+$
匹配简体和繁体


^[\u4E00-\u9FA5]+$
匹配简体

Tags: 正则表达式

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 301

Php判断蜘蛛和移动端的代码

PHP代码
  1. function isgood()  
  2. {  
  3.     $a = strtolower($_SERVER['HTTP_USER_AGENT']);  
  4.     if (!emptyempty($a)) {  
  5.         $b = array('Googlebot''Yahoo''Bing');  
  6.         foreach ($b as $c) {  
  7.             $d = strtolower($c);  
  8.             if (strpos($a$d) !== false) {  
  9.                 return $d;  
  10.             }  
  11.         }  
  12.     } else {  
  13.         return false;  
  14.     }  
  15. }  
  16. function isMobile()  
  17. {  
  18.     if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {  
  19.         return "1";  
  20.     }  
  21.     if (isset($_SERVER['HTTP_VIA'])) {  
  22.         return stristr($_SERVER['HTTP_VIA'], "wap") ? "1" : "0";  
  23.     }  
  24.     if (isset($_SERVER['HTTP_USER_AGENT'])) {  
  25.         $e = array('nokia''sony''ericsson''mot''samsung''htc''sgh''lg''sharp''sie-''philips''panasonic''alcatel''lenovo''iphone''ipod''blackberry''meizu''android''netfront''symbian''ucweb''windowsce''palm''operamini''operamobi''openwave''nexusone''cldc''midp''wap''mobile');  
  26.         if (preg_match("/(" . implode('|'$e) . ")/i"strtolower($_SERVER['HTTP_USER_AGENT']))) {  
  27.             return "1";  
  28.         }  
  29.     }  
  30.     if (isset($_SERVER['HTTP_ACCEPT'])) {  
  31.         if (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) {  
  32.             return "1";  
  33.         }  
  34.     }  
  35.     return "0";  
  36. }  

以上代码来源于本人破解的php木马。

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 311

这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾。因为两个的内容都不多,我就合成一篇文章啦。

这还里还要吐嘈一下WinForm,也可能是WPF玩的年头长了,觉得WinForm真TNND的难用呀,弄几个定义的控件,相当之麻烦。

回归正文。

 

查看更多...

Tags: c#

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 256

CefSharp 自定义右键菜单 (Winform版)

右键菜单功能由IContextMenuHandler接口定义.
 
具体代码如下:
 
C#代码
  1. /* 引用 
  2. using CefSharp; 
  3. using CefSharp.WinForms; 
  4. using System; 
  5. using System.Collections.Generic; 
  6. */  
  7.    
  8.    
  9. public class MenuHandler : IContextMenuHandler  
  10.     {  
  11.         void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)  
  12.         {  
  13.             //主要修改代码在此处;如果需要完完全全重新添加菜单项,首先执行model.Clear()清空菜单列表即可.  
  14.             //需要自定义菜单项的,可以在这里添加按钮;  
  15.             if (model.Count > 0)  
  16.             {  
  17.                 model.AddSeparator();//添加分隔符;  
  18.             }  
  19.             model.AddItem((CefMenuCommand)26501, "Show DevTools");  
  20.             model.AddItem((CefMenuCommand)26502, "Close DevTools");  
  21.         }  
  22.    
  23.         bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)  
  24.         {  
  25.             //命令的执行,点击菜单做什么事写在这里.  
  26.             if (commandId == (CefMenuCommand)26501)  
  27.             {  
  28.                 browser.GetHost().ShowDevTools();  
  29.                 return true;  
  30.             }  
  31.             if (commandId == (CefMenuCommand)26502)  
  32.             {  
  33.                 browser.GetHost().CloseDevTools();  
  34.                 return true;  
  35.             }  
  36.             return false;  
  37.         }  
  38.    
  39.         void IContextMenuHandler.OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)  
  40.         {  
  41.             var webBrowser = (ChromiumWebBrowser)browserControl;  
  42.             Action setContextAction = delegate ()  
  43.             {  
  44.                 webBrowser.ContextMenu = null;  
  45.             };  
  46.             webBrowser.Invoke(setContextAction);  
  47.         }  
  48.    
  49.         bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)  
  50.         {  
  51.             //return false 才可以弹出;  
  52.             return false;  
  53.         }  
  54.    
  55.         //下面这个官网Example的Fun,读取已有菜单项列表时候,实现的IEnumerable,如果不需要,完全可以注释掉;不属于IContextMenuHandler接口规定的  
  56.         private static IEnumerable<Tuple<string, CefMenuCommand, bool>> GetMenuItems(IMenuModel model)  
  57.         {  
  58.             for (var i = 0; i < model.Count; i++)  
  59.             {  
  60.                 var header = model.GetLabelAt(i);  
  61.                 var commandId = model.GetCommandIdAt(i);  
  62.                 var isEnabled = model.IsEnabledAt(i);  
  63.                 yield return new Tuple<string, CefMenuCommand, bool>(header, commandId, isEnabled);  
  64.             }  
  65.         }  
  66.     }  
调用很简单,如下:
C#代码
  1. //在初始化ChromiumWebBrowser后,指定其MenuHandler 即可.  
  2. browser1.MenuHandler = new MenuHandler();  
这样就实现了自定义菜单项,及设定自定义菜单项的功能.

关于代码,再啰嗦几点:

1.CefSharp右键菜单功能由IContextMenuHandler接口定义.

2.有的人看了官方的例子,可能会卡在webBrowser.Dispatcher.Invoke上面. winfrom中是没有Dispatcher的,Dispatcher只是调度器,在winform中直接使用Invoke调用即可,跟平时写的跨线程的UI访问需要使用委托来访问以确保线程安全一样.

3.官方的Example也是显示实现接口,文章代码尽量与翻译官方Example所以写的显示实现接口,实际上隐式实现接口是一样可用的.

查看更多...

Tags: c#

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 170

 广告位

↑返回顶部↑