過去ログ

記事一覧

【.net VB】タイマーの件、XPだとGG起動してても動作する

自宅に戻ってきてXP機にて動作確認をしましたらキチンと動くじゃないですかー
7だとリネ起動中は動作しない
さて、何故なのか

取りあえず細かい調整終えたらXP向けに公開しますけど、理由が分からなくて気持ち悪い

【.net VB】バックグランドで動作するタイマー、音声カウントあり

ちょっと前にしたらばの某スレで「KR動画見てたらイミュのカウントダウンしてくれるアプリ使ってるみたい」とかなんとか書いてありました。

タイマーといえば昔リネ2でBuff時間が見えなかった時はそうしたアプリにお世話になっておりました。今ではそのアプリもネットから消滅し再ダウンロードできないのですけれど我が家のリネ2フォルダに保管してあって以前WIZをちょっとやった時に自分にイミュをかけない場合のタイマー代わりにと使ってみたのですが、

・音声が1種類だけ
・開始音、x秒前音、終了音が全て同じ

なもので、イミュ(サウンド)→5秒前(サウンド)→きれるorかけ直す(サウンド)という風に大変賑やかになってしまい使うのをやめてしまいました。
しかし現在こうしてVBのお勉強をしているわけですし、じゃあちょっと作ってみようかなと取り掛かりだしたのはいいんですが超えないといけないハードルがいっぱいw

・アプリがバックグラウンドにある時もキーを受け付ける
・アプリの設定を保存する
・サウンドを再生する

と勉強にはうってつけ、しかし難題ばかり。
想像通り最初の最初で躓いたのですがアプリが非アクティブな時もキー入力を受け付けるというのが非常に難解・・・あちこち参考にさせていただき何とかなりましたが、先人さんの知恵とインターネットは偉大です。

参考記事
------------------------------------------------------------
n3104の日記さん「Windowsキーの無効化」
http://d.hatena.ne.jp/n-3104/20090418/1240066907

MSDN「方法 : Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する」
https://msdn.microsoft.com/ja-jp/library/3tszykws(v=vs.110).aspx

DOBON.NET プログラミング道さん「WAVEファイルを再生する」
http://dobon.net/vb/dotnet/programing/playwavfile.html
------------------------------------------------------------

今回は最初から.NET 4で作りまして、XPと7では動作を確認しております。
起動、タイマーON/OFF、キーの設定、タイマーの動作、サウンドファイルの選択、コンフィグの保存/読み出しまではキチンと動作しましたのであとは実際にリネをプレイしながら音声の再生がうまく行くかどうかを残すのみ。

今晩試してみて結果良好でしたら公開したいと思います。

<追記1>
と思ったんだけどちょっとググってみたらGameGuardでキーボードフックが全て弾かれるらしいw
VBの低レベルフックだと弾かれるので、弾かれたくなかったらC#かC++で高レベルフック使わないといけないそうな。
ていうかマジで・・・www
くっそwwwww

<追記2>
せっかく作ったのに勿体ないからなんとかできないかなと調べてみたら多ボタンマウスのキーフックはGameGuardも通すらしい。公式で推奨してるからいけるのは多分間違いない。じゃあImu_Timer側でサイドボタンにキーアサインすればいけるんじゃないかな?どうしてもキーボード対応させたかったらJoyToKeyでサイドボタンを更にFキーにアサインしたらいいんじゃないか。
いま多ボタンマウス無いから試せないけど指定キーをアサインできるように取りあえず作り変えてみよう。


ファイル 3443-1.png

l1itemdb.exe動作に関する現時点での問題

    4 / 4.5 / 4.6
XP  ○   ×   ×
Vista ○   ○   ○
7    ○   ○   ○
8    ×   ○   ○
10   ×   ×   ○

という事で、XPに合わせると8~10で動かず、7以上に合わせるとXPで動かずという事になるような感じっぽい。

