<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>オレSE</title>
  <link>https://engineer.gjpw.net/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://engineer.gjpw.net/RSS/" />
  <description>2009/12/12作成</description>
  <lastBuildDate>Thu, 27 Jun 2013 14:09:23 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>MQサーバーとの疎通サンプル作成手順</title>
    <description>
    <![CDATA[○前提<br />
準備として、下のいずれかのユーザーを用意する。<br />
①グループ「mqm」に所属するユーザー<br />
②グループ「Administrators」に所属するローカルユーザー<br />
<br />
ActiveDirectoryで管理されているドメインユーザーの場合、<br />
①のユーザーを使用するには、ドメインユーザーの設定を修正する必要がある。<br />
ただしActiveDirectoryを導入しているのは、規模の大きな会社なので、<br />
変更するための承認フローが存在するはず。<br />
承認には運用上の理由が必要となり、「開発のため」という理由では承認が下りる可能性が低い。<br />
<br />
ということで、②のユーザーを想定した手順とする。<br />
<br />
○MQの準備<br />
MQエクスプローラーを「②のローカルユーザー」で起動する。<br />
「ヘルプメニュー」＞「ヘルプ目次」をクリックする。<br />
「WebSphere MQチュートリアル」＞「ローカル・キューにメッセージを送信する」の作業を行う。<br />
<br />
○サンプルプログラムの作成<br />
Visual Studioを「②のローカルユーザー」で起動する。<br />
コンソールアプリケーションのプロジェクトを作成する。<br />
以下のソースを貼り付けて実行する。<div class="content"><br />
Imports&nbsp;IBM.WMQ<br />
Imports&nbsp;System.Text<br />
<br />
Module&nbsp;Module1<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;HOST_NAME&nbsp;As&nbsp;String&nbsp;=&nbsp;"localhost"<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;PORT&nbsp;As&nbsp;Integer=&nbsp;1414<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;QUEUE_MANAGER_NAME&nbsp;=&nbsp;"QM_APPLE"<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;CHANNEL_NAME&nbsp;=&nbsp;"QM_ORANGE.QM_APPLE"<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;QUEUE_NAME&nbsp;=&nbsp;"Q1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;Const&nbsp;MESSAGE&nbsp;=&nbsp;"Hello&nbsp;World."<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Sub&nbsp;Main()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;キューへの接続情報<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;properties&nbsp;As&nbsp;New&nbsp;Hashtable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;properties.Add(MQC.HOST_NAME_PROPERTY,&nbsp;HOST_NAME)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;properties.Add(MQC.PORT_PROPERTY,&nbsp;PORT)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;properties.Add(MQC.CHANNEL_PROPERTY,&nbsp;CHANNEL_NAME)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;qMan&nbsp;=&nbsp;New&nbsp;MQQueueManager(QUEUE_MANAGER_NAME)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;openOptions&nbsp;As&nbsp;Integer&nbsp;=&nbsp;MQC.MQOO_INPUT_AS_Q_DEF&nbsp;+&nbsp;MQC.MQOO_OUTPUT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;queue&nbsp;=&nbsp;qMan.AccessQueue(QUEUE_NAME,&nbsp;openOptions)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;送信処理<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;sendMessage&nbsp;=&nbsp;Encoding.UTF8.GetBytes(MESSAGE&nbsp;&amp;&nbsp;Date.Now.ToString())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;sendMQMessage&nbsp;As&nbsp;MQMessage&nbsp;=&nbsp;New&nbsp;MQMessage()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendMQMessage.Write(sendMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue.Put(sendMQMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;受信処理<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;receiveMQMessage&nbsp;As&nbsp;MQMessage&nbsp;=&nbsp;New&nbsp;MQMessage()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue.Get(receiveMQMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;receiveMessage&nbsp;=&nbsp;Encoding.UTF8.GetString(receiveMQMessage.ReadBytes(receiveMQMessage.MessageLength))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(receiveMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Catch&nbsp;e&nbsp;As&nbsp;Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Do&nbsp;something<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Try<br />
&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br />
End&nbsp;Module<br />
<br />
</div>]]>
    </description>
    <category>WebSphere MQ</category>
    <link>https://engineer.gjpw.net/websphere%20mq/mq%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A8%E3%81%AE%E7%96%8E%E9%80%9A%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E4%BD%9C%E6%88%90%E6%89%8B%E9%A0%86</link>
    <pubDate>Thu, 27 Jun 2013 14:09:23 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/31</guid>
  </item>
    <item>
    <title>BCPコマンド</title>
    <description>
    <![CDATA[SQLServerのデータをインポート、エクスポートをしたい！って時にBCPコマンドを使います。<br />
いつもコマンドを作る度に調べていては大変ってことで、コマンド生成ツールを作成。<br />
<a href="//engineer.gjpw.net/File/bcp.zip" target="_blank">ダウンロード</a>]]>
    </description>
    <category>SQLServer</category>
    <link>https://engineer.gjpw.net/sqlserver/bcp%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89</link>
    <pubDate>Thu, 27 Jun 2013 11:38:38 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/30</guid>
  </item>
    <item>
    <title>コマンドプロンプトのFOR</title>
    <description>
    <![CDATA[<div class="content"><br />
@ECHO&nbsp;OFF<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のファイル名（拡張子あり）を全て列挙する<br />
ECHO&nbsp;FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nxA<br />
FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nxA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のファイル名（拡張子なし）を全て列挙する<br />
ECHO&nbsp;FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nA<br />
FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のファイルパスを全て列挙する<br />
ECHO&nbsp;FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
FOR&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のディレクトリ名を全て列挙する<br />
ECHO&nbsp;FOR&nbsp;/D&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%A<br />
FOR&nbsp;/D&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%A<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のディレクトリパスを全て列挙する<br />
ECHO&nbsp;FOR&nbsp;/D&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
FOR&nbsp;/D&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ配下のファイル名（拡張子あり）を全て列挙する<br />
ECHO&nbsp;FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nxA<br />
FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nxA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ配下のファイル名（拡張子なし）を全て列挙する<br />
ECHO&nbsp;FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nA<br />
FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~nA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ配下のファイルパスを全て列挙する<br />
ECHO&nbsp;FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
FOR&nbsp;/R&nbsp;%%A&nbsp;IN&nbsp;(*)&nbsp;DO&nbsp;ECHO&nbsp;%%~fA<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;カレントディレクトリ直下のconfig.txtファイルの内容を抽出する<br />
ECHO&nbsp;&nbsp;&nbsp;#で始まる行をコメント行とする<br />
ECHO&nbsp;&nbsp;&nbsp;「,」、「半角スペース」を区切り文字とする<br />
ECHO&nbsp;&nbsp;&nbsp;%%Aには2盤目のトークンが設定される<br />
ECHO&nbsp;&nbsp;&nbsp;%%Bには3盤目のトークンが設定される<br />
ECHO&nbsp;&nbsp;&nbsp;%%Cには3盤目のトークン以降の文字列が区切られずに設定される<br />
ECHO&nbsp;%~dp0config.txtの内容<br />
ECHO&nbsp;==<br />
type&nbsp;config.txt<br />
ECHO.<br />
ECHO&nbsp;==<br />
ECHO&nbsp;FOR&nbsp;/F&nbsp;"eol=#&nbsp;tokens=2,3*&nbsp;delims=,&nbsp;"&nbsp;%%A&nbsp;IN&nbsp;(config.txt)&nbsp;DO&nbsp;ECHO&nbsp;(1)=[%%A]&nbsp;(2)=[%%B]&nbsp;(3)=[%%C]<br />
FOR&nbsp;/F&nbsp;"eol=#&nbsp;tokens=2,3*&nbsp;delims=,&nbsp;"&nbsp;%%A&nbsp;IN&nbsp;(config.txt)&nbsp;DO&nbsp;ECHO&nbsp;(1)=[%%A]&nbsp;(2)=[%%B]&nbsp;(3)=[%%C]<br />
ECHO.<br />
ECHO.<br />
<br />
ECHO&nbsp;コマンドの結果を入力値として使用する<br />
ECHO&nbsp;&nbsp;&nbsp;usebackqオプションを設定し、一重引用符で囲むことでコマンド実行を有効にする<br />
ECHO&nbsp;&nbsp;&nbsp;DIRコマンドは以下のオプションを設定している<br />
ECHO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/b：ファイル名のみ表示する<br />
ECHO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/a：ディレクトリ、システムファイルを除外する<br />
ECHO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/o：名前で昇順ソートする<br />
ECHO&nbsp;FOR&nbsp;/F&nbsp;"usebackq"&nbsp;%%A&nbsp;IN&nbsp;(`DIR&nbsp;".\Root\Temp"&nbsp;/b&nbsp;/a:-d-s&nbsp;/o:n`)&nbsp;DO&nbsp;ECHO&nbsp;%%A<br />
FOR&nbsp;/F&nbsp;"usebackq"&nbsp;%%A&nbsp;IN&nbsp;(`DIR&nbsp;".\Root\Temp"&nbsp;/b&nbsp;/a:-d-s&nbsp;/o:n`)&nbsp;DO&nbsp;ECHO&nbsp;%%A<br />
ECHO.<br />
ECHO.<br />
<br />
PAUSE<br />
</div><br />
<br />
ファイルは<a href="//engineer.gjpw.net/File/bat.zip" alt="">こちら</a><br />
<br />
]]>
    </description>
    <category>バッチファイル</category>
    <link>https://engineer.gjpw.net/%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%AEfor</link>
    <pubDate>Wed, 19 Jun 2013 12:55:20 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/29</guid>
  </item>
    <item>
    <title>[サクラエディタ]行削除マクロ</title>
    <description>
    <![CDATA[メニューウィンドウ<br />
<img src="//engineer.gjpw.net/File/prompt1.png" alt="" /><br />
<br />
置換文字列入力ウィンドウ<br />
<img src="//engineer.gjpw.net/File/prompt2.png" alt="" /><br />
<br />
拡張子が.vbsのファイルに、以下のソースコードを保存する<br />
<div class="content"><br />
'&nbsp;マクロの中断処理ができないため、サブルーチン化で対処<br />
main()<br />
<br />
sub&nbsp;main()<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;shell&nbsp;=&nbsp;CreateObject("WScript.Shell")<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;メニュー情報<br />
&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;REPLACE_SYMBOL&nbsp;=&nbsp;"REPLACE_SYMBOL"<br />
&nbsp;&nbsp;&nbsp;&nbsp;dim&nbsp;menu(7,&nbsp;2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(1,&nbsp;1)&nbsp;=&nbsp;"指定文字列を含む行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(1,&nbsp;2)&nbsp;=&nbsp;".*"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;".*(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(2,&nbsp;1)&nbsp;=&nbsp;"指定文字列を含まない行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(2,&nbsp;2)&nbsp;=&nbsp;"^(?!.*"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;").*(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(3,&nbsp;1)&nbsp;=&nbsp;"指定文字列で始まる行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(3,&nbsp;2)&nbsp;=&nbsp;"^"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;".*(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(4,&nbsp;1)&nbsp;=&nbsp;"指定文字列で始まらない行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(4,&nbsp;2)&nbsp;=&nbsp;"^(?!"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;").*(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(5,&nbsp;1)&nbsp;=&nbsp;"指定文字列で終わる行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(5,&nbsp;2)&nbsp;=&nbsp;".*"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;"$(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(6,&nbsp;1)&nbsp;=&nbsp;"指定文字列で終わらない行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(6,&nbsp;2)&nbsp;=&nbsp;"^(?!.*"&nbsp;&&nbsp;REPLACE_SYMBOL&nbsp;&&nbsp;"$).*(\r\n|\n|.*)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(7,&nbsp;1)&nbsp;=&nbsp;"空行"<br />
&nbsp;&nbsp;&nbsp;&nbsp;menu(7,&nbsp;2)&nbsp;=&nbsp;"^(\r\n|\n)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;メッセージ生成<br />
&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;""<br />
&nbsp;&nbsp;&nbsp;&nbsp;menuSize&nbsp;=&nbsp;UBound(menu)<br />
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;1&nbsp;to&nbsp;menuSize<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;message&nbsp;&&nbsp;i&nbsp;&&nbsp;"："&nbsp;&&nbsp;menu(i,&nbsp;1)&nbsp;&&nbsp;vbCrLf<br />
&nbsp;&nbsp;&nbsp;&nbsp;next<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;処理番号の入力プロンプト<br />
&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;inputbox(message,&nbsp;"指定条件の行削除")<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;入力がない場合、終了<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;str&nbsp;=&nbsp;""&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;数値でない入力の場合、ダイアログを表示し終了<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;isNumeric(str)&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;"数値を入力してください。"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;無効な番号入力の場合、ダイアログを表示し終了<br />
&nbsp;&nbsp;&nbsp;&nbsp;inputNumber&nbsp;=&nbsp;CInt(str)<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;inputNumber&nbsp;&lt;&nbsp;0&nbsp;or&nbsp;menuSize&nbsp;&lt;&nbsp;inputNumber&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;"表示された番号から選択してください。"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;inputNumber&nbsp;&lt;&gt;&nbsp;7&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;条件文字列の入力プロンプト<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;inputbox("条件文字列を正規表現形式で入力してください。",&nbsp;menu(inputNumber,&nbsp;1))<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;入力がない場合、終了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;str&nbsp;=&nbsp;""&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;正規表現を実行<br />
&nbsp;&nbsp;&nbsp;&nbsp;regex&nbsp;=&nbsp;menu(inputNumber,&nbsp;2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;regex&nbsp;=&nbsp;replace(regex,&nbsp;REPLACE_SYMBOL,&nbsp;str)<br />
&nbsp;&nbsp;&nbsp;&nbsp;Editor.ReplaceAll&nbsp;regex,&nbsp;"",&nbsp;156<br />
end&nbsp;sub<br />
<br />
</div>]]>
    </description>
    <category>便利ツール</category>
    <link>https://engineer.gjpw.net/%E4%BE%BF%E5%88%A9%E3%83%84%E3%83%BC%E3%83%AB/-%E3%82%B5%E3%82%AF%E3%83%A9%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF-%E8%A1%8C%E5%89%8A%E9%99%A4%E3%83%9E%E3%82%AF%E3%83%AD</link>
    <pubDate>Fri, 11 Jan 2013 14:29:20 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/28</guid>
  </item>
    <item>
    <title>[.NET].NETでサポートされたプログラム言語のソースコード変換サイト</title>
    <description>
    <![CDATA[<table border="1"><br />
<tr><th>#</th><th>サイト</th><th>変換</th></tr><br />
<tr><td>1</td><td rowspan="2">developer Fussion</td><td><a href="http://www.developerfusion.com/tools/convert/csharp-to-vb/">C#⇒VB</a></td></tr><br />
<tr><td>2</td><td><a href="http://www.developerfusion.com/tools/convert/vb-to-csharp/">VB⇒C#</a></td></tr><br />
</table>]]>
    </description>
    <category>.NET</category>
    <link>https://engineer.gjpw.net/.net/-.net-.net%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E8%A8%80%E8%AA%9E%E3%81%AE</link>
    <pubDate>Thu, 10 Jan 2013 16:13:20 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/27</guid>
  </item>
    <item>
    <title>[WPF]DataGridの指定セルにフォーカスする</title>
    <description>
    <![CDATA[<a href="http://engineer.gjpw.net/Entry/25/">[WPF]ViewModelを介してDataGridにバインディングする</a>にボタンを一つ配置し、以下のようなクリックハンドラとメソッドを作る。<br />
<div class="content"><br />
private&nbsp;void&nbsp;button1_Click(object&nbsp;sender,&nbsp;RoutedEventArgs&nbsp;e)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;rowIndex&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;colIndex&nbsp;=&nbsp;1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;行、列の番号を指定してDataGridCellを取得する<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGridCell&nbsp;cell&nbsp;=&nbsp;GetDataGridCell(dataGrid1,&nbsp;rowIndex,&nbsp;colIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;データグリッドセルにフォーカスする<br />
&nbsp;&nbsp;&nbsp;&nbsp;FocusManager.SetFocusedElement(this,&nbsp;cell);<br />
}<br />
<br />
public&nbsp;DataGridCell&nbsp;GetDataGridCell(DataGrid&nbsp;dataGrid,&nbsp;int&nbsp;rowIndex,&nbsp;int&nbsp;columnIndex)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(dataGrid.Items&nbsp;==&nbsp;null&nbsp;||&nbsp;dataGrid.Items.IsEmpty)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGridRow&nbsp;row&nbsp;=&nbsp;GetDataGridRow(dataGrid,&nbsp;rowIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(row&nbsp;!=&nbsp;null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridCellsPresenter&nbsp;presenter&nbsp;=&nbsp;GetVisualChild&lt;DataGridCellsPresenter&gt;(row);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridCell&nbsp;cell&nbsp;=&nbsp;(DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cell&nbsp;==&nbsp;null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Visual&nbsp;Treeが構築されていない場合もあるため更新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGrid.UpdateLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGrid.ScrollIntoView(row,&nbsp;dataGrid.Columns[columnIndex]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cell&nbsp;=&nbsp;(DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cell;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
}<br />
<br />
public&nbsp;DataGridRow&nbsp;GetDataGridRow(DataGrid&nbsp;dataGrid,&nbsp;int&nbsp;index)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(dataGrid.Items&nbsp;==&nbsp;null&nbsp;||&nbsp;dataGrid.Items.IsEmpty)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGridRow&nbsp;row&nbsp;=&nbsp;(DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(row&nbsp;==&nbsp;null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Visual&nbsp;Treeが構築されていない場合もあるため更新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGrid.UpdateLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGrid.ScrollIntoView(dataGrid.Items[index]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row&nbsp;=&nbsp;(DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;row;<br />
}<br />
<br />
public&nbsp;static&nbsp;T&nbsp;GetVisualChild&lt;T&gt;(Visual&nbsp;parent)&nbsp;where&nbsp;T&nbsp;:&nbsp;Visual<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;result&nbsp;=&nbsp;default(T);<br />
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;childrenCount&nbsp;=&nbsp;VisualTreeHelper.GetChildrenCount(parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;childrenCount;&nbsp;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visual&nbsp;child&nbsp;=&nbsp;(Visual)VisualTreeHelper.GetChild(parent,&nbsp;i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;child&nbsp;as&nbsp;T;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(result&nbsp;==&nbsp;null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;GetVisualChild&lt;T&gt;(child);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(result&nbsp;!=&nbsp;null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result;<br />
}<br />
<br />
</div><br />
]]>
    </description>
    <category>.NET</category>
    <link>https://engineer.gjpw.net/.net/-wpf-datagrid%E3%81%AE%E6%8C%87%E5%AE%9A%E3%82%BB%E3%83%AB%E3%81%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AB%E3%82%B9%E3%81%99%E3%82%8B</link>
    <pubDate>Wed, 09 Jan 2013 14:45:42 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/26</guid>
  </item>
    <item>
    <title>[WPF]ViewModelを介してDataGridにバインディングする</title>
    <description>
    <![CDATA[○XAML<br />
赤字で、ViewModelのプロパティと紐付けを行う。<br />
青字・緑時で、赤字で紐付けしたプロパティ（DataTable）の列名と紐付けを行う。<br />
<div class="content"><br />
&lt;Window&nbsp;x:Class="WpfDataGrid.BindingWithViewModel.TestWindow"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Title="TestWindow"&nbsp;Height="300"&nbsp;Width="300"&nbsp;Loaded="Window_Loaded"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;Grid&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataGrid&nbsp;AutoGenerateColumns="False"&nbsp;Height="200"&nbsp;HorizontalAlignment="Left"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name="dataGrid1"&nbsp;VerticalAlignment="Top"&nbsp;<font color="red">ItemsSource="{Binding&nbsp;DataTable}"</font>&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataGrid.Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataGridTextColumn&nbsp;x:Name="Column1"&nbsp;<font color="blue">Binding="{Binding&nbsp;Path=col1}"</font>&nbsp;Width="100"&nbsp;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataGridTextColumn&nbsp;x:Name="Column2"&nbsp;<font color="green">Binding="{Binding&nbsp;Path=col2}"</font>&nbsp;Width="100"&nbsp;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/DataGrid.Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/DataGrid&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Grid&gt;<br />
&lt;/Window&gt;<br />
<br />
</div><br />
<br />
○ViewModel<br />
<div class="content"><br />
using&nbsp;System.Data;<br />
<br />
namespace&nbsp;WpfDataGrid.BindingWithViewModel<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;ViewModel<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DataTable&nbsp;<font color="red">DataTable</font>&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</div><br />
<br />
○コードビハインド<br />
水色でViewModelを設定する。<br />
<div class="content"><br />
using&nbsp;System.Windows;<br />
using&nbsp;System.Data;<br />
<br />
namespace&nbsp;WpfDataGrid.BindingWithViewModel<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary><br />
&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;TestWindow.xaml&nbsp;の相互作用ロジック<br />
&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary><br />
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;partial&nbsp;class&nbsp;TestWindow&nbsp;:&nbsp;Window<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;TestWindow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Window_Loaded(object&nbsp;sender,&nbsp;RoutedEventArgs&nbsp;e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataTable&nbsp;dt&nbsp;=&nbsp;new&nbsp;DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Columns.Add(<font color="blue">"col1"</font>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Columns.Add(<font color="green">"col2"</font>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Rows.Add("1",&nbsp;"One");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Rows.Add("2",&nbsp;"Two");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewModel&nbsp;vm&nbsp;=&nbsp;new&nbsp;ViewModel();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vm.DataTable&nbsp;=&nbsp;dt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="aqua">DataContext&nbsp;=&nbsp;vm;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</div><br />
]]>
    </description>
    <category>未選択</category>
    <link>https://engineer.gjpw.net/%E6%9C%AA%E9%81%B8%E6%8A%9E/-wpf-viewmodel%E3%82%92%E4%BB%8B%E3%81%97%E3%81%A6datagrid</link>
    <pubDate>Sat, 29 Dec 2012 16:44:00 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/25</guid>
  </item>
    <item>
    <title>[WPF] KeyDownをプログラムから呼び出す</title>
    <description>
    <![CDATA[○WPFプロジェクト内から呼び出す場合<br />
<div class="content"><br />
Dim&nbsp;key&nbsp;As&nbsp;Key&nbsp;=&nbsp;Key.Insert<br />
Dim&nbsp;target&nbsp;As&nbsp;UIElement&nbsp;=&nbsp;Keyboard.FocusedElement<br />
Dim&nbsp;routedEvent&nbsp;As&nbsp;RoutedEvent&nbsp;=&nbsp;Keyboard.KeyDownEvent<br />
Dim&nbsp;e&nbsp;As&nbsp;KeyEventArgs&nbsp;=&nbsp;New&nbsp;KeyEventArgs(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Keyboard.PrimaryDevice,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PresentationSource.FromVisual(target),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key)<br />
e.RoutedEvent&nbsp;=&nbsp;routedEvent<br />
Grid1.RaiseEvent(e)<br />
<br />
</div><br />
<br />
○単体テストプロジェクト内から呼び出す場合<br />
<div class="content"><br />
Dim&nbsp;params&nbsp;As&nbsp;HwndSourceParameters&nbsp;=&nbsp;New&nbsp;HwndSourceParameters()<br />
Dim&nbsp;source&nbsp;As&nbsp;HwndSource&nbsp;=&nbsp;New&nbsp;HwndSource(params)<br />
Dim&nbsp;k&nbsp;As&nbsp;Key&nbsp;=&nbsp;Key.A<br />
Dim&nbsp;e&nbsp;As&nbsp;KeyEventArgs&nbsp;=&nbsp;New&nbsp;KeyEventArgs(Keyboard.PrimaryDevice,&nbsp;source,&nbsp;0,&nbsp;k)<br />
e.RoutedEvent&nbsp;=&nbsp;routedEvent<br />
Grid1.RaiseEvent(e)<br />
<br />
</div><br />
]]>
    </description>
    <category>.NET</category>
    <link>https://engineer.gjpw.net/.net/-wpf-%20keydown%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99</link>
    <pubDate>Wed, 26 Dec 2012 14:51:00 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/24</guid>
  </item>
    <item>
    <title>CLaunch</title>
    <description>
    <![CDATA[デスクトップをすっきりしたい人におすすめのランチャーアプリ「<a href="http://hp.vector.co.jp/authors/VA018351/">CLaunch</a>」。<br />
<br />
テストのエビデンスをとるときに汚いデスクトップを見せなくてすむよう、<br />
普段から整理するのに便利です。<br />
<br />
個人的に好きな設定<br />
<a href="//engineer.gjpw.net/File/CLaunch.ini">CLaunch.iniファイルダウンロード</a><br />
<a href="//engineer.gjpw.net/File/Design.ini">Design.iniファイルダウンロード</a>]]>
    </description>
    <category>便利ツール</category>
    <link>https://engineer.gjpw.net/%E4%BE%BF%E5%88%A9%E3%83%84%E3%83%BC%E3%83%AB/claunch</link>
    <pubDate>Thu, 22 Sep 2011 17:56:30 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/23</guid>
  </item>
    <item>
    <title>ClickOnce</title>
    <description>
    <![CDATA[<h2>ClickOnce</h2><br />
「Webアプリのメリットは、バージョンアップはサーバーサイドのみでよい。」<br />
「それに比べ、クラサバではバージョンアップのたび再インストールが必要。」<br />
と比較することで、Webアプリのメリットを示したことがある。<br />
<br />
が、ClickOnceは、クラサバのデメリットをほとんど無視できる機能だと思った。<br />
つまり再インストールをワンクリックでできるようにする。<br />
インストーラを配信するサイトを自動生成したり、<br />
アプリケーション起動時に、バージョンアップを促すこともできるみたい。<br />
<br />
参考文献⇒<a href="http://msdn.microsoft.com/ja-jp/netframework/ee624174.aspx">7. アプリケーションの配置</a>]]>
    </description>
    <category>.NET</category>
    <link>https://engineer.gjpw.net/.net/clickonce</link>
    <pubDate>Sat, 26 Feb 2011 04:59:13 GMT</pubDate>
    <guid isPermaLink="false">engineer.gjpw.net://entry/22</guid>
  </item>

    </channel>
</rss>