Home > Tags > Tips

Tips

[WPF] がんばってバージョン情報ダイアログ作ってみた

image

ちょっと頼まれてソフトをしこしこ作っていたのだけど、コアな機能よりUIに手間がかかってしまいます。WPF って慣れないので、ひとつひとつの作業にいちいちヘルプをにらめっこする必要があるんですよねぇ…

今日はバージョン情報ダイアログを作るのに四苦八苦。必要な機能は、

  1. アセンブリからアプリ名やバージンを勝手に取ってくること
  2. アプリケーションアイコンを抽出して表示すること

Continue reading

Make Link と、ほかのサイトからの引用に便利な設定。

image

Make Link :: Firefox Add-ons

ブログでほかのサイトを引用するのに便利な「Make Link」。でも、デフォルトでは引用向けの設定があまり登録されていないのかな?数種類登録しておくと便利なんだけど。

ということで、自分用に設定をメモ。

Continue reading

[C#] ダブルクリックでフォームを閉じる&ドラッグでフォームを移動する

懐かしいことを聞かれたので。調べたら、VBのコードが多いのね。

Continue reading

WordPress で特定カテゴリのフィードを除外して取得する

WordPress では特定のカテゴリーを排除してフィードを表示することができる。ただし、それにはカテゴリのIDが必要。

たとえば、ウザい僕の日記を読みたくない場合、日記のCategory IDは「5」なので、http://www.be-styles.jp/feed?cat=-5 と打てば日記以外を表示できる(「-」をとれば、日記カテゴリのフィードにリダイレクトされる)。

さらに、バイクの話題も興味がない場合、バイクの Category ID は「11」なので、http://www.be-styles.jp/feed?cat=-11 と打てばバイクの話題以外のフィードを取得できる。

さらにさらに、日記もバイクもウザい人のためには、http://www.be-styles.jp/feed?cat=-5&cat=-11 が使える……と思ったが、ウチのサイトでは使えないようだ。

via Exclude Categories From Wordpress Feeds

WordPress の RSS Feed に関する Tips – www.be-styles.jp

[ネットブック] Windows 7 のタスクバーを縦表示に

netbook_2

ネットブック + Windows 7 の組み合わせは良好。
ただ、不満がひとつあって、タダでさえ足りない縦解像度が、縦幅倍増の新タスクバーで圧迫されてしまう。 それを解決するために、タスクバーを縦表示にしてみた。

image  image

日付表示が消えてしまった!(右は通常の場合)

Continue reading

[WPF] アプリケーションの実行パスを取得する

小ネタ。

WPF の Application クラスには、System.Windows.Forms.Application クラスほど便利ではなく、たとえば StartupPath プロパティがない。ないなら作れ、って感じなのだけど、はてさて。

public string GetStartupPath()
{
	System.IO.Path.GetDirectoryName(
		Environment.GetCommandLineArgs()[0]);
}

Environment.GetCommandLine はコマンドライン引数を返してくれるが、その先頭には必ずアプリケーションの実行パスが含まれている。それを利用しよう。つまり、コマンドライン引数を string 配列にして返してくれる Environment.GetCommandLineArgs()[0] がすなわちそのまま EXE のパスになっている。

ほかにも、System.Windows.Forms.Application にはいろいろ便利なプロパティや関数があるので、それをマネして WPF の App クラス(プロジェクト作成時に自動生成されるヤツ)のプロパティとして実装しておけば、いろいろと便利かもしれない。

Continue reading

[WPF] キーボードフック(WM_KEYBOARD_LL)

SetWindowsHookExは本来DLLを作成し、そのインスタンスを指定しなければならない。でも参考にしたプログラムはEXE上のフックプロセスをそのまま指定していた。何故可能なのかは不明だが確かにそのサンプルAPは動く。そこでそれをそのまま真似てみたがSetWindowsHookExからはエラーが返ってくる。この原因がわかるまで1週間近くかかってしまった。

結論から言うと(と言うか結論しか言えない)、プロジェクトのプロパティにあるデバックタグに「Visual Studioホスティングプロセスを有効にする」が規定値でオンになっている。このチェックを外さないとSetWindowsHookExはフックプロセスを異常とみなすようだ。

Jumboのブログ! | WPFを使った拡大鏡を目指して

フックってDLL作ってやらなきゃいけないと思ってけど、そんなことしなくても動くんだね。これを参考にして、キーボードのローレベルフックをやってみた。

Continue reading

[WPF] WPFでいろいろ躓いたところ

描画領域を取得したい場合は、 RenderSize が使える。以下は、コンテンツが 590×450になるようにウィンドウサイズを変更する例。

private void buttonAdjustWindowSize_Click(
	object sender, RoutedEventArgs e)
{
	Width -= (grid.RenderSize.Width - 590);
	Height -= (grid.RenderSize.Height - 450);
}

Window -> grid -> その他もろもろ といった感じにコントロールを配置しているので、grid の大きさが、いわば Form アプリの ClientRect() に相当する感じになっているので、それを利用してみた。

まぁ、API でガリガリとウィンドウ枠の幅を取得しても良かったんだけど、めんどくさいしね。

Continue reading

[C#] Int を byte[] に分解する

たとえば、Color.ToArgb() で返ってくる整数値(AARRGGBB の32ビット)を成分ごとにばらしたい場合などなど。

シフト演算をしてもよいが、私のような文系人間には少しつらい。ちょうどいいことに、.NET には専用のコンバータークラスがあるのでそれを利用すればいい。

BitConverter はさまざまな型の変数を、バイト配列に変換してくれる。
たとえば、.GetBytes() に整数値を渡せば、byte を4つ格納した配列を返す。

Int32 i = /* 何らかの整数値 */;

byte[] b = BitConverter.GetBytes(i);
label1.Text = string.Format(
	"{0:X2}-{1:X2}-{2:X2}-{3:X2}",
	b[0], b[1], b[2], b[3]);

出力結果は、 C0-AA-F2-87 とかそんな感じになるはず。

Continue reading

[C#] 拡張メソッドでちょっとコードをきれいにする

点と点の距離や中点をとる場合などに、Point型をPointF型に簡単に変換できたら便利。そのためのメソッドは、こんな感じになるだろう。

public PointF PointToPointF(Point p)
{
    return new PointF((float)p.X, (float)p.Y);
}

けど、こんなメソッドが増えてくると、なんだか全体のコードの見通しが悪くなって気持ち悪い。ユーティリティー系メソッドを別ファイルにしてまとめておくというのもアリだが、PointToPointF() という名前がなんともはや(Delphi ならこれでもいい気がするけど)。

できれば、i.ToString() みたいに p.ToPointF() なんて書ければいいのだが。

C#3.0 なら拡張メソッドを使うことで、簡単に(継承を使わずに)既存のクラスへ新しいメソッドを付け加えることが出来るらしい。

Continue reading

Home > Tags > Tips

My Friend Feed

http://friendfeed.com/daruyanagi

Google Analyticator

691
 Unique Visitors 
 (1 day) 
Powered By Google Analytics

Return to page top