決まり文句
この記事で紹介しているのはネットゲームのウルティマオンラインのツール開発に関する内容ですが、ウィンドウメッセージを送ったり受け取ったりしたことの無い方には、VBでアプリケーション間通信の手助けとなるコードが書かれてるかもしれません。
途中からこの記事を見た方は、こちらから全て見ることができます。
シャード名、アカウント情報、キャラ情報
シャード名は普通に取得することができましたが、キャラ名やアカウント名は取得できなくて、UOAの管理しているIDとして取得できました。
UO.cfgにアカウント名、キャラ名が *ログアウト時* に保存されますが、クライアントが異常終了したときは保存されないと思うので若干問題が出そうです(・・;
ユーザーIDとやらも取得できましたがこちらは、パーティ関連で使うらしいので今回は必要なかったかもでした。
Form(抜粋)
Private ShadeName As String = ""
Private AcctID As Integer = 0
Private UserID As Integer = 0
Private CharaID As Integer = 0
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub WndProc(ByRef WMSG As Message)
Select Case (WMSG.Msg)
Case WM_UOA_LOGON
CharaID = WMSG.WParam
UserID = UOALink_GetUserID()
AcctID = UOALink_GetAcctID()
ShadeName = UOALink_GetShadeName()
txtLog.AppendText(String.Format("ログインしました{0}", vbCrLf))
txtLog.AppendText(String.Format(" ShadeName:{1} AcctID:{2} CharaID:{3} UserID:{4}{0}", vbCrLf, AcctID, CharaID, UserID))
txtLog.AppendText(String.Format("{0}", vbCrLf))
Case WM_UOA_LOGOUT
CharaID = 0
UserID = 0
AcctID = 0
ShadeName = ""
txtLog.AppendText(String.Format("ログアウトしました{0}", vbCrLf))
txtLog.AppendText(String.Format("{0}", vbCrLf))
End Select
MyBase.WndProc(WMSG)
End Sub
Module(抜粋)
Public Const WM_UOA_GET_USER_ID As Integer = WM_USER + 210
Public Const WM_UOA_GET_SHARD_NAME As Integer = WM_USER + 211
Public Const WM_UOA_GET_ACCOUNT_IDENTIFIER As Integer = WM_USER + 216
Public Const WM_UOA_LOGON As Integer = WM_USER + 303
Public Const WM_UOA_LOGOUT As Integer = WM_USER + 308
Public Function UOALink_GetShadeName() As String
Dim Result As Integer
Dim Buf As String = ""
Result = UOALink_SendMessage(WM_UOA_GET_SHARD_NAME, 0, 0)
If (Result <> 0) Then
Buf = fncGetAtomString(Result)
End If
Return Buf
End Function
Public Function UOALink_GetAcctID() As Integer
Dim Result As Integer
Result = UOALink_SendMessage(WM_UOA_GET_ACCOUNT_IDENTIFIER, 0, 0)
Return Result
End Function
Public Function UOALink_GetUserID() As Integer
Dim Result As Integer
Result = UOALink_SendMessage(WM_UOA_GET_USER_ID, 0, 0)
Return Result
End Function
ダウンロード
開いたら File→Download で保存することができます。
0 件のコメント:
コメントを投稿