资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

关于vb.net文字识别的信息

VB.NET如何获取任何格式文件的文字信息

Option Explicit

创新互联公司技术团队10多年来致力于为客户提供成都网站制作、成都网站设计、品牌网站制作全网营销推广、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了千余家网站,包括各类中小企业、企事单位、高校等机构单位。

'mTextUTF.bas

'模块:UTF文本文件访问

'作者:zyl910

'版本:1.0

'日期:2006-1-23

'== 说明 ===================================================

'支持Unicode编码的文本文件读写。暂时支持ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本

'== 更新记录 ===============================================

'[V1.0] 2006-1-23

'1.支持最常见的ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本

'## 编译预处理常数 #########################################

'== 全局常数 ===============================================

'IncludeAPILib:引用了API库,此时不需要手动写API声明

'## API ####################################################

#If IncludeAPILib = 0 Then

'== File ===================================================

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long

Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long

Private Const INVALID_HANDLE_VALUE = -1

Private Const GENERIC_READ = H80000000

Private Const GENERIC_WRITE = H40000000

Private Const FILE_SHARE_READ = H1

Private Const FILE_SHARE_WRITE = H2

Private Const Create_NEW = 1

Private Const Create_ALWAYS = 2

Private Const OPEN_EXISTING = 3

Private Const OPEN_ALWAYS = 4

Private Const TRUNCATE_EXISTING = 5

Private Const FILE_ATTRIBUTE_NORMAL = H80

Private Const FILE_BEGIN = 0

Private Const FILE_CURRENT = 1

Private Const FILE_END = 2

'== Unicode ================================================

Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long) As Long

Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpDefaultChar As Any, ByVal lpUsedDefaultChar As Long) As Long

Private Const CP_UTF8 As Long = 65001

#End If

'###########################################################

'Unicode编码格式

Public Enum UnicodeEncodeFormat

UEF_ANSI = 0 'ANSI+DBCS

UEF_UTF8 'UTF-8

UEF_UTF16LE 'UTF-16LE

UEF_UTF16BE 'UTF-16BE

UEF_UTF32LE 'UTF-32LE

UEF_UTF32BE 'UTF-32BE

UEF_Auto = -1 '自动识别编码

'隐藏项目

[_UEF_Min] = UEF_ANSI

[_UEF_Max] = UEF_UTF32BE

End Enum

'ANSI+DBCS方式的文本所使用的代码页。默认为0,表示使用系统当前代码页。可以利用该参数实现读取其他代码编码的文本,比如想在 简体中文平台下 读取 繁体中文平台生成的txt,就将它设为950

Public UEFCodePage As Long

'判断BOM

'返回值:BOM所占字节

'dwFirst:[in]文件最开始的4个字节

'fmt:[out]返回编码类型

Public Function UEFCheckBOM(ByVal dwFirst As Long, ByRef fmt As UnicodeEncodeFormat) As Long

If dwFirst = HFEFF Then

fmt = UEF_UTF32LE

UEFCheckBOM = 4

ElseIf dwFirst = HFFFE0000 Then

fmt = UEF_UTF32BE

UEFCheckBOM = 4

ElseIf (dwFirst And HFFFF) = HFEFF Then

fmt = UEF_UTF16LE

UEFCheckBOM = 2

ElseIf (dwFirst And HFFFF) = HFFFE Then

fmt = UEF_UTF16BE

UEFCheckBOM = 2

ElseIf (dwFirst And HFFFFFF) = HBFBBEF Then

fmt = UEF_UTF8

UEFCheckBOM = 3

Else

fmt = UEF_ANSI

UEFCheckBOM = 0

End If

End Function

'生成BOM

'返回值:BOM所占字节

'fmt:[in]编码类型

'dwFirst:[out]文件最开始的4个字节

Public Function UEFMakeBOM(ByVal fmt As UnicodeEncodeFormat, ByRef dwFirst As Long) As Long

Select Case fmt

Case UEF_UTF8

dwFirst = HBFBBEF

