關(guān)于vb.net文字識別的信息

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

Option?Explicit

創(chuàng)新互聯(lián)公司技術(shù)團隊10多年來致力于為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、品牌網(wǎng)站制作全網(wǎng)營銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團隊,先后服務(wù)、推廣了千余家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。

'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這幾種編碼文本

'##?編譯預(yù)處理常數(shù)?#########################################

'==?全局常數(shù)?===============================================

'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,表示使用系統(tǒng)當前代碼頁??梢岳迷搮?shù)實現(xiàn)讀取其他代碼編碼的文本,比如想在?簡體中文平臺下?讀取?繁體中文平臺生成的txt,就將它設(shè)為950

Public?UEFCodePage?As?Long

'判斷BOM

'返回值:BOM所占字節(jié)

'dwFirst:[in]文件最開始的4個字節(jié)

'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所占字節(jié)

'fmt:[in]編碼類型

'dwFirst:[out]文件最開始的4個字節(jié)

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

'關(guān)閉文件

Call?CloseHandle(hFile)

End?Function

'讀取文本文件

'返回值:讀取的文本。返回vbNullString表示文件無法打開

'FileName:[in]文件名

'fmt:[in,out]使用何種文本編碼格式來讀取文本。為UEF_Auto時表示自動判斷,且在fmt參數(shù)返回文本所用編碼格式

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)

'恢復(fù)文件指針

If?fmt?=?UEF_Auto?Then?'自動判斷

fmt?=?CurFmt

'cbBOM?=?cbBOM

Else?'手動設(shè)置編碼

If?fmt?=?CurFmt?Then?'若編碼相同,則忽略BOM標記

'cbBOM?=?cbBOM

Else?'編碼不同,那么都是數(shù)據(jù)

cbBOM?=?0

End?If

End?If

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

cbTextData?=?nFileSize?-?cbBOM

'讀取數(shù)據(jù)

UEFLoadTextFile?=?""

Select?Case?fmt

Case?UEF_ANSI,?UEF_UTF8

'判斷應(yīng)使用的CodePage

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

VB.NET 寫日期到access 格式不對

因為Access日期格式設(shè)置了,在寫入中會出現(xiàn)格式不對,可以根據(jù)情況自定義修改日期格式寫入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季

日期時間擴展:

(:):??時間分隔符。在一些區(qū)域,可能用其他符號來當時間分隔符。格式化時間值時,時間分隔符可以分隔時、分、秒。時間分隔符的真正字符在格式輸出時取決于系統(tǒng)的設(shè)置。?

(/)?:??日期分隔符。在一些區(qū)域,可能用其他符號來當日期分隔符。格式化日期數(shù)值時,日期分隔符可以分隔年、月、日。日期分隔符的真正字符在格式輸出時取決于系統(tǒng)設(shè)置。?

c?:??以 ddddd 來顯示日期并且以 ttttt 來顯示時間。如果想顯示的數(shù)值無小數(shù)部分,則只顯示日期部分,如果想顯示的數(shù)值無整數(shù)部分,則只顯示時間部分。?

d?:??以沒有前導(dǎo)零的數(shù)字來顯示日 (1 – 31)。?

dd?:??以有前導(dǎo)零的數(shù)字來顯示日 (01 – 31)。?

ddd?:??以簡寫來表示日 (Sun –Sat)。?

dddd?:??以全稱來表示日 (Sunday –Saturday)。?

ddddd?:??以完整日期表示法顯示(包括年、月、日),日期的顯示要依系統(tǒng)的短日期格式設(shè)置而定。缺省的短日期格式為 m/d/yy。?

dddddd?:??以完整日期表示法顯示日期系列數(shù)(包括年、月、日),日期的顯示要依系統(tǒng)識別的長日期格式而定。缺省的長日期格式為 mmmm dd, yyyy。?

aaaa?:??與dddd 一樣,它只是該字符串的本地化版本。?

w?:??將一周中的日期以數(shù)值表示(1 表星期日~ 7表星期六)。?

ww?:??將一年中的星期以數(shù)值表示 (1 – 54)。?

m?:??以沒有前導(dǎo)零的數(shù)字來顯示月 (1 – 12)。如果 m 是直接跟在 h 或 hh 之后,那么顯示的將是分而不是月。?

mm?:??以有前導(dǎo)零的數(shù)字來顯示月 (01 – 12)。如果m是直接跟在h或hh之后,那么顯示的將是分而不是月。?

mmm?:??以簡寫來表示月 (Jan –Dec)。?

mmmm?:??以全稱來表示月 (January –December)。?

oooo?:??與mmmm一樣,它只是該字符串的本地化版本。?

q?:??將一年中的季以數(shù)值表示 (1 – 4)。?

y?:??將一年中的日以數(shù)值表示 (1 – 366)。?

