ネタキリラボ
ネタキリラボ[ソフト]

外部記憶DB コマンドツール

テキスト取り込みツール Incorp

「Jane Style」のコンテキストメニューから、選択テキストや全レスをクリップボードを介して「外部記憶DB」に取り込むツールです。

コマンドは、エディタで書いてもいいですが、「外部記憶DB」の「ヘルプ/Janeコマンドジェネレーター」で手軽に作成することが出来ます。

コマンドライン

Incorp.exe [options]
optionsは次のとおり。
-i[ncorporate] 選択テキストを取り込みます。※必須※
誤動作防止のため、このパラメーターにこのオプションを入れないとIncorp.exeは何の動作もしません。
例:"PATH\Incorp.exe" -i
-a[ll_select] ウインドウ内(スレ)の全テキストを選択して取り込みます。
例:"PATH\Incorp.exe" -i -a
-s[tring] STR STRに任意の文字列を指定してください。指定文字列が取り込まれます。
※スペースやTab、改行等を含む文字列を指定する場合は"(ダブルクオーテーション)でクオートしてください。
※-s[tring]オプションを指定した場合は、選択文字or全文字の取り込みは行われません。
例:"PATH\Incorp.exe" -i -s STR
-c[lip] ユーザーがプログラムorスクリプトからクリップボードに送ったテキストを、そのまま取り込みます。
例:"PATH\Incorp.exe" -i -c
-d[ir][ DIRID] ツリーのフォルダを指定してから取り込みます。このオプションを設定しない場合は、現在選択しているフォルダに取り込みます。
[ DIRID]にフォルダIDを指定すると、指定したフォルダに取り込みます。
[ DIRID]を指定しなければフォルダ選択ダイアログかひらきます。
※ツリーのフォルダ選択ダイアログの表示は、ESDB内の登録フォルダが多くなればなるほど重い処理になるので注意
例:"PATH\Incorp.exe" -i -d
例:"PATH\Incorp.exe" -i -d 1111
-p[ostscript][ LFC][ TXTID]
(LFC = LineFeedCount)
追記モードです。任意のテキストの文末に、取り込んだテキストを追記していきます。LFCは追記文の文頭に挿入する改行の数です。LFCのデフォルトは0です。
[ TXTID]にテキストIDを指定すると、指定したテキストに取り込みます。
※テキストIDを指定するときは、必ず[ LFC]を指定した後に指定してください。
例:"PATH\Incorp.exe" -i -p
例:"PATH\Incorp.exe" -i -p 2
例:"PATH\Incorp.exe" -i -p 2 1111
-t[itle] $TITLE スレタイトルをフッタに付加します。
-titleオプションの後に半角スペースを空け、タイトルを指定してください。
※$TITLEでのタイトル取得はJaneのみ
例:"PATH\Incorp.exe" -i -t $TITLE
-to[p_title] -titleコマンドがあるとき、スレタイトルをトップ、すなわちテキストアイテムのタイトルにします。
例:"PATH\Incorp.exe" -i -t $TITLE -to
-u[rl] $URL スレッドのURLをフッタに付加します。
-urlオプションの後に半角スペースを空け、URLを指定してください。
※$URLでのURL取得はJaneのみ
例:"PATH\Incorp.exe" -i -u $URL
-n[ow] 現在の日時をフッタに付加します。
例:"PATH\Incorp.exe" -i -n

Janeコマンド(command.dat)設定例

「外部記憶DB」の「ヘルプ/Janeコマンドジェネレーター」から手軽に作成することも出来ます。

選択範囲をESDBで取り込む="C:\Program Files\ExternalStorageDB\Incorp.exe" -i
選択範囲をESDBでフォルダを指定して取り込む="C:\Program Files\ExternalStorageDB\Incorp.exe" -i -d
全レスをESDBでフォルダを指定して取り込む="C:\Program Files\ExternalStorageDB\Incorp.exe" -i -d -a
選択範囲をESDBでフォルダを指定して取り込む(フッタ付き)="C:\Program Files\ExternalStorageDB\Incorp.exe" -i -d -n -t $TITLE -u $URL
全レスにタイトルを付けESDBでフォルダを指定して取り込む(フッタ付き)="C:\Program Files\ExternalStorageDB\Incorp.exe" -i -d -a -n -t $TITLE -to -u $URL
選択範囲をESDBで取り込む(追記モード)="D:\delphi\ExternalStorageDB\ExternalStorage\Incorp.exe" -i -p 2
選択範囲をESDBでフォルダを指定して取り込む(追記モード)="D:\delphi\ExternalStorageDB\ExternalStorage\Incorp.exe" -i -d -p 2

