2012年7月11日水曜日

Visual Basic 6.0 でマウスホイールを使う

久々にVB6で開発することになったのですが(古いプログラムの仕様変更メンテorz)、そういえばマウスのホイールでエディタのスクロールできないんでしたね……。
以前は常駐しとくとVB6ほか未対応のソフトでもホイールが使えるようになるというフリーウェアを使ってたのですが、名前忘れたのでググるwと、ちゃんとマイクロソフト謹製の拡張機能があるではないですか。

ググって見つけたブログ記事はこちら:
VB6のコードエディタでマウスホイールを有効にする

マイクロソフト サポートのページはこちら:
Visual Basic 6.0 IDE でマウス ホイール イベントを動作しません。

↑自動翻訳ページなのでタイトルの日本語が変ですw
これはページタイトルなんだけど本文中のタイトルは
「Visual Basic 6.0 IDE でマウス ホイール イベントがうまくいかない」
です。これならわかるw

導入手順は、上記のページにも書いてますが、

1.MSサポートのページ(上記)から VB6MouseWheel.exe をダウンロード
2.自己解凍ファイルなので実行して解凍
デフォルトだと Documents and Settings/ユーザ/Local Settings/Temp の直下に(サブフォルダが作成されずに)解凍されてわかりにくいです。適当なフォルダを作成しておいてそこを指定しましょう。5つのファイルが出てきますが、必要なのはDLLファイルひとつ。
3.VB6IDEMouseWheelAddin.dll を Windows/System32 にコピー
本当はどこでもいいのでしょうがだいたいDLLはここに入れとくのが無難かとw
4.レジストリ登録
「ファイル名を指定して実行」で 
regsvr32 vb6idemousewheeladdin.dll 
を実行します。登録に成功した旨のメッセージが出ればOK。
5.VB6を起動
6.VB6のメニュー[アドイン]-[アドイン マネージャ]を選択
7.アドイン設定
一覧から「MouseWheel Fix」を選択し、右下のロード方法の「起動時にロード」にチェックをつけて[OK]
これで次回のVB6起動時からホイールが使えるようになっています。もちろんすぐ起動しなおしてもOK。

2012年6月26日火曜日

Windows XP SP2 インストール後の Windows Update ができない

ひさびさの投稿ですw

いまさらですが必要があって Windows XP SP3 を新規セットアップすることになりました。
SP3のメディアはないので
SP2のパッケージをインストール → Windows Update でSP3を入れる
という手順になります。
Windows XP SP2 のインストールは問題なくできたのですが、その後、Windows Update をしようとしたところ、更新確認の[高速][カスタム]のところで[高速]をクリックした後のページが
「Webサイトに問題が発生したため、このページを表示できません。~」
などといわれて表示されず……。
ググるとよくあることらしくいろいろヒットしたのですがどれを試しても解消せず。しばらく放置してから再度試す、ブラウザのキャッシュをクリアする、マイクロソフトを承認済みサイトに入れる、ファイヤーウォールを切る、などなど。
あきらめかけたところで気になったことが。Windows Update のページを行ったりきたりしている間にときどき文字化けして直らなかったりしてたのです。それ以前にIE起動したときのデフォルトページであるMSNのトップページでもステータスバーにエラーが出ていたし……もしかしてブラウザのせい?
というわけで、インストール直後のIE6では新しいWindows Updateのページを見られないんじゃないか? と思い当たり、XPでの最新版(というか最終版?)であるIE8をインストールしてみました。
結果は大成功。無事にアップデートができてSP3も当てられました。やたら時間かかったけど……。
お困りの方はお試しください。
そういえば先日、Windows Server 2008 をインストールしたときは、インストール後の最初の起動時にIE9のインストールを促されたような気がする……以前からWindowsOSとIEは不可分みたいな感じではあったけど、最近IE使ってないので忘れてましたw

で、あとで気がついたんですが、SP2インストール後にSP3を当てる方法として、Windows Update を使用せず、SP3のインストールパッケージをダウンロードしてからスタンドアロンでインストールするという方法もあったのでした。そっちの方が早かったんじゃないか……いずれにせよIEのバージョンは上げといたほうがいいとは思いますが。

Windows XP Service Pack 3 (SP3) をインストールする方法
http://windows.microsoft.com/ja-JP/windows/help/learn-how-to-install-windows-xp-service-pack-3-sp3

(2012.10.23追記)
ダウンロードページはこちら↓です。上記のページの中にもリンクがあるんだけどちょっとわかりにくいので……。ダウンロードファイルのサイズは 325.6MB と大きいのでご注意ください。

Download: IT プロフェッショナルおよび開発者用 Windows XP Service Pack 3 ネットワーク インストール パッケージ - Microsoft Download Center - Download Details
http://www.microsoft.com/ja-jp/download/details.aspx?id=24

(おまけ)
マイクロソフトのサポートサイトで Windows Update が使用できない場合の対処方法を検索していたら、
Windows Updateできない → Microsoft Fix it で診断できます → Fix it インストールします → SP3が必要です → Windows Update でSP3入れてね
という見事なたらい回しループに遭遇しましたw

2010年11月2日火曜日

.msiファイルの編集をVBScriptで自動化する

Windows Installerのファイル(.msi)はVisualStudioのセットアッププロジェクト(配置プロジェクト)などで生成することができますが、後でプロパティを細かく編集したい場合があります。生成された.msiファイルをORCAなどの.msiファイル編集エディタで開いて修正すればいいのですが、ビルドのたびに毎回同じ修正をするのも面倒だし、何回もやってると修正するのを忘れてしまったりします。

自動化したいと思っていろいろ調べたところ、VBScriptのデータベース操作(SQL)による編集が可能であることがわかりました。さらにそのスクリプトがビルド完了時に実行されるようにセットアッププロジェクトで設定しておくと、.msiが生成された後に自動で編集実行できます。

1.VBScriptのファイルを作成

テキストファイルで編集して拡張子を.vbsにすればOKですが、VisualStudioのエディタ画面でも編集できるので、セットアッププロジェクトに入れておいたほうがわかりやすいかと。Exclude プロパティをTrueにしておけばインストーラには含まれません。

2.VBScriptの中身を編集

.msiファイルのPropertyテーブルをSQLクエリで検索し、当該レコードのフィールドを編集するコードを書きます。ここらへんが詳しいので参考にしてください。コマンドライン引数として編集するファイル名が渡されるようにします。

3.単体テスト

VBScriptが正しく実行されるか、ビルドされた.msiファイルを使ってコマンドプロンプトでテストします。

cscript “~.vbs” “~.msi”

.vbs, .msiファイルがあるサブフォルダに移動してから実行するか、フルパスまたは相対パスで各ファイルのパスが通るようにして実行します。

4.セットアッププロジェクトでビルド後に自動実行されるように設定

プロジェクトのプロパティ RunPostBuildEvent を「ビルドが成功したとき」に設定しておき、PostBuildEvent プロパティに実行するVBScript のコマンドを設定します。

cscript “~.vbs” “~.msi”

単体テスト時のコマンドラインと同様です。絶対パスまたは、マクロを利用したプロジェクトからの相対パスを書きます。パスを含むファイル名はリテラルで囲みます(cscript.exe に対する引数になります)。

5.セットアッププロジェクトのビルドを実行する

うまく行けば.msiファイルのビルド後にVBScriptが実行され、編集も完了しているはずです。実際に編集できているかどうかは結局ORCAなどで確認するしか……。