【Lineage】.net版アイテムデータベース アルファ版テスト公開

なんとなく形が纏まってきたので公開してみます。
スタンドアロン版なのでインターネット環境が無くても動作し、現時点ではどこへも通信しません。
将来的にはアップデートのお知らせ等を盛り込められたらと思います。

ダウンロードはこちら
http://www.lbtg2.com/lbtg/l1db/l1itemdb.zip
(サーバー上のサイズ:10,198,980バイト)
(ウイルスバスター11.0.1745にて検索済み)

.NET Framework未インストールの方は下記2点をインストールしてください。
------------------------------------------------------------
Microsoft .NET Framework 4.5
https://www.microsoft.com/ja-jp/download/details.aspx?id=30653

Microsoft .NET Framework 4.5 Language Pack
https://www.microsoft.com/ja-jp/download/details.aspx?id=30667
------------------------------------------------------------

.NETのインストールが終わり、l1itemdb.zipを解凍したら出てくる「l1itemdb.exe」を起動すると次の画面になります。

ファイル 3441-1.png

「Items」タブではアイテムの種類別にリスト表示できます。「カテゴリ全て」ボタンのある個所は武器、防具、アクセサリで仕分けできるようになっています。

アイテムリスト上部の「Job」では各職業毎の絞り込みができますが、使用可能職業が指定されていない一部アイテムが表示されませんのでその場合は職業絞り込みを解除してください。


「Status」タブをクリックすると次の画面になります。

ファイル 3441-2.png

このページではアイテムの性能毎に絞り込みができます。また「Items」ページで指定した条件を引き継ぎます。
条件のクリアはタブページ下部にある「このタブ全てクリア」にて行ってください。反対側のページ条件をクリアしたい場合は「右(左)のタブ全てクリア」で実行できます。

リスト表示されたアイテムをクリックすると右側の大アイコン表示と、リストには表示されていない詳細性能が表示されます。
リスト表示されたアイテムをダブルクリックすると装備状態となり、ステータスが性能に応じて変動します。
一度装備したアイテムを解除するには装備個所のアイコンダブルクリックで行います。

今のところネット版よりデータ検索が速くて、多少絞り込みが有利で、装備個所への移動ができるのでなんとなく嬉しいくらいではありますが、不具合報告など頂戴できましたら幸いです。


以下、免責事項
・登録データの信頼性については担保しません(間違いもあるという事)
・このアプリを使って生じた損害については補償しません
・www.lbtg2.comドメイン以外からダウンロードした本アプリについて如何なる苦情も受け付けません

【.net VB】オブジェクト(コントロール)名を変数に代入するとか

エクセルVBAでコントロール名をループで扱う場合には

For i=1 to 5
 Form1.Contorols("Label" & i).Text=""
Next

とするだけで良く、これはそもそもVBのTipsから学んだやりかたでした。
しかし.netではこうした手法が使えないので大変不便です。
そんなときの代替案はといいますと、

MSDN「Visual Basic 6.0 の優れた機能を取り戻す 」
https://msdn.microsoft.com/ja-jp/library/dd313997.aspx

にあるようなコントロール配列を作ることで対応します。

Dim colMyLabels As ArrayList
Private Sub BuildLabelCollection()
 colMyLabels = New ArrayList
 colMyLabels .Add(Label1)
 colMyLabels .Add(Label2)
 colMyLabels .Add(Label3)
 colMyLabels .Add(Label4)
 colMyLabels .Add(Label5)
End Sub

これをForm1_Load内で実行するとコントロール配列として利用できます。

For i=0 to 4
 colMyLabels(i).Text=""
Next

わぁ便利!
.netVB初心者の方の参考になれば幸いです。

アイテムDBの進捗はまずまずでして、なんとなく形になってきました。

ファイル 3440-1.png

勉強用に作ってるのであれですが、ステータスシミュレーター代わりにならんかなーみたいな方向で進行中であります。