0 comments
0 trackbacks

.NET による Outlook アイテムおよび Outlook フォルダの参照に使用できるメソッドについて、ちょっとだけメモです。
①まずはappを連携。
Outlook._Application olApp = new Outlook.ApplicationClass();
try{
 // 実処理
 }catch{
  
}finaly{
  olAppがnull以外なら開放処理。

②Namespaceの取得
これも①と同じような処理で確実にメモリを開放できるようにするとよい
 Outlook._NameSpace olNS = olApp.GetNamespace("MAPI");
ここでは書くのは省略。

その他も省略ですが,ほぼ同じように毎回メモリを開放させてあげるとよいです!

■.netのCOMはなかなかメモリがいろいろなので,最後にはがーべじコレクションを行ってあげます。
GC.collect();
GC.WaitForPendingFinalizers(); //参照のみしか消えてないかもしれないので
GC.collect();            //さらにGCを行う

今回はこんな感じで。
あとはEntryIDやらを指定したり,することで,メールの移動だったり,フォルダの操作だったりを.NETが行ってくれます

それではー(*´-`*)ノ

 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
1 trackbacks

■TraceクラスのWriteメソッドでログファイルを出力すしていきたい。
①using System.Diagnostics;を追加

//DefaultTraceListenerオブジェクトを取得
DefaultTraceListener drl;
drl = (DefaultTraceListener) Trace.Listeners["Default"];
//LogFileNameを変更する
drl.LogFileName = "C:\\log\\1.txt";

もう少し凝ったログ出力方法。
■“日付_連番.log”形式でログファイルを出力する。

簡単なやり方なので,自分でトレースしたいときに使うくらいかと思います。

var dailyLogging = new DailyLoggingTraceListener()
{
OutputDirectory = Application.StartupPath + @"\log\", // 既定値 Application.StartupPath
FileNameFormat = "{0:yyyyMMdd}_{1}.log", // 既定値 {0:yyyyMMdd}_{1}.txt
DatetimeFormat = "{0:MM/dd HH:mm}", // 既定値 {0:MM/dd HH:mm:ss}
};
Trace.Listeners.Add(dailyLogging);
Trace.Listeners.Add(new TextBoxTraceListener(textBox1));
●Application.StartupPath で実行ファイルのあるフォルダに log フォルダを指定しています。
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
0 trackbacks

最近自動テストについてちょっと調査を行っています。

Jenkinsを使って自動でビルドから単体テストまで行ってみようというものです。

主な流れとしては
①GITやSubversionを使用してソースのバージョン管理等を行う。

②リポジトリにコミットを行なうタイミングでJenkinsに通知を行う。

③Jenkinsからソースのビルド,単体テストを行う。
といった流れで行いたいです。

■Jenkinsとは
Jenkinsとは継続的インテグレーション(CI:Continuous Integration)をサポートするツールのこと。

Jenkins はこちらのサイトから入手します。
Jenkins公式サイト

公式サイトからダウンロード・インストールを行います。
JenkinsはWebアプリケーションなので,Webブラウザから ”http://localhost:8080” にアクセスすることで起動を確認できます。

●Jenkinsの導入方法1
・Jenkinsの公式サイトから”Latest and greatest” というリンクからWarファイルを入手。
任意の場所に格納し,コマンド

を実行することで起動。コマンド時にはwarファイルを絶対パスで指定するか,cdコマンドでディレクトリに移動しておくこと。

●Jenkinsの導入方法2
・”native package”から自分のOSのパッケージファイルを入手し,インストールする。

●Jenkinsのポート変更。
Jenkinsはデフォルトで 8080 のポートを使用します。別ポートを使用したい場合は下記により設定を行う。
 ・コマンド実行時のポート指定(java -jar jenkins.war –httpPort=《任意のポート》)で変更。
 ・パッケージファイルではインストールディレクトリは配下の「jenkins.xml」ファイルの–httpPort=8080を–httpPort=8081に変更
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
0 trackbacks

C#でキー押下時のイベントについて,Ctrl+Aでリストボックスの内容を全選択してみたいです(*´-`*)ノ

■まずはキーを押した時にイベントを起こしたいです

コントロールにKeyDownというイベントとPreviewKeyDownというイベントがあります。

キーダウン時のイベントはこの2つのようです。

キーが押下されると,そのときフォーカスれていたコントロールを格納しているコントロールが,より親のコントロールから順にキーイベントを発生してきますが,今回はリストボックスのみに焦点をおいてみました。

なので使うイベントはPrebirewKeyDownイベントにします。

■次にリストボックスを全選択していきます

SelectAll関数という便利なものがありませんでした。



■方法1~3について
方法1,2は数が多いと時間がかかってしまいます。
その上ちょっと不格好な処理になってしまいます。

そのため方法3が一番見た目的によかったです。

手動のそうさ「一番上の項目をクリック,その後Shiftを押しながら一番下の項目をクリック」を再現しています。
キーストロークを送信するSendKeysクラスを使用し,一番上をクリックはHomeキーで代用し,一番下をクリックはEndキーで代用してみました。

■PrevirewKeyDownとKeyDownの違いについて
・PrevirewKeyDownでは、IMEがOnの状態で押されたキーも確認できます。

ちなみにWindowフォーム→リストボックスの順にキーダウンのイベントは発生します。
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
0 trackbacks

前に少しだけやっていたVBAについて覚書です
使うのは下記の2つのどちらかの関数です。

・StrComp 関数
・InStr 関数


どちらかというとStrComp 関数の方が使い勝手が良いと思うのが個人的な感想です

■StrComp 関数
構文:
StrComp(string1, string2[, compare])

string1:
 必ず指定。検索対象の文字列を指定します。
string2:
 必ず指定。検索する文字列を指定します。
compare:
 省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。
引数 compare を省略すると、バイナリ モードで比較。
0:バイナリモード,1:テキストモード

戻り値:
-1:一致なし
0:完全一致
1:文字列が含まれる

例:StrComp("ABCDE","AB")
戻り値は1となります

StrComp("ABCDE","ABCDE")
戻り値は0となります

■InStr 関数
構文:
InStr([start, ]string1, string2[, compare])

string1:
 必ず指定。検索対象の文字列を指定します。
string2:
 必ず指定。検索する文字列を指定します。
compare:
 省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。
引数 compare を省略すると、バイナリ モードで比較。
0:バイナリモード,1:テキストモード

戻り値:
一致あり:文字列が見つかった位置を返します。
一致なし:0

例:
InStr("ABCDE","D")
戻り値は4となります

その他にも値がNULLの場合についてなどもありますが,そこは割愛します
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