※コンテキストメニュー名とファイルパスは適当に変更してお使いください。

参考

コマンド [2ちゃんねる専用ブラウザ「Jane Style」オンラインヘルプ]


FireFoxから取り込み機能利用サンプル

FireFoxアドインのJSActionsなどを用いることにより、外部記憶DBに任意の文字列を取り込むことが出来ます。詳しい導入方法は、リンク先にあります。

以下のサンプルを自由に編集してお使いください。

外部記憶DBにタイトル、URL、現在日時を追記.js
send_to_exdb_title_and_url();

function send_to_exdb_title_and_url()
{
	//pathをお使いの環境のものに設定してください(\を\\にすること)
	var path = 'C:\\Program Files\\ExternalStorageDB\\Incorp.exe';
	
	var docURL = window.content.document.URL;
	var docTitle = window.content.document.title;
	
	if(_jsaCScript.context.onLink){
		docTitle = _jsaCScript.context.link.textContent;
		docURL = _jsaCScript.context.link.href;
	}
	
	if(docTitle){
		var UConvIF = Components.
			interfaces.nsIScriptableUnicodeConverter;
		var UConv = Components.classes
			['@mozilla.org/intl/scriptableunicodeconverter'].
			getService(UConvIF);
		UConv.charset = 'Shift_JIS';
		docTitle = UConv.ConvertFromUnicode(docTitle);
	}
	
	while (docTitle.indexOf(' ') != -1) {
		docTitle = docTitle.replace(' ',' ');
	}
	
	//引数となるコマンドを設定してください
	var arg ="-i -p 1 -n -s "+ docTitle + "\r\n" + docURL;
	
	_jsaCScript.exec(path , arg);
} 
※杜の住人さんに掲示板にて提供して頂きました。ありがとうございます。

外部記憶DBに選択文字列、タイトル、URL、日時を追記.js
send_to_esdb_selectedText_title_url_datetime();

function send_to_esdb_selectedText_title_url_datetime(){
	//pathをお使いの環境のものに設定してください(\を\\にすること)
	var path = 'C:\\Program Files\\ExternalStorageDB\\Incorp.exe';

	var docURL = window.content.document.URL;
	var docTitle = window.content.document.title;

	if(_jsaCScript.context.onLink){
		docTitle = _jsaCScript.context.link.textContent;
		docURL = _jsaCScript.context.link.href;
	}
	
	//引数となるコマンドを設定してください
	var arg ="-i -n -p 2 -t " + 
		convert_to_shiftjis_and_space_zenkakuka(docTitle) + 
		" -u " + docURL

	_jsaCScript.exec(path , arg);
}

function convert_to_shiftjis_and_space_zenkakuka(str){
	if (str){
		var UConvIF = Components.interfaces.
			nsIScriptableUnicodeConverter;
		var UConv = Components.classes
			['@mozilla.org/intl/scriptableunicodeconverter'].
			getService(UConvIF);
		UConv.charset = 'Shift_JIS';

		str = UConv.ConvertFromUnicode(str);

		while (str.indexOf(' ') != -1) {
			str = str.replace(' ',' ');
		}
	}
	return str;
}
※杜の住人さんに掲示板にて提供して頂きました。ありがとうございます。

ユーザーがクリップボードに任意の文字列を送るサンプル.js(修正版)
※↓のスクリプトの修正版です。YU-TANGさんに提供して頂きました。ありがとうございます。
ユーザーがクリップボードに任意の文字列を送るサンプル.js
※↓のような<pre>タグ内の文字列を選択した場合は、改行が半角スペースになってしまいます。解決策を色々検索したのですが分かりませんでした。どなたか解決策を御存知の方おられましたら、御教授お願いします。
send_seltext();

