久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

vb.net調(diào)用一段匯編 vb是一種匯編語言

VB.NET怎么調(diào)用其它模塊的過程?

調(diào)用過程,調(diào)用過程有諸多技巧,它們與過程的類型、位置以及在應用程序中的使用方式有關。下面說明如何調(diào)用 Sub 過程和 Function 過程。

為東蘭等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及東蘭網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、成都網(wǎng)站設計、外貿(mào)營銷網(wǎng)站建設、東蘭網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

調(diào)用 Sub 過程

與 Sub 過程不同,在表達式中,Sub 過程不能用其名字調(diào)用。調(diào)用 Sub 過程的是一個獨立的語句。Sub 過程還有一點與函數(shù)不一樣,它不會用名字返回一個值。但是,與 Function過程一樣,Sub 過程也可以修改傳遞給它們的任何變量的值。

調(diào)用 Sub 過程有兩種方法:

'以下兩個語句都調(diào)用了名為 MyProc 的 Sub 過程。

Call MyProc (FirstArgument, SecondArgument)

MyProc FirstArgument, SecondArgument

注意,當使用 Call 語法時,參數(shù)必須在括號內(nèi)。若省略 Call 關鍵字,則也必須省略參數(shù)兩邊的括號

調(diào)用函數(shù)過程

通常,調(diào)用自行編寫的函數(shù)過程的方法和調(diào)用 Visual Basic 內(nèi)部函數(shù)過程(例如 Abs)的方法一樣;即在表達式中寫上它的名字。

'下面的語句都調(diào)用函數(shù) ToDec。

Print 10 * ToDec

X = ToDec

If ToDec = 10 Then Debug.Print "Out of Range"

X = AnotherFunction ( 10 * ToDec)

就像調(diào)用 Sub 過程那樣,也能調(diào)用函數(shù)。下面的語句都調(diào)用同一個函數(shù):

Call Year (Now)

Year Now

當用這種方法調(diào)用函數(shù)時,Visual Basic 放棄返回值。

調(diào)用其它模塊中的過程

在工程中的任何地方都能調(diào)用其它模塊中的公用過程??赡苄枰付ㄟ@樣的模塊,它包含正在調(diào)用的過程。調(diào)用其它模塊中的過程的各種技巧,取決于該過程是在窗體模塊中、類模塊中還是標準模塊中。

窗體中的過程

所有窗體模塊的外部調(diào)用必須指向包含此過程的窗體模塊。如果在窗體模塊 Form1 包含 SomeSub 過程,則可使用下面的語句調(diào)用 Form1 中的過程:

Call Form1.SomeSub(arguments)

類模塊中的過程

與窗體中調(diào)用過程類似,在類模塊中調(diào)用過程要調(diào)用與過程一致并且指向類實例的變量。例如,DemoClass 是類 Class1 的實例:

Dim DemoClass as New Class1

DemoClass.SomeSub

但是不同于窗體的是,在引用一個類的實例時,不能用類名作限定符。必須首先聲明類的實例為對象變量(在這個例子中是 DemoClass )并用變量名引用它。

標準模塊中的過程

如果過程名是唯一的,則不必在調(diào)用時加模塊名。無論是在模塊內(nèi),還是在模塊外調(diào)用,結果總會引用這個唯一過程。如果過程僅出現(xiàn)在一個地方,這個過程就是唯一的。

如果兩個以上的模塊都包含同名的過程,那就有必要用模塊名來限定了。在同一模塊內(nèi)調(diào)用一個公共過程就會運行該模塊內(nèi)的過程。例如,對于 Module1 和 Module2 中名為 CommonName 的過程,從 Module2 中調(diào)用 CommonName 則運行 Module2 中的 CommonName 過程,而不是 Module1 中的 CommonName 過程。

從其它模塊調(diào)用公共過程名時必須指定那個模塊。例如,若在 Module1 中調(diào)用 Module2 中的 CommonName 過程,要用下面的語句:

Module2.CommonName (arguments)

Public ? 用于聲明對所有模塊中的所有其它過程都可以使用的過程。?

Private ?用于聲明只能在包含該聲明的模塊中使用的過程。

如何在VB中使用匯編代碼呢?

其實在VB中是不能直接使用匯編語言的,但是可以采用變通的方法,將匯編語言編譯成二進制代碼后,就可以在VB中使用了。

下面的代碼以二進制代碼的方式實現(xiàn)了無符號長整數(shù)的位移操作,因為VB不支持無符號長整數(shù),要實現(xiàn)相同的功能比較麻煩而且效率低,要用匯編語言就簡單多了。

Option

Explicit

Private

Declare

Function

CallWindowProc

Lib

"user32"

Alias

"CallWindowProcA"

(ByVal

lpPrevWndFunc

As

Long,

ByVal

hWnd

As

Long,

ByVal

Msg

As

Long,

ByVal

wParam

As

Long,

ByVal

lParam

As

Long)

As

Long

Private

Sub

Form_Load()

bin(0)

=

H824448B

bin(1)

=

H448B088B

bin(2)

=

H108B0424

bin(3)

=

H1089EAD3

bin(4)

=

H10C2C033

bin(5)

=

H90909000

a

=

HFFFFFFFF

b

=

8

CallWindowProc

VarPtr(bin(0)),

VarPtr(a),

VarPtr(b),

0,

Debug.Print

Hex(a)

End

Sub

這段代碼執(zhí)行了a=a8這樣一個操作

其中

bin(0)

=

H824448B

bin(1)

=

H448B088B

bin(2)

=

H108B0424

bin(3)

=

H1089EAD3

bin(4)

=

H10C2C033

bin(5)

=

H90909000

是下面的C++代碼編譯后的二進制代碼

long

CALLBACK

a_lm(HWND

a,

UINT

b,

UINT

c,

UINT

d)

{

(*(UINT*)a)=(*(UINT*)b);

return

0;

}

其對應的匯編語言如下

mov

eax,dword

ptr

[esp+8]

mov

ecx,dword

ptr

[eax]

mov

eax,dword

ptr

[esp+4]

mov

edx,dword

ptr

[eax]

shr

edx,cl

mov

dword

ptr

[eax],edx

xor

eax,eax

ret

10h

nop

nop

nop

用long

CALLBACK

a_lm(HWND

a,

UINT

b,

UINT

c,

UINT

d)這種形式,就可以直接用CallWindowProc來調(diào)用。

以上就是在VB中使用匯編(二進制代碼)的一種方法,實際上用起來還是比較麻煩的,需要編譯后在可執(zhí)行文件中將代碼接取出來

vb.net能置入?yún)R編代碼不?

vb.net只要能調(diào)用API函數(shù)CallWindowProc就可以。

匯編碼用Byte或Long數(shù)組儲存,如果下標為0,那么你就可以:

Call CallWindowProc(數(shù)組(0),0,0,0,0)

然后把4個0 POP出去,中間是你要執(zhí)行的匯編碼,匯編碼最后是

ret等返回的。

當前題目:vb.net調(diào)用一段匯編 vb是一種匯編語言
文章路徑:http://sd-ha.com/article22/doosocc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、響應式網(wǎng)站、網(wǎng)站策劃、全網(wǎng)營銷推廣、域名注冊、網(wǎng)站營銷

廣告

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

成都做網(wǎng)站