NotifyIcon その2

Form はあるけど表示しない。
NotifyIcon だけを表示したいプログラムを作成した。
バルーンチップが閉じられたら、Form を閉じてプロセスが終了すように。


notifyIcon1.ShowBalloonTip(10000);
Thread.Sleep(10000);
と最初はやっていた。
これだと必ず10秒待ってから画面が閉じられる。
バルーンチップが閉じたら、画面も閉じたいのだ。

BalloonTipClicked
BalloonTipClosed
こんなイベントがあるではないか。
これだ。バルーンチップが閉じるのが分かるぞ。

notifyIcon1.ShowBalloonTip(10000);
while (true) {
thread.Sleep(100);
if (_stopFlg)
break;
}
private bool _stopFlg = false;
BalloonTipClicked イベント
_stopFlg = true;
BalloonTipClosed イベント
_stopFlg = true;
とやってみたら、どちらのイベントも発生しないで、無限ループになってしまった。
あれやこれやいろいろ試してみました。
で、これ

notifyIcon1.ShowBalloonTip(10000);
while (true) {
thread.Sleep(100);
Application.DoEvents();
if (_stopFlg)
break;
}
private bool _stopFlg = false;
BalloonTipClicked イベント
_stopFlg = true;
BalloonTipClosed イベント
_stopFlg = true;
Application.DoEvents() が必要でした。
Application.DoEvents() はいろいろと弊害もあるのですが。。。

NotifyIcon

バルーンヘルプを表示させたくて、NotifyIcon を使った。
BalloonTipTextとBalloonTipTitleを指定して、
ShowBalloonHelp メソッドを呼び出した。
MSDN に書いてある通りだ。
でも、あれっ。バルーンヘルプ出ない。
なぜ!何度やっても出ない。
う〜ん、なぜだ。
NotifyIcon の Icon プロパティに設定されていないからだった。
タスクトレイに、まずアイコンが表示されないと、バルーンヘルプされない。

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて


注文した本が届きました。
読み始めたところです。
−実世界を映しているのがソフトウェア
 実世界が複雑なのでソフトウェアが複雑になっている
−ソフトウェアに見積もりができるのか?
 人と月が今でも使われている

う〜ん、なるほどねぇ。というところが多いです。
ウオーターフォールとアジャイルについて、ここから考えてしまいます。

Googleの正体


読み終わりました。
企業理念は、「情報を整理しつくすこと」。
ここから、すべてが始まる。
内容的には、私には大体想像の通りでした。
ですが、あらためて企業理念をやりとおすことができるのはGoogle以外いない。
そこがGoogleなのですね。

BITS で Upload

BITS の機能を調べていた。
Download はサンプルが結構あるけど、Upload があんまりない。
Enterprise Library に COM をラップしたものがあった。
ソースを見たけど、Upload は書いてなかった。
ググってみると、enum に Upload を追加すればいいみたい。
後は、どう Upload を実装するのかだ。
http://www.simple-talk.com/dotnet/.net-tools/using-bits-to-upload-files-with-.net/
ここにあった。
これで実行してみた。
「405 メソッドが許可されていません」HTTP エラーになる。
う〜ん、いろいろやってみたけど、ダメ。
また、ググってみた。
http://technet.microsoft.com/ja-jp/library/cc753301%28WS.10%29.aspx
「BITS サーバー拡張」を入れたら、おっできた。

なんだ、機能の追加が足りなかっただけか。
ただ、同名ファイルがあると「アクセスが許可されていません」エラーになる。
アカウントにアクセス許可を与えてしまうと、セキュリティ上良くないだろう。
サーバー側に同名ファイルがある場合の処理を追加する必要がありそうだ。