決まり文句
この記事で紹介しているのはネットゲームのウルティマオンラインのツール開発に関する内容ですが、ウィンドウメッセージを送ったり受け取ったりしたことの無い方には、VBでアプリケーション間通信の手助けとなるコードが書かれてるかもしれません。
途中からこの記事を見た方は、こちらから全て見ることができます。
ログイン/ログアウト
1.UOAのハンドルを取得する
FindWindowで“UOASSIST-TP-MSG-WND”を探すとハンドルを取得できる
2.UOAに自分のウィンドウハンドルを通知
SendMessageでUOAハンドルめがけてWM_USER+200と自分のハンドルを送る
・ログアウト
1.上記2を再度行うとログアウトできる
Form(抜粋)
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim Result As Integer
Result = UOALink_Login(Me.Handle)
Select Case Result
Case -1
txtLog.AppendText(String.Format("UOALink_Login = {1}: UOAが見つからない{0}", vbCrLf, Result))
Case 0
txtLog.AppendText(String.Format("UOALink_Login = {1}: スロットが一杯{0}", vbCrLf, Result))
Case 1
txtLog.AppendText(String.Format("UOALink_Login = {1}: ログイン成功{0}", vbCrLf, Result))
Case 2
txtLog.AppendText(String.Format("UOALink_Login = {1}: ログアウト成功{0}", vbCrLf, Result))
Case Else
txtLog.AppendText(String.Format("UOALink_Login = {1}: 不明な戻り値{0}", vbCrLf, Result))
End Select
End Sub
Module(抜粋)
Public Const UOA_CLASSNAME As String = "UOASSIST-TP-MSG-WND"
Public UOA_hWnd As Integer
Public Const WM_USER As Integer = &H400S
Public Const WM_UOA_REQUEST_DATA As Integer = WM_USER + 200
Public Function fncGetWindowHandle( _
ByVal pClassName As String) As Integer
Return FindWindow(pClassName, vbNullString)
End Function
Public Function UOALink_SendMessage( _
ByVal WM_UOA As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
Dim Result As Integer
UOA_hWnd = fncGetWindowHandle(UOA_CLASSNAME)
If UOA_hWnd = 0 Then
Return -1
End If
Result = SendMessage(UOA_hWnd, WM_UOA, wParam, lParam)
Return Result
End Function
Public Function UOALink_Login(ByVal hWnd As Integer, Optional ByVal GetHouse As Integer = 0) As Integer
'' hwnd = メッセージを受け取るウィンドウハンドル
'' Result = -1 : UOALink_SendMessageでUOAのウィンドウが見つからないと-1を設定
'' Result = 0 : スロットが一杯
'' Result = 1 : ログイン
'' Result = 2 : ログアウト
Dim Result As Integer
Result = UOALink_SendMessage(WM_UOA_REQUEST_DATA, hWnd, GetHouse)
Return Result
End Function
ダウンロード
開いたら File→Download で保存することができます。
0 件のコメント:
コメントを投稿