yy?:??以兩位數(shù)來表示年 (00 – 99)。?

yyyy?:??以四位數(shù)來表示年 (00 – 99)。?

h?:??以沒有前導(dǎo)零的數(shù)字來顯示小時 (0 – 23)。?

Hh?:??以有前導(dǎo)零的數(shù)字來顯示小時 (00– 23)。?

N?:??以沒有前導(dǎo)零的數(shù)字來顯示分 (0 – 59)。?

Nn?:??以有前導(dǎo)零的數(shù)字來顯示分 (00 – 59)。

S?:??以沒有前導(dǎo)零的數(shù)字來顯示秒 (0 – 59)。?

Ss?:??以有前導(dǎo)零的數(shù)字來顯示秒 (00 – 59)。?

t t t t t?:??以完整時間表示法顯示(包括時、分、秒),用系統(tǒng)識別的時間格式定義的時間分隔符進行格式化。如果選擇有前導(dǎo)零并且時間是在 10:00 A.M. 或 P.M.之前,那么將顯示有前導(dǎo)零的時間。缺省的時間格式為 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 小時配合系統(tǒng)設(shè)置的 AM字符串文字來使用;在中午和 11:59 P.M. 間以 12 小時配合系統(tǒng)設(shè)置的 PM 字符串文字來使用。AMPM 可以是大寫或小寫,但必須和您的系統(tǒng)設(shè)置相配。其缺省格式為 AM/PM。?

VB窗口截圖并將圖片上文字識別成文字。

為何要采用截圖功能去取窗口的句柄呢,可以用窗口標題去取句柄呀。

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

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怎么做中文語音識別程序

首先添加一個系統(tǒng)的語音COM組件的引用microsoft speech object library然后在程序中聲明一個語音類dim RC As SpeechLib.SpSharedRecoContext這個類有一些事件,如果你要處理它的一些事件,可以用withevent來聲明然后在窗體LOAD事件或你需要的地方先創(chuàng)建一個實例RC = New SpeechLib.SpSharedRecoContext當一個RC被實例化后,系統(tǒng)就會運行語音識別程序.前提是你的系統(tǒng)已經(jīng)正確安裝這個功能.一般默認就已經(jīng)安裝好的.其次提醒一下,WIN7的語音識別比XP的好N倍.從閱讀到偵聽都好很多.然后就可以在你需要閱讀的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚舉,用來標識系統(tǒng)用前臺還是后臺或其他方式來閱讀文字,簡單的來說就是閱讀的時候不會卡住你的程序.你可以選其他的枚舉來試試作用.以上為閱讀部分.如果需要程序聽你說話,則需要聲明一個偵聽類dim RG As SpeechLib.ISpeechRecoGrammar在初始化時將之與上面的RC建立關(guān)系,此時則必須要用withevent來聲明上面的RC,因為涉及電腦聽到你的語音后,會觸發(fā)一個事件,并將聽到的內(nèi)容傳遞到該事件.其次,要讓系統(tǒng)聽到的解析為命令,就必須準備一個XML結(jié)構(gòu)的文件來保存那些固定的命令.如果電腦在XML文件中找不到那些固定命令或同時不屬于系統(tǒng)命令,電腦將會將其解釋為聽寫.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關(guān)閉你自己 /L

/RULE

/GRAMMAR要讓系統(tǒng)正確地偵聽到你說的話,前提你必須運行語音識別程序并讓其激活到"正在聆聽"狀態(tài).并且你必須有一個能正常使用的話筒而且保證話筒已經(jīng)打開.(廢話-_-|||)以上就是用VB.NET語音識別的最基本的一些操作.希望對你有幫助.更深入的內(nèi)容有興趣的話可以和我一起研究.

vb.net怎樣定義定長字符串?急?。。。?!

摘自幫助文檔,我也不是很理解

估計只有在Visual Basic 文件輸入和輸出才有用

示例

Visual Basic 復(fù)制代碼

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 是信息性的屬性,不能用于將可變長度字符串轉(zhuǎn)換為固定長度字符串。此屬性的作用是修改那些識別 VBFixedStringAttribute 的方法或 API 調(diào)用(如 Len 和 FilePut 函數(shù))使用結(jié)構(gòu)中的字符串以及非局部變量的方式。請記住,此屬性不會更改字符串本身的實際長度。

備注

默認情況下,Visual Basic 字符串為可變長度的字符串。在使用 Visual Basic 文件輸入和輸出函數(shù)(如需要固定長度字符串的 FileGet 和 FilePut)時,該屬性非常有用。

注意

VBFixedStringAttribute 屬性以字節(jié)而不是字符為單位指定字符串長度。

網(wǎng)頁題目:關(guān)于vb.net文字識別的信息
文章出自:http://muchs.cn/article46/hgeihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、網(wǎng)站改版、靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)