‘.Net Framework’ カテゴリーのアーカイブ

VSTO セットアッププログラムからインストールしたAddinのApp.configが読み込まれない場合

2012年5月7日 月曜日

Visual Studio 2010 sp1の場合、セットアップファイル設定時にレジストリのキー

Software\Microsoft\Office\Outlook\Addins\[Addinの名前]
下にあるManifestの値を確認し、

TARGETDIR]MSSCP.InfoProtect.MailChecker2010.vsto|vstolocal

だった場合は「file:///」を追加し、

file:///[TARGETDIR]MSSCP.InfoProtect.MailChecker2010.vsto|vstolocal

に変更する。

CanExecuteのTrue,Falseを変更してもコマンド実行の可否がGUIに反映されない場合には

2011年4月12日 火曜日

CommandManager.InvalidateRequerySuggested();
を実行して、RequerySuggestedイベントを強制的に発生させてCanExecuteが実行されるようにできる。

UIスレッドと別スレッドから呼び出すときはDispatcher.Invoke()やDispatcher.BeginInvokeのデリゲートから呼び出す。

WebRequestの最大接続数を設定ファイルで変更するには

2011年4月9日 土曜日

WebRequestの最大同時接続数を変更するにはでプログラムから変更する方法をメモしたが、設定ファイルでも変更する方法は以下。

app.configに下記の設定を追加する。

<system.net>
   <connectionManagement>
      <add address=”*” maxconnection=”20″/>
   </connectionManagement>
</system.net>

WebRequestの最大同時接続数を変更するには

2011年4月5日 火曜日

WebRequest クラスの最大同時接続数のデフォルト値は2のため、
複数のサイトに動じアクセスする場合は変更する必要がある。

変更するには
System.Net.ServicePointManager.DefaultConnectionLimit
プロパティに設定を行えばよい。

Windows FormのWebBrowserコントロール内のページに動的にJavaScriptを追加するには

2010年10月29日 金曜日

下記のように外部スクリプトとして追加することで実行できるようになった。

var webBrowser = new WebBrowser();
HtmlElement scriptElem= webBrowser.Document.CreateElement(“Script”);
scriptElem.SetAttribute(“type”, “text/javascript”);
scriptElem.SetAttribute(“src”, http://localhost/script.js);

<Script>タグ内へinnerHtml, innerTextを使ってコードを追加できなかった。また、srcの参照先を”file:///“で始まるものにすると、実行時にエラーとなる。javascriptの関数を実行するには

object obj = webBrowser.Document.InvokeScript(“functionname”);

と記述する。第2パラメータにobjectの配列を渡すことで引数を指定することが可能。

.Net FrameworkのUriエンコードメソッドの違い

2010年7月16日 金曜日

.Net FrameworkにはUriエンコードに使うメソッドがいくつかあるが、違いを調べてみた。

Uri.EscapeDataString(str)
RFC2396準拠。16進数は大文字になる。
Uri.EscapeUriString(str)
EscapeDataStringよりエンコードしない記号が増える。「&+,/:;=?」
16進数は大文字。
Url全体をまるごと処理することを想定?
HttpUtility.UrlEncode(str)
EscapeDataStringと違うのは、空白を%20でなく「+」に変える。
「~」を%7eに変える。「’」を%27に変える。
16進数は小文字。
application/x-www-form-urlencodedに使うことを想定?

Uriクラスのメソッドは、国際化リソース識別子 (IRI) または国際化ドメイン名 (IDN) 解析を有効に設定するとRFC3986準拠になるようだが、システム全体が変わってしまうようなので、個別にやるにはRFC3986で増える予約記号「!’*()」を後から置換するのが現実的かも。

WPFで長時間かかる処理の間にUIのイベントを処理させるには

2010年7月11日 日曜日

WPFでWindows FormのApplication.DoEventsメソッドと同様に長時間かかる処理の間にUIのイベントを処理させるには、下記のように行う。(MSDNより)

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public void DoEvents()
{
    DispatcherFrame frame = new DispatcherFrame();
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
        new DispatcherOperationCallback(ExitFrame), frame);
    Dispatcher.PushFrame(frame);
}

public object ExitFrame(object f)
{
    ((DispatcherFrame)f).Continue = false;

    return null;
}