UEFMakeBOM = 3

Case UEF_UTF16LE

dwFirst = HFEFF

UEFMakeBOM = 2

Case UEF_UTF16BE

dwFirst = HFFFE

UEFMakeBOM = 2

Case UEF_UTF32LE

dwFirst = HFEFF

UEFMakeBOM = 4

Case UEF_UTF32BE

dwFirst = HFFFE0000

UEFMakeBOM = 4

Case Else

dwFirst = 0

UEFMakeBOM = 0

End Select

End Function

'判断文本文件的编码类型

'返回值:编码类型。文件无法打开时,返回UEF_Auto

'FileName:文件名

Public Function UEFCheckTextFileFormat(ByVal FileName As String) As UnicodeEncodeFormat

Dim hFile As Long

Dim dwFirst As Long

Dim nNumRead As Long

'打开文件

hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)

If INVALID_HANDLE_VALUE = hFile Then '文件无法打开

UEFCheckTextFileFormat = UEF_Auto

Exit Function

End If

'判断BOM

dwFirst = 0

Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)

nNumRead = UEFCheckBOM(dwFirst, UEFCheckTextFileFormat)

'Debug.Print nNumRead

'关闭文件

Call CloseHandle(hFile)

End Function

'读取文本文件

'返回值:读取的文本。返回vbNullString表示文件无法打开

'FileName:[in]文件名

'fmt:[in,out]使用何种文本编码格式来读取文本。为UEF_Auto时表示自动判断,且在fmt参数返回文本所用编码格式

Public Function UEFLoadTextFile(ByVal FileName As String, Optional ByRef fmt As UnicodeEncodeFormat = UEF_Auto) As String

Dim hFile As Long

Dim nFileSize As Long

Dim nNumRead As Long

Dim dwFirst As Long

Dim CurFmt As UnicodeEncodeFormat

Dim cbBOM As Long

Dim cbTextData As Long

Dim CurCP As Long

Dim byBuf() As Byte

Dim cchStr As Long

Dim I As Long

Dim byTemp As Byte

'判断fmt范围

If fmt  UEF_Auto Then

If fmt  [_UEF_Min] Or fmt  [_UEF_Max] Then

GoTo FunEnd

End If

End If

'打开文件

hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)

If INVALID_HANDLE_VALUE = hFile Then '文件无法打开

GoTo FunEnd

End If

'判断文件大小

nFileSize = GetFileSize(hFile, nNumRead)

If nNumRead  0 Then '超过4GB

GoTo FreeHandle

End If

If nFileSize  0 Then '超过2GB

GoTo FreeHandle

End If

'判断BOM

dwFirst = 0

Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)

cbBOM = UEFCheckBOM(dwFirst, CurFmt)

'恢复文件指针

If fmt = UEF_Auto Then '自动判断

fmt = CurFmt

'cbBOM = cbBOM

Else '手动设置编码

If fmt = CurFmt Then '若编码相同,则忽略BOM标记

'cbBOM = cbBOM

Else '编码不同,那么都是数据

cbBOM = 0

End If

End If

Call SetFilePointer(hFile, cbBOM, ByVal 0, FILE_BEGIN)

cbTextData = nFileSize - cbBOM

'读取数据

UEFLoadTextFile = ""

Select Case fmt

Case UEF_ANSI, UEF_UTF8

'判断应使用的CodePage

CurCP = IIf(fmt = UEF_UTF8, CP_UTF8, UEFCodePage)

VB.NET 写日期到access 格式不对

因为Access日期格式设置了,在写入中会出现格式不对,可以根据情况自定义修改日期格式写入Access中。

语法如下:format([日期],"YYYY-MM-DD")

