2012/03/16

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

決まり文句

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

UOA_Tool.#005.zip

2012/03/13

[iTunesのデータを移動]

以前SSDのベンチマークを取ったときに、ふと気がついたのが、

特にソフト沢山インストールしているわけじゃないのにCドライブ使用容量56G・・・

おかしいと思ってフォルダの容量を見ていくと・・・



iTune関連のバックアップがすごいことになってました・・・



ググってみるとジャンクションと言って、シンボリックリンクみたいにショートカットを貼って対応するというものでした。

普通のショートカットとは違うもの見たいですが、これはまた今度調べるとしてとりあえず対処。


Windows Server 2003 Resource Kit Toolsに含まれているlinkd.exeを使用するらしい。

まず"C:\users\[username]\AppData\Local\Apple Computer"と"C:\users\[username]\AppData\Roming\Apple Computer"を別のディスクの変更場所へ移動

そしてリンク作成

linkd.exe "C:\users\[username]\AppData\Local\Apple Computer" "E:\iTune\AppData\Local\Apple Computer"

linkd.exe "C:\users\[username]\AppData\Roming\Apple Computer" "E:\iTune\AppData\Roming\Apple Computer"

移動したファイルは35G・・・SSDにとってはは大きすぎるので気づいてよかったという感じでした(・ω・;

※上記パスはWindows7の場合です。




2012/03/11

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

決まり文句

この記事で紹介しているのはネットゲームのウルティマオンラインのツール開発に関する内容ですが、ウィンドウメッセージを送ったり受け取ったりしたことの無い方には、VBでアプリケーション間通信の手助けとなるコードが書かれてるかもしれません。

途中からこの記事を見た方は、こちらから全て見ることができます。

冴えない頭で考える

坦々と機能紹介していってもつまらないので・・・既に3日坊主になりかけ(・ω・;

何かを作る方向性にしようかと思って考えたのが、スキル管理!?っぽいのを。

私はソウルストーンで入れ替えしてるとどのキャラにスキル入ってるか忘れがちで、わざわざINして確認が面倒だと思うから

サーバー別、アカウント別、キャラ別に保存しておけるのが作れたらいいなと思う。

以前スキル管理ソフトあった気がしたのだけれど探しても見当たらず、ちょうどいいので作ってみようかなと。

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

2012/03/06

[HardDisk BENCH2]

CrystaldiskMarkさんのページをよく見てみたら、SSDはテストデータの設定で結果が変わるとちゃんと書いてありました。。。

ということで再度 0fill で再度ベンチとって見ました。

INTEL 510 SSDSC2MH120A2 120G

INTEL 520 SSDSC2CW060A3 60G

Hitachi HDS721050CLA362 500G

RamPhantom7 FAT32 4G


それなりの結果になって気持ち満足です(・ω・)

520は影響あって大分変化しましたね。