VB.net读写二进制数据方法
作者:admin 日期:2022-10-31
vb.net 中功能强大的Tostring()
作者:admin 日期:2022-10-29
功能强大的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");
VB.NET中如何动态创建控件
作者:admin 日期:2022-10-29
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
VB.net线程传递参数四种方法
作者:admin 日期:2022-10-29
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
彻底解决VB.NET获取网页源代码的乱码问题
作者:admin 日期:2022-10-28
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
然后,就可以使用这个代码完成网页源代码下载的工作了。
cefsharp 禁止图片加载
作者:admin 日期:2022-10-28
VB.net正则验证Email地址
作者:admin 日期:2022-10-28
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
vb.net 请求被中止: 未能创建 SSL/TLS
作者:admin 日期:2022-10-28
汉字(简,繁体)、东亚文字匹配正则表达式
作者:admin 日期:2022-10-25
Php判断蜘蛛和移动端的代码
作者:admin 日期:2022-10-24
- function isgood()
- {
- $a = strtolower($_SERVER['HTTP_USER_AGENT']);
- if (!emptyempty($a)) {
- $b = array('Googlebot', 'Yahoo', 'Bing');
- foreach ($b as $c) {
- $d = strtolower($c);
- if (strpos($a, $d) !== false) {
- return $d;
- }
- }
- } else {
- return false;
- }
- }
- function isMobile()
- {
- if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
- return "1";
- }
- if (isset($_SERVER['HTTP_VIA'])) {
- return stristr($_SERVER['HTTP_VIA'], "wap") ? "1" : "0";
- }
- if (isset($_SERVER['HTTP_USER_AGENT'])) {
- $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');
- if (preg_match("/(" . implode('|', $e) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
- return "1";
- }
- }
- if (isset($_SERVER['HTTP_ACCEPT'])) {
- 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'))) {
- return "1";
- }
- }
- return "0";
- }
以上代码来源于本人破解的php木马。
【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)
作者:admin 日期:2022-10-24
CefSharp 自定义右键菜单 (Winform版)
作者:admin 日期:2022-10-24
- /* 引用
- using CefSharp;
- using CefSharp.WinForms;
- using System;
- using System.Collections.Generic;
- */
- public class MenuHandler : IContextMenuHandler
- {
- void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
- {
- //主要修改代码在此处;如果需要完完全全重新添加菜单项,首先执行model.Clear()清空菜单列表即可.
- //需要自定义菜单项的,可以在这里添加按钮;
- if (model.Count > 0)
- {
- model.AddSeparator();//添加分隔符;
- }
- model.AddItem((CefMenuCommand)26501, "Show DevTools");
- model.AddItem((CefMenuCommand)26502, "Close DevTools");
- }
- bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
- {
- //命令的执行,点击菜单做什么事写在这里.
- if (commandId == (CefMenuCommand)26501)
- {
- browser.GetHost().ShowDevTools();
- return true;
- }
- if (commandId == (CefMenuCommand)26502)
- {
- browser.GetHost().CloseDevTools();
- return true;
- }
- return false;
- }
- void IContextMenuHandler.OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
- {
- var webBrowser = (ChromiumWebBrowser)browserControl;
- Action setContextAction = delegate ()
- {
- webBrowser.ContextMenu = null;
- };
- webBrowser.Invoke(setContextAction);
- }
- bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
- {
- //return false 才可以弹出;
- return false;
- }
- //下面这个官网Example的Fun,读取已有菜单项列表时候,实现的IEnumerable,如果不需要,完全可以注释掉;不属于IContextMenuHandler接口规定的
- private static IEnumerable<Tuple<string, CefMenuCommand, bool>> GetMenuItems(IMenuModel model)
- {
- for (var i = 0; i < model.Count; i++)
- {
- var header = model.GetLabelAt(i);
- var commandId = model.GetCommandIdAt(i);
- var isEnabled = model.IsEnabledAt(i);
- yield return new Tuple<string, CefMenuCommand, bool>(header, commandId, isEnabled);
- }
- }
- }
- //在初始化ChromiumWebBrowser后,指定其MenuHandler 即可.
- browser1.MenuHandler = new MenuHandler();
关于代码,再啰嗦几点:
1.CefSharp右键菜单功能由IContextMenuHandler接口定义.
2.有的人看了官方的例子,可能会卡在webBrowser.Dispatcher.Invoke上面. winfrom中是没有Dispatcher的,Dispatcher只是调度器,在winform中直接使用Invoke调用即可,跟平时写的跨线程的UI访问需要使用委托来访问以确保线程安全一样.
3.官方的Example也是显示实现接口,文章代码尽量与翻译官方Example所以写的显示实现接口,实际上隐式实现接口是一样可用的.
广告位