2012/03/07

UOA ツール 開発 #003 - UO UOA TOOL for Visual Basic , 自動化、便利、マクロ、自分で管理などなど(ソース付き)

決まり文句

この記事で紹介しているのはネットゲームのウルティマオンラインのツール開発に関する内容ですが、ウィンドウメッセージを送ったり受け取ったりしたことの無い方には、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 で保存することができます。

UOA_Tool.#003.zip

0 件のコメント:

コメントを投稿