#freeze
#contents
*はじめに [#zb4c392a]
はてなダイアリーでブログを書いてます。~
サイト紹介的な内容が多く、サイトにリンク先を記述する事が多いのですが、(見出しとして)リンクを記述する際のフォーマットは、
>*[カテゴリ名][リンク先:title=タイトル(省略可)]
のようになっています。~
毎回この通りに記述するのは手間がかかるので、ブラウザのアドレス蘭からドラッグ&ドロップするだけで、上記フォーマットに従って整形出力するツールを制作しました。
*必要な機能と解説 [#x3ab3822]
**ドラッグ&ドロップの受け取り [#wb9c7efd]
URLのみ受け取る必要があります。~
DragEnterイベントで、URLのみ受け入れる処理を記述します。
private void txt_Output_DragEnter(object sender, DragEventArgs e)
{
//URLのみ受け入れる
if (e.Data.GetDataPresent("UniformResourceLocator"))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
**URLとタイトルの抽出 [#jc04c72a]
ドラッグ&ドロップの内容から、URLとタイトルの抽出をします。
//ローカル変数の定義
string sBuffer; //作業用
string sURL; //URL保管用
string sTITLE; //TITLE保管用
string[] arysBuffer;
byte[] arybBuffer;
int iLength = 0;
//ドロップされたリンクのURLを取得する
sURL = e.Data.GetData(DataFormats.Text).ToString();
//タイトルの取得
if (sURL.IndexOf('\\') > -1)
{
arysBuffer = sURL.Split('\\');
sURL = arysBuffer[0];
sTITLE = arysBuffer[1];
}
else
{
//FILEGROUPDESCRIPTOR構造体のデータをMemoryStreamで取得
MemoryStream msBuffer = (MemoryStream)e.Data.GetData("FileGroupDescriptor");
//FileGroupDescriptorの長さを取得
msBuffer.Seek(76, SeekOrigin.Begin);
iLength = 0;
while (msBuffer.ReadByte() > 0)
{
iLength++;
}
//cFileNameの部分をbyte配列に取得
arybBuffer = new byte[iLength];
msBuffer.Seek(76, SeekOrigin.Begin);
msBuffer.Read(arybBuffer, 0, iLength);
msBuffer.Close();
//Shift JISでデコードする
sTITLE = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(arybBuffer);
//最後が.urlか確認し.urlを除去
if (sTITLE.ToLower().EndsWith(".url"))
{
sTITLE = sTITLE.Substring(0, sTITLE.Length - 4);
}
}
**文字列置換 [#e259fcdb]
前述のフォーマットに従って、URLとタイトルを含んだはてな記法を出力します。
//フォーマットに従い文字列を生成
sBuffer = txt_Format.Text.Replace("<TITLE>", sTITLE);
sBuffer = sBuffer.Replace("<URL>", sURL);
//結果を出力
txt_Output.Text = txt_Output.Text + sBuffer + "\r\n";
**クリップボードへコピー [#n6cb3dc0]
生成した内容を、クリップボードへコピーします。
Clipboard.SetText(txt_Output.Text);
*実行結果 [#yaa78b23]
ブラウザのURL欄から、このウィンドウに対しドラッグ&ドロップすると、「Format」欄に従って、はてな記法で出力します。
#ref(01_HelperForHATENA.PNG)
*サンプルコード [#z58c6325]
#ref(HelperForHATENA_src.lzh)
*参考 [#ra76c7bb]
-http://dobon.net/
RIGHT:2008-03-16 (日) 15:33:14
----
[[Prog]]