方法一: 通過WINSOCK傳 方法二: 程序一生成一文件,然后程序二讀取 方法三: 利用數(shù)據(jù)庫存取這個是調(diào)用自制DLL示例,至于用ActiveX EXE,你可以參考一下,關(guān)鍵是留接口給另一程序 VB制作標準DLL文件并調(diào)用該文件的示例 1、建立一個ActiveX DLL工程,這時工程中將包括一個類模塊Class1。 2、在ActiveX DLL工程中添加一個Form。 3、在類模塊添加如下函數(shù): Public Function ShowMyForm(s As String) Form1.Caption = s Form1.Show vbModal End Function 4、將工程編譯為DLL。 調(diào)用時: 1、建立一個標準EXE,在菜單“工程|引用”中選擇前面編譯的DLL。 2、使用如下代碼調(diào)用: Private Sub Form_Click() Dim cls As New Class1 cls.ShowMyForm("Hello") End Sub
成都創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡公司、廣告設計公司的優(yōu)秀設計人員和策劃人員組成的一個具有豐富經(jīng)驗的團隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設計師、平面廣告設計師、網(wǎng)絡營銷人員及形象策劃。承接:成都做網(wǎng)站、網(wǎng)站建設、網(wǎng)站改版、網(wǎng)頁設計制作、網(wǎng)站建設與維護、網(wǎng)絡推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務。
p=2143
a=mid(p,1,1)
b=mid(p,2,1)
c=mid(p,3,1)
d=mid(p,3,1)
'm互換
m=b a d c
rivate Shared Function ConnectSocket(ByVal server As String, ByVal port As Integer) As Socket'創(chuàng)建連接
Dim s As Socket = Nothing
Dim hostEntry As IPHostEntry = Nothing
Dim address As IPAddress
address = System.Net.IPAddress.Parse(server)
Dim endPoint As New IPEndPoint(address, port)
Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
tempSocket.Connect(endPoint)
If tempSocket.Connected Then
s = tempSocket
End If
Return s
End Function
調(diào)用:s = ConnectSocket(IP地址, 端口)'端口號如8000,8080等
s.close'關(guān)閉連接
你可以這樣操作:
Form1.BeginInvoke(Sub()
'一些操作
End Sub)
這樣主線程就會放下手里的事情并執(zhí)行Sub里的操作了
你可以預先約定一個截止附,讀取的字節(jié)統(tǒng)統(tǒng)放到緩存區(qū)里,直到讀到截止附再處理、顯示。
在編寫VB.Net windows應用程序的時候我們經(jīng)常會遇到這種問題,怎么樣在兩個窗體間傳遞數(shù)據(jù)呢?例如,用VB.Net做一個文本編輯器,里面有一個搜索功能(即搜索我打開的文本里面的文字),點搜索則彈出搜索對話框,輸入要搜索的內(nèi)容,然后確定,就可以搜索到我打開的文本里面的文字了,這里就用到了兩個窗體間的相互通信。我查看了相關(guān)的資料想了想,得出一些想法和方法。
也許有的人會覺得這個很簡單呀。假如主框架為Form1,打開的搜索對話框是Form2.直接在Form2類中申明一個Form1實例:dim f1 as new Form1然后就可以通過f1來調(diào)用Form1中的域和函數(shù)了。其實不是這樣的,你申明的新的Form1實例不是原來的那個Form1對象了,這樣操作的是新的Form1中的域和函數(shù),和最先打開的Form1是沒有關(guān)系的。
那應該如何來完成兩個窗體的通訊呢?我們要做的是把當前的Form1實例傳遞給Form2,如果是這樣的話,問題就很好解決了。
方法1:首先,我們在Form2中定義:
Private mF_Form As Form1
我們更改Form2的構(gòu)造函數(shù)為有參數(shù)的
Public Sub New(ByVal form As Form1)
MyBase.New()
'該調(diào)用是 Windows 窗體設計器所必需的。
InitializeComponent()
Me.mF_Form = form
'在 InitializeComponent() 調(diào)用之后添加任何初始化
End Sub
在Form1中,我在 要用到Form2的地方申明如下:
Dim f1 As New Form2(Me)
這里的me指的就是Form1當前的實例,也就是把當前Form1的實例通過Form2的構(gòu)造函數(shù)傳遞給Form2類(其實在網(wǎng)上看到過比較蠢的方式,就是在構(gòu)造函數(shù)里面?zhèn)鬟f要傳遞的信息如:字符串或是數(shù)字等,這樣做很有局限性,不能傳遞其他的,所有我們可以直接傳遞實例,來完成傳遞更多的信息。)
這樣在Form2中使用myForm 就可以對原來的Form1窗口進行操作了。但是你要把要操作的Form1中的域和函數(shù)定義成public形式的(這樣可能不安全),此時的myForm就是真正的最開始打開的Form1了,你可以用這個實例來進行兩個窗體的通訊了。
方法2:其實VB.Net中提供了窗體間進行通訊的現(xiàn)成的屬性,呵呵,我們能想到的,微軟也想到了,他們創(chuàng)造的語言其實確實可以說是人性化了。
在Form1類中申明Form2時用如下代碼:
Dim f2As New Form2 '類Form2中的構(gòu)造函數(shù)不改,還是無參的
f2.owner=me
也可以使用函數(shù)的方法,給當前實例添加一個附屬窗口 代碼:Me.AddOwnedForm(f2)
在Form2類的定義中寫如下代碼:
dim f1 as Form1=me.owner
這樣f1對應的就是原來的Form1的實例了,也就可以用這個進行通訊了。但是還是要把不同類之間訪問的域和函數(shù)定義成public,哎,安全確實是一個問題??!