掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ActiveX DLLでWinsockコントロールの制御 (ID:85938)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ABC様レスありがとうございます。 現象が再現できるコードと操作方法(一番下)を掲載させていただきます。 '---- ActiveX DLL側(class1.cls) ここから ---- 'フォームを用意してWinsockコントロールを貼り付ける必要あり。 Private Sub Class_Initialize() Load form1 End Sub Private Sub Class_Terminate() form1.winsock1.Close Unload form1 End Sub Public Sub SockOpen() On Error Resume Next With form1.winsock1 .Close .Protocol = sckTCPProtocol .RemoteHost = "xxx.xxx.xxx.xxx" 'アドレスは任意 .RemotePort = 10000 'ポート番号は任意 .LocalPort = 0 .Connect If Err.Number <> 0 then msgbox "SockOpen:" & Err.Number & " " & Err.Description 'Debug.Print "SockOpen:" & Err.Number & " " & Err.Description End If End With End Sub '---- ActiveX DLL側(class1.cls) ここまで ---- '---- EXE側(.frm) ここから ---- 'IDEのプロジェクト->参照設定で作成したActiveX DLLを参照する必要あり Private objTest As class1 Private Sub Command1_Click() Set objTest = New clsTest objTest.SockOpen End Sub Private Sub Command2_Click() Set objTest = Nothing End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Set objTest = Nothing End Sub '---- EXE側(.frm) ここまで ---- 再現方法ですが、 1) EXE側でF5を押下してデバッグ。(ActiveX側はIDEで表示している必要は無いです。) 2) Command1押下。 3) Command2押下。 4) Formを閉じてデバッグを一度終了。 5) 1), 2)を再度繰り返すとエラーが発生します。 一度EXE側のIDEを終了して再度立ち上げれば一度だけデバッグできるようになります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.