Firefoxのクイック検索バーにボタンを表示する

投稿者: shuichi, タグ: ,,, 投稿日時: 2007/11/21 21:27

userChrome.cssに以下のコードを追加することで、Firefoxのクイック検索バーに「次を検索」などのボタンを表示することができます。マウス派の人にとっては便利ですよ。

#FindToolbar > *
{
    display: -moz-box;
}

Firefoxの検索ツールバーに関してはキーボード機能: Find As You Typeを参照。ショートカットキーが載っているのでキーボード派の人はこっちの方が便利です。

Wordで数式の右に番号を挿入する方法

投稿者: shuichi, タグ: ,,, 投稿日時: 2007/03/14 00:11

Wordでは図表番号を挿入するとき番号を選択項目の上に挿入するか下に挿入するか選択することができます。しかし右側に番号を挿入する方法は簡単ではありません。特に数式番号は数式の右側にあるのが普通です。単純に数式の右側にスペースやタブを挿入して調整する方法もありますが、相互参照を行う場合はうまくいきません。

ということで数式の右に番号を挿入する方法を探してみたところ、MicrosoftのサイトのWD2000: How to Insert a Right-Aligned Caption Next to an Equationにありました。4つの方法が紹介されていて方法1は中央揃えタブと右揃えタブを用いる方法で、方法2、3は表を用いてレイアウトする方法です。方法4は方法2、3をマクロで記述したものでした。ちなみに相互参照を行う場合は方法2、3、4を用いる必要があるので注意。

ちなみにMathTypeというソフトを使えばこれらのことが簡単にできますよ。有料ソフトですが体験版があるので興味のある方は試してみたらどうですか。TeXを使っている人は問題ないですね。

今さら言うのも遅いですが論文などの長い文書をWordで書く場合はスタイル、図表番号、相互参照くらいは使ったほうが便利ですよ。

ContextMenuStripをタスクバー上に表示する

投稿者: shuichi, タグ: ,,,, 投稿日時: 2006/10/28 04:38

.NET Framework 2.0では.NET Framework 1.xのContextMenuの代わりにContextMenuStripというコントロールが追加されました。このContextMenuStripは多機能で便利ですが、タスクバー上に表示させようとするとうまく表示できません(タスクバーに重ならないように表示される)。SHAppBarMessageでデスクトップツールバーを作成したときなどは困るんじゃないかと。ということでContextMenuStripをタスクバー上に表示させるためにいろいろと調べてみました。

最初に注目したのはNotifyIcon。NotifyIconにContextMenuStripを設定すると正常にタスクバー上に表示されます。MSIL逆アセンブラでNotifyIconを覗いてみると、ContextMenuStripのShowInTaskbarというプライベートメソッドを呼び出していることが分かります。とりあえず、

contextMenuStrip.GetType().InvokeMember(
    "ShowInTaskbar",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.InvokeMethod |
    System.Reflection.BindingFlags.Instance,
    null,
    contextMenuStrip,
    new Object[] { Cursor.Position.X, Cursor.Position.Y } );

とすることでcontextMenuStripをタスクバー上に表示させることができました。

ただし、この方法では何故かメニューが常にマウスポインタの右上に表示されるようです。いまいちスッキリしないのでShowInTaskbarメソッドの中をさらに覗いてみると、ToolStripDropDownにWorkingAreaConstrainedプロパティが存在するらしい。強制的に作業領域に表示させるという意味なので、

contextMenuStrip.GetType().InvokeMember(
    "WorkingAreaConstrained",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.SetProperty |
    System.Reflection.BindingFlags.Instance,
    null,
    contextMenuStrip,
    new Object[] { false } );
contextMenuStrip.Show( Cursor.Position );

としてみるとうまく表示させることができました。ただし、メニューが表示されるとWorkingAreaConstrainedがtrueに設定されるようなので、表示させる前に毎回WorkingAreaConstrainedをfalseに設定しないと駄目なようです。

これらの方法は本来アクセスできないメソッドやプロパティに強引にアクセスしているわけで、実際はこのような方法は好ましくありません。とりあえずこのような方法もあるというだけです。

MSDNライブラリのCDをDVDにまとめる

投稿者: shuichi, タグ: ,,,, 投稿日時: 2006/06/17 01:34

先日公開されたMSDNライブラリはCD4枚分のイメージをダウンロードすることができますが、DVD版は公開されていないみたいです。ちょっと不便なので1枚のDVDにまとめてみました。しかし、ただ単純にDVDに記録するだけでは駄目でしたので、ちょっとメモしておきます。

まずDaemonToolsなどのソフトを用いてCD4枚分のイメージからファイルを抽出します。次にそれぞれのCDイメージから抽出したファイルを1つの適当なフォルダにまとめます。ここでちょっとした小細工が必要なのですが、msdn.msiというファイルの中にCDのボリュームラベルが記述されている部分があるのでそこをバイナリエディタで書き換えます。具体的にはmsdn.msiというファイルの中にMSDVJPND1、MSDVJPND2、MSDVJPND3、MSDVJPND4となっている部分がありますので、そこを全てMSDNVJPNDなどと適当に書き換えます(文字列の長さが変わらないようにする)。そして、ボリュームラベルをMSDNVJPNDにしてDVDに記録すればO.K.のはずです。いきなりで心配な方はDVDイメージを作成してDaemonToolsでテストしてみるといいかもしれません。

foobar2000をタスクバーからコントロール

投稿者: shuichi, タグ: ,,, 投稿日時: 2006/05/23 01:05

最近はfoobar2000というオーディオプレイヤーをよく使用しているんですが、foobar2000を最小化している時でもタスクバーからコントロールできるようにしてみました。このような機能を提供するソフトはいくつかあるようですが、今回はWindowsの機能のみを利用して実現してみました。

foobar2000 in taskbar

foobar2000はいくつかのコマンドライン引数を指定して実行することで、ある程度だけ動作をコントロールすることができます。いくつか例を挙げますと…

foobar2000.exe /play
foobar2000.exe /stop
foobar2000.exe /next

上から再生、停止、次の曲に相当します。何をしたいのかと言いますと、このようなコマンドライン引数を指定したfoobar2000.exeへのショートカットを適当なフォルダに作成し、そのフォルダをタスクバーに登録するだけです。ショートカットのアイコンやタスクバー上での表示方法をカスタマイズすることで上の画像のような構成にすることが可能です。Windowsの機能だけでもなんとなく形になりますね。

以前はfoo_remoteというタスクバーからfoobar2000をコントロールするためのコンポーネントが公開されていましたが、現在では開発が停止しているようです。また関連ソフトとして以前紹介したWinamp DeskbandというWinampをタスクバーからコントロールするソフトもあります。