function send_seltext()
{
	//pathをお使いの環境のものに設定してください(\を\\にすること)
	var path = 'D:\\delphi\\ExternalStorageDB\\ExternalStorage\\Incorp.exe';
	
	
	var docURL = window.content.document.URL; 
	var docTitle = window.content.document.title; 

	if(_jsaCScript.context.onLink){ 
		docTitle = _jsaCScript.context.link.textContent; 
		docURL = _jsaCScript.context.link.href; 
	} 
	
	var nowdate = new Date();
	var docSelText = window.getSelection().toString();
	
	//copytextに好きな文字列をセット
	var copytext = 
		docSelText + "\r\n\r\n" + 
		"TITLE:" + docTitle + "\r\n" + 
		"URL:" + docURL +  "\r\n" + 
		"DATE:" + nowdate.getFullYear() + "/" + 
			nowdate.getMonth() + "/" + 
			nowdate.getDay() + " " + 
			nowdate.getHours() + ":" + 
			nowdate.getMinutes() + ":" + 
			nowdate.getSeconds();
		
	//クリップボード処理
	var str = Components.classes["@mozilla.org/supports-string;1"]
		.createInstance(Components.interfaces.nsISupportsString);
	if (!str) return false;
	str.data=copytext;

	var trans = Components.classes["@mozilla.org/widget/transferable;1"]
		.createInstance(Components.interfaces.nsITransferable);
	if (!trans) return false;

	trans.addDataFlavor("text/unicode");
	trans.setTransferData("text/unicode",str,copytext.length*2);

	var clip = Components.classes["@mozilla.org/widget/clipboard;1"]
		.createInstance(Components.interfaces.nsIClipboard);
	if (!clip) return false;

	clip.emptyClipboard(clip.kGlobalClipboard);
	clip.setData(trans,null,clip.kGlobalClipboard);
	
	//ユーザーが編集したクリップポードの文字列を
	//送るときは-cオプションを含めること。
	//他のオプションは自由に設定してください。
	var args = "-i -c";

	_jsaCScript.exec(path , args);
} 

アプリから取り込み機能利用サンプル

フォーム

フォーム

ソース

{/////////////////////////////////////////////////
「外部記憶DB」テキスト取り込みサンプル
使用法
エディットで右クリックからメニューを選択してください


usesにShellApiを追加してShellExecute等を使って
コマンドを指定してIncorp.exeを起動してやると
アプリから「外部記憶DB」の取り込み機能を
利用することが出来ます。

コマンドライン
http://netakiri.net/soft/esdb_cmd.shtml
/////////////////////////////////////////////////}
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ActnList, ComCtrls, ShellApi;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    ActionList1: TActionList;
    IncorpSelAction: TAction;
    IncorpAllAction: TAction;
    IncorpSelAction1: TMenuItem;
    IncorpAllAction1: TMenuItem;
    RichEdit1: TRichEdit;
    procedure IncorpSelActionUpdate(Sender: TObject);
    procedure IncorpSelActionExecute(Sender: TObject);
    procedure IncorpAllActionExecute(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IncorpSelActionUpdate(Sender: TObject);
begin
  IncorpSelAction.Enabled := RichEdit1.SelText <> '';
end;

procedure TForm1.IncorpSelActionExecute(Sender: TObject);
begin
  //選択テキストをフォルダ指定して取り込む
  ShellExecute(Handle, 'open', 'Incorp.exe', '-i -d', nil, SW_HIDE);
end;

procedure TForm1.IncorpAllActionExecute(Sender: TObject);
begin
  //全てのテキストをフォルダ指定して取り込む
  ShellExecute(Handle, 'open', 'Incorp.exe', '-i -d -a -n', nil, SW_HIDE);
end;

end.

ダウンロード

サンプルソース

  • このエントリーをはてなブックマークに追加
Copyright 2003-2014 yhira Some Rights Reserved.
[Server] [Delphi Tips] [Rails3 Tips]
最終更新:2012/01/24 20:46:12