2016-07-18 59 views
1

是否可以將activex對象傳遞給同一類中的另一個函數?我嘗試了一些變體,但第一個代碼示例是我最近嘗試過的。第二組代碼目前工作,但我想縮短它,以便我不必爲每個對象實例編寫單獨的函數。VB將ActiveX對象傳遞到函數

這裏是我的,我想目前的代碼:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay1") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay2") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay3") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay4") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay5") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay6") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay7") 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay8") 
End Sub 


Private Sub Login(disp As Object) 
    User = TextBox1.Text 
    Password = TextBox2.Text 
    disp.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    disp.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

的代碼工作正常,如果我把它寫這樣的。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    User = TextBox1.Text 
    Password = TextBox2.Text 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login1)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login2)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login3)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login4)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login5)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login6)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login7)) 
    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login8)) 
End Sub 


Private Sub Login1() 
    AxObjectXMFDisplay2.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay2.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login2() 
    AxObjectXMFDisplay2.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay2.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login3() 
    AxObjectXMFDisplay3.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay3.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login4() 
    AxObjectXMFDisplay4.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay4.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login5() 
    AxObjectXMFDisplay5.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay5.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login6() 
    AxObjectXMFDisplay6.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay6.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login7() 
    AxObjectXMFDisplay7.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay7.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

Private Sub Login8() 
    AxObjectXMFDisplay8.RDE_SendKeys_Hsynch(User & "@T", True, 3, 1000, "", 0, 0) 
    AxObjectXMFDisplay8.RDE_SendKeys_Hsynch(Password & "@E", True, 3, 1000, "", 0, 0) 
End Sub 

感謝

回答

0

這的確是可能的,但在你嘗試,你只是不這樣做是完全正確的。

ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), "AxObjectXMFDisplay1") 

"AxObjectXMFDisplay1"只是包含您的ActiveX對象的名稱的字符串。圍繞某事放置引號會使編譯器將其解釋爲一個字符串。

要通過實際的ActiveX對象,您必須刪除引號,這樣你引用實際變量/對象

ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Login), AxObjectXMFDisplay1) 

這樣做對每一行,你應該是好去。


我以上解釋可以通過該簡單的例子來說明:

Dim MyNumber As Integer = 3 'Creates the variable 'MyNumber' and sets it to 3. 

MessageBox.Show(MyNumber) 'Prints: 3 
MessageBox.Show("MyNumber") 'Prints: MyNumber 
+0

感謝您的快速響應。你是對的。我以爲我曾嘗試過。我很抱歉,我應該抓住這一點。 – Andrew

+0

@Andrew:沒問題,雖然我很驚訝,沒有人甚至在一個小時內就此發表了評論......並且不需要道歉,有時我們都會犯錯 - 即使是最簡單的錯誤。 :) –