2011-08-16 29 views
1

叫我已經寫在C#中的API將在VB6 & VBScript中使用,並且承擔我的API的細節,當不顯示C#WinForm的是如下:
1.還有就是API的形式,但它不會暴露給COM
2.有一個名爲ShowForm()的方法,其代碼爲「form1.Show()」。這個方法ShowForm()暴露給COM,所以我可以從vb6/vbscript調用這個方法。爲什麼從VBScript

所以,我的問題是:
當我打電話ShowForm在一個按鈕單擊事件在VB6()方法,在C#API創建的形式顯示出來,但如果我實例相同的類和調用相同的方法在VBScript中,表單不顯示。 (),
- 從「form1.Show()」到「form1.ShowDialog()」,它會在vb6/vbscript中顯示。但是,它顯示爲一種模式形式,我想要的是無模 或
- 從「form1.Show()」到「Application.Run(form1)」。它會以vbscript顯示,但不會在vb6中顯示(它實際上顯示在vb6中,但在我用C#關閉窗體後崩潰)

我該怎麼做才能使其在vb6和vbscript中正常工作?您的建議非常感謝

PS:它沒有腳本語法問題或COM問題。它應該是與form.show()/ ShowDialog()/ Application.Run()或消息循環thingy這是我真的不明白的事情

我的代碼會或多或少像這樣。

//C# code 
public void ShowForm() 
{ 
m_frm.tempWebBrowser.Navigate("http://stackoverflow.com", "_self", Encoding.Default.GetBytes(""), "Content-Type: application/x-www-form-urlencoded"); 

m_frm.FormBorderStyle = FormBorderStyle.Sizable; 
m_frm.ShowInTaskbar = true; 
m_frm.WindowState = FormWindowState.Maximized; 
m_frm.tempWebBrowser.Visible = true; 

m_frm.Show();  
} 

//VB6 code, vbscript also using exactly the same code in the event 
Private Sub Command1_Click() 
Dim tempClass 
Set tempClass = CreateObject("myClass.API") 
tempClass.ShowForm 
End Sub 

回答

0

由於您的建議,表單沒有完全顯示......線程上沒有運行消息泵。如果您試圖從VBScript中啓動並忘記C#窗口,我建議您在單獨的過程中啓動它。它會和你描述的一樣。如果您嘗試啓動它並等待用戶與其交互(例如,您正在提示他們提供信息),那麼以模態方式顯示以形成是合適的。

+0

我不知道VB6/VBscript中的多線程,但讓我花一些時間來嘗試一下,然後再發表評論 –