示例:

 Format(#2003/10/1#, "aaaa")     '星期三

 Format(#2003/10/1#, "dddd")    'Wednesday

 Format(#2003/10/1#, "ww")      '40    2003年的第40周

 Format(#2003/10/1#, "mmmm") 'October

 Format(#2003/10/1#, "oooo")    '十月

 Format(#2003/10/1#, "q")     '4   2003年的第4季

日期时间扩展:

(:):  时间分隔符。在一些区域,可能用其他符号来当时间分隔符。格式化时间值时,时间分隔符可以分隔时、分、秒。时间分隔符的真正字符在格式输出时取决于系统的设置。 

(/) :  日期分隔符。在一些区域,可能用其他符号来当日期分隔符。格式化日期数值时,日期分隔符可以分隔年、月、日。日期分隔符的真正字符在格式输出时取决于系统设置。 

c :  以 ddddd 来显示日期并且以 ttttt 来显示时间。如果想显示的数值无小数部分,则只显示日期部分,如果想显示的数值无整数部分,则只显示时间部分。 

d :  以没有前导零的数字来显示日 (1 – 31)。 

dd :  以有前导零的数字来显示日 (01 – 31)。 

ddd :  以简写来表示日 (Sun –Sat)。 

dddd :  以全称来表示日 (Sunday –Saturday)。 

ddddd :  以完整日期表示法显示(包括年、月、日),日期的显示要依系统的短日期格式设置而定。缺省的短日期格式为 m/d/yy。 

dddddd :  以完整日期表示法显示日期系列数(包括年、月、日),日期的显示要依系统识别的长日期格式而定。缺省的长日期格式为 mmmm dd, yyyy。 

aaaa :  与dddd 一样,它只是该字符串的本地化版本。 

w :  将一周中的日期以数值表示(1 表星期日~ 7表星期六)。 

ww :  将一年中的星期以数值表示 (1 – 54)。 

m :  以没有前导零的数字来显示月 (1 – 12)。如果 m 是直接跟在 h 或 hh 之后,那么显示的将是分而不是月。 

mm :  以有前导零的数字来显示月 (01 – 12)。如果m是直接跟在h或hh之后,那么显示的将是分而不是月。 

mmm :  以简写来表示月 (Jan –Dec)。 

mmmm :  以全称来表示月 (January –December)。 

oooo :  与mmmm一样,它只是该字符串的本地化版本。 

q :  将一年中的季以数值表示 (1 – 4)。 

y :  将一年中的日以数值表示 (1 – 366)。 

yy :  以两位数来表示年 (00 – 99)。 

yyyy :  以四位数来表示年 (00 – 99)。 

h :  以没有前导零的数字来显示小时 (0 – 23)。 

Hh :  以有前导零的数字来显示小时 (00– 23)。 

N :  以没有前导零的数字来显示分 (0 – 59)。 

Nn :  以有前导零的数字来显示分 (00 – 59)。

S :  以没有前导零的数字来显示秒 (0 – 59)。 

Ss :  以有前导零的数字来显示秒 (00 – 59)。 

t t t t t :  以完整时间表示法显示(包括时、分、秒),用系统识别的时间格式定义的时间分隔符进行格式化。如果选择有前导零并且时间是在 10:00 A.M. 或 P.M.之前,那么将显示有前导零的时间。缺省的时间格式为 h:mm:ss。 

AM/PM :  在中午前以 12 小时配合大写 AM 符号来使用;在中午和 11:59 P.M.间以 12 小时配合大写 PM 来使用。 

am/pm :  在中午前以 12 小时配合小写 am 符号来使用;在中午和 11:59 P.M.间以 12 小时配合小写 pm 来使用。 

A/P :  在中午前以 12 小时配合大写A符号来使用;在中午和 11:59 P.M.间以12 小时配合大写P来使用。 

a/p :  在中午前以 12 小时配合小写a符号来使用;在中午和 11:59 P.M.间以 12 小时配合小写p来使用。 

AMPM :  在中午前以 12 小时配合系统设置的 AM字符串文字来使用;在中午和 11:59 P.M. 间以 12 小时配合系统设置的 PM 字符串文字来使用。AMPM 可以是大写或小写,但必须和您的系统设置相配。其缺省格式为 AM/PM。 

VB窗口截图并将图片上文字识别成文字。

为何要采用截图功能去取窗口的句柄呢,可以用窗口标题去取句柄呀。

VB.net如何提取textbox中部分内容?(需要提取的文本是固定位置的)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextBox2.Text = Mid(TextBox1.Text, 11, 2) ’第十一位开始算起的2个字符

End Sub

vb.net怎么做中文语音识别程序

首先添加一个系统的语音COM组件的引用microsoft speech object library然后在程序中声明一个语音类dim RC As SpeechLib.SpSharedRecoContext这个类有一些事件,如果你要处理它的一些事件,可以用withevent来声明然后在窗体LOAD事件或你需要的地方先创建一个实例RC = New SpeechLib.SpSharedRecoContext当一个RC被实例化后,系统就会运行语音识别程序.前提是你的系统已经正确安装这个功能.一般默认就已经安装好的.其次提醒一下,WIN7的语音识别比XP的好N倍.从阅读到侦听都好很多.然后就可以在你需要阅读的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚举,用来标识系统用前台还是后台或其他方式来阅读文字,简单的来说就是阅读的时候不会卡住你的程序.你可以选其他的枚举来试试作用.以上为阅读部分.如果需要程序听你说话,则需要声明一个侦听类dim RG As SpeechLib.ISpeechRecoGrammar在初始化时将之与上面的RC建立关系,此时则必须要用withevent来声明上面的RC,因为涉及电脑听到你的语音后,会触发一个事件,并将听到的内容传递到该事件.其次,要让系统听到的解析为命令,就必须准备一个XML结构的文件来保存那些固定的命令.如果电脑在XML文件中找不到那些固定命令或同时不属于系统命令,电脑将会将其解释为听写.RG = RC.CreateGrammar '(0)

RG.CmdLoadFromFile("听到.xml", SpeechLib.SpeechLoadOption.SLODynamic)

RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后写一个过程来处理听到的事件Private Sub 听到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 话语 As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我听到了" 话语.PhraseInfo.GetText, 11)End Sub以上为侦听部分.下面列一个XML的例文?xml version="1.0" encoding="gb2312"?

GRAMMAR LANGID="804"

RULE NAME="命令" TOPLEVEL="ACTIVE"

L

P打开播放器

P上我的QQ

P关闭你自己 /L

/RULE

/GRAMMAR要让系统正确地侦听到你说的话,前提你必须运行语音识别程序并让其激活到"正在聆听"状态.并且你必须有一个能正常使用的话筒而且保证话筒已经打开.(废话-_-|||)以上就是用VB.NET语音识别的最基本的一些操作.希望对你有帮助.更深入的内容有兴趣的话可以和我一起研究.

vb.net怎样定义定长字符串?急!!!!!

摘自帮助文档,我也不是很理解

估计只有在Visual Basic 文件输入和输出才有用

示例

Visual Basic 复制代码

Structure Person

Public ID As Integer

Public MonthlySalary As Decimal

Public LastReviewDate As Long

VBFixedString(15) Public FirstName As String

VBFixedString(15) Public LastName As String

VBFixedString(15) Public Title As String

VBFixedString(150) Public ReviewComments As String

End Structure

注意

VBFixedStringAttribute 是信息性的属性,不能用于将可变长度字符串转换为固定长度字符串。此属性的作用是修改那些识别 VBFixedStringAttribute 的方法或 API 调用(如 Len 和 FilePut 函数)使用结构中的字符串以及非局部变量的方式。请记住,此属性不会更改字符串本身的实际长度。

备注

默认情况下,Visual Basic 字符串为可变长度的字符串。在使用 Visual Basic 文件输入和输出函数(如需要固定长度字符串的 FileGet 和 FilePut)时,该属性非常有用。

注意

VBFixedStringAttribute 属性以字节而不是字符为单位指定字符串长度。


名称栏目:关于vb.net文字识别的信息
网页路径:http://www.cdkjz.cn/article/hgeihg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220