2016-07-18 5 views
1

同じクラスの別の関数にactivexオブジェクトを渡すことはできますか?私はいくつかのバリエーションを試しましたが、最初のコードサンプルは私が最近試みたものです。 2番目のコードセットは現在動作していますが、オブジェクトの各インスタンスごとに別々の関数を書く必要がないように短縮したいと思います。私はこのようにそれを書いた場合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オブジェクトの名前を含む文字列です。何かの周りに引用符を置くと、コンパイラはそれを文字列として解釈します。

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

は、すべての行のためにこれを行うと、あなたが行くように良いことがあります:あなたはあなたの実際の変数/オブジェクトを参照するように、あなたが引用符を削除する必要があり、実際のActiveXオブジェクトを渡すために

。私は上記で説明何


はこの短い例で説明することができます。迅速な対応のための

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:問題はありませんが、誰もこれについて1時間もコメントを書いていないことにも驚いています...そして、謝罪する必要はなく、私たちはすべて間違いを犯すことがあります。 :) –

関連する問題