Visual Basic (以下、VB) は、11 の強力なプログラミング言語です。特に 4.0 以降では、OLE オートメーション テクノロジがサポートされており、プログラミングの利便性が向上しています。少し前に、Web 対応データベースを作成しようとしました。しかし、インターネット接続がないのでテストできません。そこで、1 台のマシン上でネットワーク機能をテストできる OLEAutomation を思いつきました。変更後は、モデム経由で接続することもできます。次に、Visual Basic を使用して小規模なネットワーク システムを作成する方法を紹介します。
----まず、サポートネットワークOLEAutomationを確立します
----VBを起動します。 Form1 のフォームにリスト ボックス List1 を作成し、その上に Frame1 を構築し、その Caption プロパティを空に設定します。中央に Label1 を作成し、同様にその Caption を空に設定します。最後に、List1 に UserList というキャプションを付けた Label2 を作成します。最後に、タイマー Timer1 をインストールし、その間隔を 3000 に設定し、有効を False に設定します。この時点で、NetWorkConnection のフォーム部分が完成します。
----続いて、VBの「ツール」メニューから「オプション」を選択し、必要に応じて各種内容を入力します。
----次に、[挿入] メニューの [モジュール] を選択して、新しいモジュール Module1 を作成します。 (全般)に以下のコードを入力します。
(UserInfo データ型)
タイプユーザー情報
ユーザー名として文字列
AliasAsInteger
終了タイプ
(最大ユーザー数)
PublicConstMaxUser=10
(メッセージを定義)
PublicConstMsg_User_LogOn=1
PublicConstMsg_User_LogOff=2
(データ型の設定)
PublicUsers(MaxUser)AsUserInfo
PublicInbox(MaxUser)AsString
PublicUserSystemInboxAsInteger
PublicOnline(MaxUser)AsBoolean
サブメイン()
Form1.Show
EndSub
----UserInfo データ型は、ログインしているユーザーのユーザー名とエイリアスを記録します。エイリアスは表示と通信にのみ使用してください。ユーザー名は、ユーザーが有効かどうかを判断するためにのみ使用されます。セキュリティ上の理由から、上記のデータにはユーザーが自由にアクセスすることができず、次のサブルーチンを通じてアクセスする必要があります。
----[挿入] メニューの [ClassModule] を選択して、新しいクラス Class1 を作成します。名前を Common に変更し、プロパティを設定します。
----次のコードを入力します。
----(ユーザー ID 値を取得する関数を提供します。ユーザーは、この関数を通じてエイリアスを使用して ID 値を返すことができます)
PublicFunctionGetUserID(AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Alias=AliasThenGetUserID=I
次へ私
エンドファンクション
----(システム情報を取得する機能を提供します。ユーザーはこれを使用して、ユーザーが変更を加えたかどうかを知ることができます)
PublicFunctionGetSystemMessage()AsInteger
GetSystemMessage=UserSystemInbox
エンドファンクション
----(ユーザー情報を取得する機能を提供します。すべてのオンライン ユーザーのエイリアスを「|」で区切って取得するために使用します。)
PublicFunctionGetUserInfo()AsString
ForI=1ToMaxUser
IfUsers(I).ユーザー名<>""Then
temp=temp ユーザー(I).エイリアス "|"
EndIf
次へ私
GetUserInfo=temp
エンドファンクション
----(ユーザーの個人情報を取得する機能を提供します。他のユーザーを受け入れるために使用されます)
ユーザーが送信した情報。 )
PublicFunctionGetUserMessage(IDAsInteger)AsString
IfID<=0OrID>MaxUserThen
終了関数
EndIf
GetUserMessage=受信箱(ID)
エンドファンクション
----(ログアウト機能を提供します。ネットワークからログアウトするために使用します。)
PublicFunctionLogOff(IDAsInteger)AsBoolean
IfID<=0OrID>MaxUserThen
ログオフ=偽
終了関数
EndIf
IfUsers(ID).Username<>""Then
ユーザー(ID).ユーザー名=""
ログオフ=真
それ以外
ログオフ=偽
EndIf
UserSystemInbox=Msg_User_LogOff
`--------------UpdateForm1-----------
ForI=0ToForm1.List1.ListCount-1
IfForm1.List1.List(I)=ユーザー(ID).AliasThen
`List1 でユーザーエイリアスを見つけて削除します
Form1.List1.RemoveItemI
終了用
EndIf
次へ私
IfForm1.List1.ListCount=0Then`ユーザーがログインしていない場合
Form1.Label1.Caption="切断されました"
Form1.timer1.Enabled=False
EndIf
エンドファンクション
----(インターネットにアクセスするためのログイン機能を提供します)
PublicFunctionLogOn(UsernameAsString,
AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Username=""Then
ユーザー(I).ユーザー名=ユーザー名
ユーザー(I).Alias=エイリアス
ログオン=I
UserSystemInbox=Msg_User_LogOn`「ユーザー ログイン」情報を送信します
`--------------UpdateForm1-----------
Form1.List1.AddItemAlias`オンラインのユーザーがいます
Form1.Label1.Caption="接続済み"
Form1.timer1.Enabled=True
終了関数
EndIf
次へ私
ログオン=0
エンドファンクション
----(ユーザーのオンライン ステータス フラグを更新する機能を提供します。これにより、システムがユーザーがオンラインかどうかを判断できるようになります。この関数が 6 秒以内に呼び出されない場合、システムはユーザーを自動的に削除します。)
PublicSubRefresh(IDAsInteger)
IfID<=0OrID>MaxUserThenExitSub
オンライン(ID)=True
EndSub
----(ユーザーの個人情報を送信する機能を提供します。他のユーザーに情報を転送するために使用されます。)
PublicFunctionSendUserMessage(MessageAs
String,ToIDAsInteger)AsBoolean
IfToID<=0OrToID>MaxUserThen
SendUserMessage=False
終了関数
EndIf
受信箱(ToID)=メッセージ
SendUserMessage=True
エンドファンクション
----Form1のコードに残りのコードを入力します。
(Form1の初期化)
PRivateSubForm_Load()
Label1.Caption="切断されました"
Form1.Caption="NetWorkConnectedServer"
Form1.Show
ForI=1ToMaxUser
ユーザー(I).ユーザー名=""
次へ私
EndSub
----(オンラインの値を判断することで、ユーザーが定期的にオンラインであるかどうかを確認します)
PrivateSubtimer1_Timer()
ForI=1ToMaxUser
IfUsers(I).ユーザー名<>""Then
IfOnline(I)=FalseThen
Fors=0ToList1.ListCount-1
IfList1.List(s)=Users(I).AliasThen
List1.RemoveItems
ユーザー(I).ユーザー名=""
UserSystemInbox=Msg_User_LogOff
`「ユーザーログアウト」メッセージを送信
EndIf
次へ
EndIf
オンライン(I)=False
EndIf
次へ私
IfList1.ListCount=0Then
「ユーザーがいない場合」
Label1.Caption="切断されました"
timer1.Enabled=False
EndIf
EndSub
----このプログラムを実行します。別の VB を起動し、ユーザー部分の作成を開始します。これらのコントロールをデフォルトの形式で以下に示すように配置します。
----次のコードを入力してください
PublicIDAsInteger
PublicConnectedAsObject
PrivateSubCommand1_Click()`ログイン
DimusernameAsString
DimariasAsString
SetConnected=CreateObject
("NetWorkConnection.Common")NetWorkConnectionの開始
ユーザー名=テキスト1.テキスト
エイリアス=Text2.Text
ID=Connected.logon(username,alias)`ログインして ID 値を返します
Timer1.Enabled=True
Command4_Click
EndSub
PrivateSubCommand2_Click()`ログアウト
x=接続済み.logoff(ID)
Timer1.Enabled=False
Setx=Nothing`オブジェクトを解放します
EndSub
PrivateSubCommand3_Click()`ユーザー情報の送信
DimTempIDAsInteger
DimTempStringAsString
DimxAsString
DimyAsBoolean
x=コンボ1.テキスト
TempID=Connected.getuserid(x)`指定されたユーザーのID値を取得します
TempString=Text3.Text
y=Connected.sendusermessage(TempString,TempID)
EndSub
PrivateSubCommand4_Click()
ForI=0ToCombo1.ListCount1`コンボ1をクリア
Combo1.RemoveItem0
次へ私
x=Connected.GetUserInfo`ユーザー情報を受信します
cd$=x
最後=1
ForI=1ToLen(cd$)
IfMid$(cd$,I,1)="|"その後
Namef$=Mid$(cd$,lastst,I-lastst)
Combo1.AddItemNamef$` ユーザー エイリアスを切り離し、Combo1 に追加します
最後=I 1
EndIf
次へ私
EndSub
PrivateSubForm_Load()
Timer1.Enabled=False
タイマー1.間隔=300
EndSub
PrivateSubTimer1_Timer()
Connected.Refresh(ID)`ユーザー ロゴを更新する
x=Connected.GetSystemMessage()`システム情報の受信
y=Connected.GetUserMessage(ID)`ユーザー情報の受信
Ify<>""Andy<>Label6.CaptionThenLabel6.Caption=y
Ifx<>Val(Label4.Caption)Then`Refresh Combo1
ラベル4.キャプション=x
Command4_Click
EndIf
EndSub
----走り始めます。ユーザー名とエイリアスを入力し、「ログオン」をクリックして、前の VB の例をチェックして、自分の名前が含まれているかどうかを確認します。そうであれば、「ハブ」が成功していることを証明します。現時点では、ログインしているユーザーが LogOff を使用せずに切断した理由が何であれ、システムはこれらのユーザーを 6 秒後に自動的に削除します。他のユーザーが影響を受けないように注意してください。
----このプログラムはモデム機能をサポートするために修正されています。プログラムのユーザー部分はそのまま残すことができます。コンパイル時に、オプションで RemoteSupportFile を選択し、付属のインストール プログラムを使用してネットワーク サーバーにインストールし、真に「ネットワーク」を実現します。 ->