.NET

.NET のクラスライブラリが同じパスに存在する別の DLL を動的にロードするには

動的に別のDLLをロードするときのメモ。 System.Reflection.Assembly.GetExecutingAssembly().CodeBase で自身のパスが取れる。 file:\ が先頭に付くときがあるため取り除いている。 string selfDirPath = System.IO.Path.GetDirectoryName(System.Reflectio…

Silverlight 4 RC の COM 機能を使って Excel に twitter 検索結果を流し込む

Silverlight 4 から Out of Browser でCOMオートメーション機能が使えるようになった。これにより Excel などの外部アプリケーションを直接呼び出し操作できるようになりました。 Silverlight 4 の出荷候補版も出たので試しに COM による Excel 連携機能を実…

Visual Studio 2010 RC に Silverlight 4 Tools for Visual Studio 2010 Beta 2 を無理やり適用インストールするには

Visual Studio 2010 RC 対応版が出たので、もう下記のハックは不要です。 Microsoft Silverlight 4 Tools for Visual Studio 2010 RCMicrosoft Download Center Visual Studio 2010 RC が出て半月は経ちますが、Silverlight 4 Tools for Visual Studio 2010 …

圧縮パスワード付き ZIP ファイルを生成できる DotNetZip ライブラリを C# で試してみた

DotNetZip Library - Home DotNetZip は Microsoft Public License の ZIP ライブラリ プロジェクト。 試しに C# からコマンドラインでパスワード付きZIPを作成するサンプルプログラムを書いてみた。 using System; using System.IO; using Ionic.Utils.Zip;…

.NET / WebBrowser コントロールで Java アプレットを起動するとデータ実行防止(DEP)で落ちるとき

Windows Vista や Windows XP SP2 で DEP がオンになっているとき、Javaアプレットをカスタム WebBrowser で実行すると AccessViolationException で落ちてしまう。実行時にはデータ実行防止(DEP)が働いたといわれる。 そんなときは、Visual Studio 2008 で…

ウイルスバスター2008がAutoComplete機能を不審な変更とみなす

前々から気づいていたのだが書いておく。.NET Framework 2.0 から TextBox などにファイルや URL の自動補完機能が付けられるようになった。テキストボックスでオートコンプリート機能を使用するには?[2.0のみ、C#、VB] − @ITこれを有効にしている(実際…

C# でバイト配列と16進数文字列を相互変換するには

.NET にバイト配列を16進数文字列にエンコード/デコードする方法が用意されていなかったので、自作した。(Base64 なら Convert にある。) 文字列への変換は、BitConverter.ToString に Replace("-", String.Empty) とすることでもできなくはなさそうだが…

TypeInitializationException

ブレイクされる行がクラスのコンストラクト時であるためわかりずらいが、静的なコンストラクタが存在しその中で例外が起きてキャッチされなかったときに起こる。 class Nantoka { static Nantoka() { using (StreamReader sr = new StreamReader("D:\test.lo…

VS.NET のセットアップ プロジェクトでショートカット作成をユーザーに選択させるには

スタートアップに登録するかどうかなどをインストール時に選択できるようにしたい。ユーザーインターフェイスエディタでチェックボックス ダイアログを追加すれば簡単にできそうだった。しかし、ショートカットには condition プロパティがないので条件を付…

.NET で MSHTML をロードすると、IEコンポーネントで動作しない機能がある

.NET 2.0 で tlbimp した MSHTML.dll をロードすると、IEコンポーネントの印刷(プレビュー)機能や、IShellUIHelper.ShowBrowserUI の「お気に入りの整理」などが使用できなくなる。 解決 単に COM 参照で、 Microsoft HTML Object Library を追加したら動…

ShellUIHelper

IE7 では、ShellUIHelper に検索プロバイダの登録機能などを定義している IShellUIHelper2 が追加実装されているので SHDocVw が次のようになる。Guid は A7FE6EDA-1932-4281-B881-87B31B8BC52C である。 using System.Runtime.InteropServices; namespace S…

IDocHostUIHandler

.NET 2.0 になり、アンマネージドとの相互変換時の変数型の定義を明確にしないと、InvalidVariant MDA メッセージが投げられるようになった。動作確認した定義は以下の通り。 using System; using System.Runtime.InteropServices; using MSHTML; namespace …

Internet Explorer のバージョンを取得する

他にも方法はあるだろうがレジストリから取得するのが一番良さそう。 文字列でIEのバージョンを返す。エントリがなく取得に失敗したら null を返す。 public static string getInternetExplorerVersion() { string rKeyName = @"SOFTWARE\Microsoft\Internet…

ファイルパスの結合

ディレクトリパスをファイル名の結合をするときに、/ \ といった区切り文字を気にしないで行いたい。.NET では、Path という便利なクラスが用意されているが、Java ではそのようなユーティリティクラスはない。File のコンストラクタがその役目を担ってくれ…

メールのDateフィールド値をDateTimeに変換

下記のような、メールヘッダのDate値を変換する。 Date: Sun, 02 Jul 2006 19:45:13 +0100 CultureInfoを en-US にしないと、曜日、月の省略語を正しく認識できない。 // 変換に失敗すると FormatException を投げる。 public static DateTime ParseMailDate…

IEコンポーネント使用時の問題

Windows XP SP2 - .NET 2.0 で SHDocVW の IWebBrowser などを取得したときの問題。それ以降にIEコンポーネントでファイルが開けずに、すべてダウンロードダイアログがポップアップしてしまう。IE6 SP1, IE7では起きない。

.NET 1.1 で COM ポイントに接続

private struct WindowData { public System.Windows.Forms.HtmlDocument document; public IConnectionPoint icpWin; public int cookieWin; public IConnectionPoint icpDoc; public int cookieDoc; } private WindowData setWindowComConnect(object pDis…

WebBrowser

.NET 2.0 で標準追加されたブラウザコントロール。 Navigation イベント BeforeNavigate2 イベントの代わり、ただ PostData などが取得できなくなっている。 バグ WebBrowser.WebBrowserSite クラスを使って、IDocHostUIHandler を実装できるとあるが、 実装…

HtmlDocument

.NET 2.0 で追加された。「HtmlDocument は、Internet Explorer の DHTML DOM で実装されるアンマネージ インターフェイス (IHTMLDocument、IHTMLDocument2、IHTMLDocument3、および IHTMLDocument4) に基づいています。これらのアンマネージ インターフェイ…

WSDLからのサービスクラス生成

@Set Path=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin;%PATH% cd .\ wsdl http://server/mediawiki/extensions/AddPageService.php?wsdl これで、AddPageServiceService.cs が生成される(Serviceが追加されるので繰り返しになっている)。か…

ActiveX のラッパーを厳密な名前で署名して生成

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin をパスに通しておく。 下記の SHDocVw.dll の場合、AxSHDocVw.dll, SHDocVw.dll > sn -k shdocvw.snk > aximp /keyfile:shdocvw.snk %WINDIR%\system32\shdocvw.dll

.NET 2.0 での変更点

COMType WebProxy XmlReaderSettings Invoke のコンパイルチェックが厳格に 2.0は無名メソッドが可能なので内部定義。下記はツリーノードを別スレッドから削除している。 Control.Invoke では、System.Delegate の MethodInvoker にキャストしてやる。 if (n…

.NET 1.1 でインストーラでCLRからネイティブにコードをコンパイル

カスタム動作でngenを呼び出す。インストーラクラスを作成し下記を定義する。 public override void Install(IDictionary stateSaver) { base.Install (stateSaver); doNgen(getArgument(), false); } public override void Uninstall(IDictionary savedStat…

DrawImage で拡大されてしまう。(.NET 1.1)

ある画像だけ。形式がPNG, BMPだとおきる。GIFでは起きない。パレットとかのせい?不明…