Macro/投稿/134

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F134


Top > Macro > 投稿 > 134

Grep結果から直接ファイルを関連付け実行

  • ページ: Macro/投稿
  • 作者: すい?
  • カテゴリー: ppa
  • 投稿日: 2003-05-20 (火) 15:45:10

メッセージ

fileGREPOPEN.PPA
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
// Grep結果から直接ファイルを関連付け実行する。
 
// TAB=4
// 実行には PPA.DLL が必須です。PPA.DLL を入手して sakura.exe と同じフォルダに入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。
 
// Grep の結果形式のテキストにてこのマクロを実行すると、
// マクロ実行時の行のファイルが
// ・拡張子が TXT,C,CPP,H ならタグジャンプする
// ・拡張子が DOC,XLS なら関連付け実行する
// ・拡張子が他なら関連付け実行する
// ・行頭からの文字列がファイル名らしくなければ、実行時の位置で単語選択するだけ ※
// という動作を行います。
// 
// ※ このマクロはダブルクリックに割り当てる場合用に作ってあります。
 
var
	str:String;		// 文字列変数 str を用意
	ext:String;		// 文字列変数 ext を用意
	tmps:String;	// 文字列変数 tmps を用意
	pt:Integer;		// 整数数値変数 pt を用意
begin
 
	S_MoveHistSet(0);				// 現在位置を移動履歴に登録
		S_GoLineTop(1);					// 行頭に移動(折り返し単位) - 行頭のスペースを無視する
		S_Down_Sel(0);					// (選択)カーソル下移動
		str := S_GetSelectedString(0);	// 選択部分の文字列を取得
		S_CancelMode(0);				// 各種モードの取り消し - [Esc]キーによる選択解除
	S_MoveHistPrev(0);				// 移動履歴: 前へ
 
	// ↑↓移動するとカーソル位置が行頭に行ってしまうようなので、それを防ぐ。
	S_MoveHistSet(0);				// 現在位置を移動履歴に登録
	S_Left(0);						// カーソル左移動
	S_Right(0);						// カーソル右移動
	S_MoveHistPrev(0);				// 移動履歴: 前へ
 
	tmps := Copy  (str,1,2);	// 先頭 2文字を tmps に退避
	str  := Delete(str,1,2);	// str からは先頭 2文字を削除
	pt   := Pos(':',str);		// str から : を探す。
 
	if ( pt <> 0 ) then begin	// : があったら( 2文字目以降に : があったという事)
		str := Copy(str,1,pt);	// str := 「 : までの文字列」
 
		// str の後方から ( を探し出す。
		for pt := Length(str) downto 1 do	if( Copy(str,pt,1) = '(' ) then	Break;
		str := Copy(str,1,pt-1);	// str := 先頭 〜 ( の前までの文字列
	end;
	str := Trim( tmps + str );	// str := 「tmps に退避してあった先頭 2文字」 + str
 
	if ( ( str = '' ) or ( Copy(str,2,1) <> ':' ) or ( Length(str) < 3 ) ) then	// ファイル名らしくない場合の処理
		begin
			S_SelectWord(0);	// 現在位置の単語選択
			Exit;	// 文字列が空文字列なら何もせず終了する。
		end
	;
 
	// str の後方から . を探し出す。
	for pt := Length(str) downto 1 do	if( Copy(str,pt,1) = '.' ) then	Break;
	ext := UpperCase(Copy(str,pt+1,500));	// 拡張子部分を英大文字で文字列変数 ext に取得する
	// MessageBox(ext,'拡張子',0);		// for Debug
 
	if      ( ext = 'TXT' ) then	S_TagJump()		// 拡張子が 'TXT' ならタグジャンプする(このエディタで開く)
	else if ( ext = 'C'   ) then	S_TagJump()		// 拡張子が 'C'   ならタグジャンプする(このエディタで開く)
	else if ( ext = 'CPP' ) then	S_TagJump()		// 拡張子が 'CPP' ならタグジャンプする(このエディタで開く)
	else if ( ext = 'H'   ) then	S_TagJump()		// 拡張子が 'H'   ならタグジャンプする(このエディタで開く)
	else if ( ext = 'DOC' ) then	Shell(str,'')	// 拡張子が 'DOC' なら関連付け実行する Word
	else if ( ext = 'XLS' ) then	Shell(str,'')	// 拡張子が 'XLS' なら関連付け実行する Excel
	else							Shell(str,'')	// 拡張子が他なら関連付け実行する。
	;
 
end;
 


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル: fileGREPOPEN.PPA 356件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2006-07-30 (日) 04:40:35 (4346d)