夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ジェネリックスなEnumのユーティリティ

C#(.NET Framework)ではSystem.Enumに列挙体を操作するツールがいくつかあります。
System.Enum クラス

さて、その中の多くのメソッドがTypeを引数にとります。
これは実はジェネリックスを使えばもっとわかりやすく、簡単にかけそうなものばかりです。
しかし、実際によくよく調べてみると、そうでもなかったりします・・・

続きを読む »

スポンサーサイト

VisualStudioの3種類の改行


少し前に気づいたんですが、VisualStudioには改行の方法が3種類あります。

[Enter]

いつも通り、普通の改行です。([Shift]+[Enter]も同じ)


[Ctrl]+[Enter]

カーソルの上に空白行を挿入します。


[Shift]+[Ctrl]+[Enter]

カーソルの下に空白行を挿入します。



非常に地味ですが、意外と便利です。
Vimとかだとこういうのを探しますが、意外とVisualStudioだと探さないものです。
高度な開発環境なだけあって、思っているより結構いろいろな機能があります。

また、日頃よく使う機能にはショートカットが割り当てられているものが多いです。
標準のショートカットキーの一覧はMSDNに乗っています。
定義済みショートカット キー - MSDN
もちろん、カスタマイズで変更することも可能です。
いうまでもなく、すべてを暗記することは人間業ではありませんが、コメント化やエラー一覧の表示などなど、よく使う機能をできるだけキーボードから手を離さなくてよくすることで地味に効率化を図れると思います。

せっかくなのでぜひとも高機能なIDEを使いこなしたいものです

Windows7とC#でコモンダイアログを簡単に拡張する

ソフトなどを作っていると、ファイルを開くダイアログや保存ダイアログに独自の機能をくっつけたくなる場合がよくあります。
身近なところではメモ帳あたりです。

文字コードが選択できるようになっています。

しかし、同じことをC#でやろうとするとかなりの苦労を強いられます。
標準の機能は基本的に助けてくれないので、ほぼすべてをAPIを叩いて行うことになります。
その際にはフックやらダイアログテンプレートやらC#ではなかなかなじめない方々がずらっと揃い、C/C++でだいぶWinAPIに慣れている人でないと完成にはいたらないでしょう。
(かくいう私もWinAPI、とくにShellやダイアログの方面にはうといのでたぶん作れません。勉強したい。)

そこで使えるのがWindows API CodePackです。
これはWindows7のタスクバー、ジャンプリスト、その他もろもろをC#やVB.NETから操作できるようにするためのライブラリです。
マイクロソフトが無料で配っています。

残念ながらWindows7以降のみ対応ということになっています。XPの買い替えが進むことを期待したいですが、XPではどうにか代替機能を考えておきましょう・・・

続きを読む »

エクスプローラ(Explorer.EXE)で開いているフォルダのパスを取得する


画像は私が現在使っているX-Finderというファイラーです。(X-Finderについて詳しくは公式サイトをご覧ください)
大変高機能でカスタマイズを仕切れていませんが、そのメニューに「エクスプローラの取り込み」や「他のウインドウのパス」といった項目が存在します。
その名の通り、エクスプローラで開いているパスを取得することができます。

それをC#でやってみます。

今回はdynamicやDllImportは使わずにやります。

続きを読む »

ShellClass shell = new ShellClass();がコンパイルエラーになるので調べてみた

追記有 2013/3/16

C#でCOMのShell系の機能をを利用するさいにMicrosoft Shell Controls And AutomationをCOM参照に追加し、
ShellClass shell = new ShelClass();

のようにしてShellClassのインスタンスを作っていろいろとやるサンプルをよく見かけます。
また、自分もXP/VisualStudio2008でそうやっていました。
しかし、Windows7/VisualStudio2010に乗り換えたところ、ビルドが通らなくなりました。
XPの仮想マシンでVS2010を入れてみたところ、やはりビルドが通らなかったのでVisual Studio2010からかわったのかなーとおもいます。

たとえばこんなエラーです。
エラー 1 相互運用型 'Shell32.ShellClass' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。
エラー 2 型 'Shell32.ShellClass' のコンストラクターが定義されていません。
エラー 3 相互運用型 'Shell32.ShellClass' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。

エラー一覧


自分はCOMに詳しくなくてこまりながらいろいろやっていたところ、どうやらShellというのが全く同じように使えるようです。
Shell shell = new Shell();

これでめでたしです。
しかし、VisualStudio2008とは違うコードになっており、本当にほかのOSで動くか不安だったので、もうすこし調べてみました。

続きを読む »

ホーム  次のページ »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。