2010年09月02日
Mgmtclassgen.exe で生成した Sserviceクラスに手を加える
先月に紹介したMgmtclassgen.exe で生成した Sserviceクラスは、一通りの機能が
揃っているので、とても便利なのですが、
Change と Create メソッドは、引数が多すぎるのが難点ですね。
自動生成されたメソッドなのでしかたないですね。
この Sserviceクラスは単なるC#のクラスなわけですから、 このソースに手を加えても問題ありません。
使いにくかったら、使いやすくしてしまえばいい訳で、 引数の少ない Change, Createメソッドをオーバーロードすることができます。
あたりまえですね。
例えば、Createならば、こんな感じ。
Nmae には、サービス名
PathName には、実行ファイルのパス名
StartMode には、"Manual", "Automatic" とかを指定します。
C#4.0だったら、引数の省略機能を使う別のアプローチもできますね、
ところで、自動生成する引数の変数名がPascal形式なのは困ります...
MSのツールなんだから、MSの推奨である Camel形式に合わせて欲しいですね。
----------
Change と Create メソッドは、引数が多すぎるのが難点ですね。
自動生成されたメソッドなのでしかたないですね。
この Sserviceクラスは単なるC#のクラスなわけですから、 このソースに手を加えても問題ありません。
使いにくかったら、使いやすくしてしまえばいい訳で、 引数の少ない Change, Createメソッドをオーバーロードすることができます。
あたりまえですね。
例えば、Createならば、こんな感じ。
Nmae には、サービス名
PathName には、実行ファイルのパス名
StartMode には、"Manual", "Automatic" とかを指定します。
C#4.0だったら、引数の省略機能を使う別のアプローチもできますね、
ところで、自動生成する引数の変数名がPascal形式なのは困ります...
MSのツールなんだから、MSの推奨である Camel形式に合わせて欲しいですね。
2010年09月01日
疑似enumクラス
"あおおにさん"という方が、「疑似enumクラス+コードジェネレータ」を作成し、公開しています。
ソースコードは、「あおおにくんの納戸 」に公開されています。
随分前に、「enumの代わり」という記事で、enumのように使え、対応する日本語文字列も扱えるクラスについて
紹介しましたが、 嬉しいことに、"疑似enumクラス"は、この僕の記事に触発され、作成されたクラスのようです。
ちなみに、「enumの代わり」の記事は、今でも結構アクセスがあります。
なお、9月11日に大阪で開催される「わんくま勉強会」で、あおおにさんが、
この「疑似enumクラス+コードジェネレータ」について説明する予定だそうです。
僕のところに、
「登壇した際に、是非とも貴サイトがきっかけである旨等を話したいと思っているのです」
とメールが届きました。
発表の成功を祈っています。
ソースコードは、「あおおにくんの納戸 」に公開されています。
随分前に、「enumの代わり」という記事で、enumのように使え、対応する日本語文字列も扱えるクラスについて
紹介しましたが、 嬉しいことに、"疑似enumクラス"は、この僕の記事に触発され、作成されたクラスのようです。
ちなみに、「enumの代わり」の記事は、今でも結構アクセスがあります。
なお、9月11日に大阪で開催される「わんくま勉強会」で、あおおにさんが、
この「疑似enumクラス+コードジェネレータ」について説明する予定だそうです。
僕のところに、
「登壇した際に、是非とも貴サイトがきっかけである旨等を話したいと思っているのです」
とメールが届きました。
発表の成功を祈っています。
2010年08月29日
ToolTipで改行
久しぶりに ToolTipコントロールを使ったら、改行の方法が分からない。
multilineプロパティなんて無いし...
とおもったら、なんのことは無い、改行コードを入れれば良いだけだった.
以下、checkBox1にツールチップの表示を設定するC#のコード
この手のコードを書くと、\n だけで改行してくれればいいのにといつも思う。
もちろん、そのために Environment.NewLine があるのは分かっているけど...
とおもったら、なんのことは無い、改行コードを入れれば良いだけだった.
以下、checkBox1にツールチップの表示を設定するC#のコード
この手のコードを書くと、\n だけで改行してくれればいいのにといつも思う。
もちろん、そのために Environment.NewLine があるのは分かっているけど...
2010年08月23日
厳密型クラス ジェネレータ (Mgmtclassgen.exe)
最近になって、「厳密型クラス ジェネレータ (Mgmtclassgen.exe)」の存在を知りました。
これを使うと、WMIオブジェクトを操作するクラスを自動生成させることができます。
この存在を知らなかったので、今までは、System.Managemen 名前空間のクラスを いろいろいじって、WMIオブジェクトを操作していました。
MSDNのこちらのページに簡単な使い方が書いてあります。
方法 : 厳密に型指定されたオブジェクトを使用する
http://msdn.microsoft.com/ja-jp/library/ms257357.aspx
例えば、
とコマンドを打つと、c:\temp に、service.cs というC#のソースファイルが作成されます。
この中に、Win32_Service オブジェクトのラッパークラスである Serviceクラスが でできます。
この Service クラスを使うと、Windowsサービスの\情報を取得したり登録情報を変更したりができます。
WMIを直接呼び出すよりも、簡単ですね。
これは、便利です。
2010年08月22日
ThinkPad の熱対策
先週の日曜日のことですが、自宅のノートPC(ThibkPad T60)を使ってたら、突然動かなくなってしまいました。
マウスも動かないし、Ctrl+Alt+Delも効きません。
強制的に電源を落とし、再度起動すると、今度は、起動途中で電源が落ちてしまいます。
何回か繰り返し、やっと起動したと思ったら、今度は使っているうちに、突然、電源が落ちてしまいます。
とうとう壊れたのか!
やっと先月で、月賦が払い終わったと思ったのに...
修理に出すしかないのかな、とあきらめかけたのですが、本体の左側がやけに熱いのに気がつきました。
前から本体左側の熱さは気になっていたのですが、今までよりもさらに熱くなっているようです。
もしかして熱暴走なのかも、と思い、冷蔵庫から大きめの保冷剤を持ってきて、
PCの下に敷いて冷やしながらPCを起動すると、今度は無事起動しました。
しばらく使いましたが、途中で落ちることは有りませんでした。
でも、毎回保冷剤を下に敷いておくわけにもいかないし。。。
で、調べたら、
ThinkPad Fan ControllerというThinkPad専用のファン制御ソフトウェアがあるのを知りました。
温度とファンの回転数を設定できます。
さっそく、ダウンロードしてインストール。
バッテリーの持ちは悪くなるとは思いますが、今は、保冷剤を使わなくても、問題なく使えています。
冬は、ファンの回転数を落とし、静かにすることもできると思います。
参考URL ThinkPadの熱対策−TPFanControl
http://kazunoblog.com/2010/05/09_233120.php
マウスも動かないし、Ctrl+Alt+Delも効きません。
強制的に電源を落とし、再度起動すると、今度は、起動途中で電源が落ちてしまいます。
何回か繰り返し、やっと起動したと思ったら、今度は使っているうちに、突然、電源が落ちてしまいます。
とうとう壊れたのか!
やっと先月で、月賦が払い終わったと思ったのに...
修理に出すしかないのかな、とあきらめかけたのですが、本体の左側がやけに熱いのに気がつきました。
前から本体左側の熱さは気になっていたのですが、今までよりもさらに熱くなっているようです。
もしかして熱暴走なのかも、と思い、冷蔵庫から大きめの保冷剤を持ってきて、
PCの下に敷いて冷やしながらPCを起動すると、今度は無事起動しました。
しばらく使いましたが、途中で落ちることは有りませんでした。
でも、毎回保冷剤を下に敷いておくわけにもいかないし。。。
で、調べたら、
ThinkPad Fan ControllerというThinkPad専用のファン制御ソフトウェアがあるのを知りました。
温度とファンの回転数を設定できます。
さっそく、ダウンロードしてインストール。
バッテリーの持ちは悪くなるとは思いますが、今は、保冷剤を使わなくても、問題なく使えています。
冬は、ファンの回転数を落とし、静かにすることもできると思います。
参考URL ThinkPadの熱対策−TPFanControl
http://kazunoblog.com/2010/05/09_233120.php
2010年08月19日
ConnectionOptions の AuthenticationLevel プロパティ
リモートマシンから WMI サービスを使用し、IIS の情報を取得する C# のプログラムを書いたのだが、
アクセス拒否で、失敗してしまう。
原因が分からずしばらく悩みました。
ConnectionOptions の指定が悪かったようです。
以下のように、AuthenticationLevel.PacketPrivacy を指定する必要があるようです。
2010年08月17日
視覚障害者のためのPCサポートページ
もう、随分前になりますが、メールマガジン『C#プログラミングレッスン』の読者の方か ら、以下のようなメールをいただきました。
いつもC#メルマガを拝見させていただいています。
私は視覚障害なので一般書籍で勉強することが困難なため、このようなメルマガは
とてもありがたい存在です。
一般のビジュアルな開発環境も音声ではとても使いにくく、またDOS窓も音声では
使えませんので最初はとても苦労しましたが、インターネットで情報が得られるように
なって本当に助かっています。
これからもどうぞよろしくお願いします。
僕の書いたメールマガジンが、目の不自由な方にお役に立っているということを知り、とても嬉しく思いました。
きっと、僕には想像できないような努力をして、プログラミングの勉強をされているんだろうなと思い、逆に僕が励まされたことを覚えています。
その後、再度、この方とメールのやり取りをする機会があり、自身のホームページで、視覚障害者の方々の為のパソコン活用情報を発信されていらしゃることを知りました。
ということで、今日は、この方が開設しているWebサイトを紹介したいと思います。
西尾PCサポート http://www.nishio-pc.sakura.ne.jp/pc/
以下、西尾様ご自身による紹介文です。
西尾PCサポートホームページは、視覚障害者の方々のパソコン活用をサポートするた
めのページです。
同じWindowsというOSを使っていても画面を見ながら操作するのと音声を聞きながら操
作するのでは、その方法に大きな違いがあります。
とくにパソコン初心者の視覚障害者にとって基本的な操作はもとより、パソコンの全体
的な知識の習得はとても重要です。
一般の方々に対し、視覚障害者がパソコンをどのように活用しているかを知らせる活動
をしています。
特に Web製作/アプリケーション開発者の方々に対しては “見たらわかるでしょ”的な
画像偏重の傾向に対して警鐘を鳴らしてゆくことや、一般用に開発されたプログラムでも、
ちょっと工夫したりほんの一部修正するだけで視覚障害者も使えるようになることなども
広く知らせていきたいと考えています。
このページは、私たち開発者にとっても、得るものがあると思います。
2010年08月08日
WNetAddConnection2W
ちょっとした興味から、ネットワークドライブ接続で利用しているAPIを
WNetAddConnection2A からWNetAddConnection2W に変更しようとしたが、 どうもうまくいかない。
ネットで検索しても、WNetAddConnection2A のコードばかり。
結局、WNetAddConnection2の引数である NETRESOURCE 構造体の定義で
と、CharSetに CharSet.UniCOde を設定すれば大丈夫だった。
の定義にばかり目がいってしまい、構造体の定義に問題があるとは 思わなかった。
2010年08月03日
ForEach拡張メソッド
元ネタ: 何周目?(R.Tanaka.Ichiro's Blog)
http://blogs.wankuma.com/rti/archive/2010/07/27/191691.aspx
こんな拡張メソッド書けば、もっと楽になります。
呼び出し側のコードです。
標準のコードと上記拡張メソッドを使ったコードを比較してみました。
標準として用意されてほしかったですね。
こういったクラスを集めてライブラリにしても、
いちいち参照設定するのが面倒だし、コードをblogに公開するときにも使えないし... 不便です。
http://blogs.wankuma.com/rti/archive/2010/07/27/191691.aspx
こんな拡張メソッド書けば、もっと楽になります。
呼び出し側のコードです。
標準のコードと上記拡張メソッドを使ったコードを比較してみました。
標準として用意されてほしかったですね。
こういったクラスを集めてライブラリにしても、
いちいち参照設定するのが面倒だし、コードをblogに公開するときにも使えないし... 不便です。
2010年08月01日
電子書籍 ePubファイルを作ってみた
電子書籍ファイルフォーマット規格の一つであるePubファイルを作って、iPod Touch の iBooksで表示してみました。
テキストは「C#プログラミングレッスン」の記念すべき創刊号です。
電子書籍制作ソフトウェアFUSEe(フュージー)という無償で公開されているソフトウェアを使ったあと、 Sigil というソフトを使いました。どちらか片方だけでも ePubは作成できます。ちょっと使った感じでは、Sigil の方が機能が豊富ですね。
ePubって、そのベースとなっているのは、XHTML+CSSのファイルなんですね。IT技術者にとっては、ゼロから学ぶ必要がないってのは良いです。
横向きにするとこんな感じ。
目次もあります。
試しに知人のiPadでも表示してもらいましたが、画面が広いので本格的な雰囲気で良かったです。
このePubファイルは、SkyDriveにアップしておきましたので、興味あるかたはどうぞ。
拡張子を zip にして解凍すれば、中身(XHTML, CSSなど)を見られます。

