マクロ 公開データ (2000.10~2008.01)
[1050] Q-encode された US-ASCII をデコードするマクロ - こういちろう <koichiro@ss.iij4u.or.jp> 01/07/31 16:18
└[1051] (1050の改良版) Q-encoded US-ASCII のデコード - こういちろう <koichiro@ss.iij4u.or.jp> 01/07/31 19:35
Subject: [1050] Q-encode された US-ASCII をデコードするマクロ
Date: Tue, 31 Jul 2001 16:18:41 +0900
From: こういちろう <koichiro_@_ss.iij4u.or.jp>
// ヘッダに、Q-encode された US-ASCII 文字列
// (「=?us-ascii?q?」で始まるもの) が含まれていた場合に
// それをデコードするためのマクロです。
// EdMax 本体で対応されるまでの対応策として作成しました。
// 【使用法】
// あらかじめ、該当のヘッダを含むメッセージを表示しておいた状態で
// 本マクロを実行します。
// 【制限事項】
// 本マクロがデコードできるのは、実行1回につき1行だけです。
// 複数行にわたって Q-encode された US-ASCII 文字列がある場合は
// すべてデコードされるまで本マクロを繰り返し実行させてください。
// Start of EdMax Macro
ToggleMailEditMode( ) ;
ToggleEnableHeaderEdit( ) ;
SetFocusToView( ) ;
KeyDown( VK_HOME , 2 ) ;
FindString( TRUE , FALSE , TRUE , FALSE , TRUE , FALSE , FALSE , TRUE , TRUE , "=?us-ascii?q" ) ;
KeyDown( VK_HOME , 0 ) ;
SetAnchor( ) ;
KeyDown( VK_END , 0 ) ;
SetAnchor( ) ;
SelectAnchorArea( ) ;
CopyString( ) ;
NewMessageSx( ) ;
SelectAllString( ) ;
PasteString( ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , " =?us-ascii?q?" , " " ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "?= " , "" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "?=" , "" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "_" , " " ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5F" , "_" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=21" , "!" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=23" , "#" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=24" , "$" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=28" , "(" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=29" , ")" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2E" , "." ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2A" , "*" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2B" , "+" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2C" , "," ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2E" , "." ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2F" , "/" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3A" , ":" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3B" , ";" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3C" , "<" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3E" , ">" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=40" , "_@_" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5B" , "[" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5D" , "]" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=60" , "`" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5C" , "\\" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3F" , "?" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3D" , "=" ) ;
SelectAllString( ) ;
CopyString( ) ;
CloseFileNoConfirmation( ) ;
ActivateMailerPart( ) ;
SetFocusToView( ) ;
SelectAnchorArea( ) ;
PasteString( ) ;
KeyDown( VK_HOME , 0 ) ;
SetAnchor( ) ;
KeyDown( VK_END , 0 ) ;
SetAnchor( ) ;
ToggleEnableHeaderEdit( ) ;
ToggleMailEditMode( ) ;
// End of EdMax Macro
Subject: [1051] (1050の改良版) Q-encoded US-ASCII のデコード
Date: Tue, 31 Jul 2001 19:35:36 +0900
From: こういちろう <koichiro_@_ss.iij4u.or.jp>
ヘッダに Q-encode された US-ASCII 文字列
(「=?us-ascii?q?」で始まるもの) が含まれているメッセージについて
そのメッセージがあるフォルダを開いて本マクロを実行すると
Q-encode の部分がデコードされます。
デコードする範囲はカスタマイズ可能です。
EdMax 本体で対応されるまでの対応策として作成しました。
# No.1050 として投稿したものは環境依存性が高かったので
# 削除のうえ書き直しました。
【制限事項】
* 本マクロがデコードできるのは、実行1回につき1行だけです。
複数行にわたって Q-encode された US-ASCII 文字列がある場合は
すべてデコードされるまで本マクロを繰り返し実行させてください。
* 本マクロを実行するとクエリー結果ウィンドウが開いたまま終了します。
(クエリー結果ウィンドウを閉じる動作がマクロ化できないため)
* 本マクロを実行するとクリップボードの中身が消えます。
= = = = = = = = = この次の行から = = = = = = = = =
// Start of EdMax Macro
SaveCurrentAutoFormSwitch( ) ;
SaveMailEditHeaderEditMode( ) ;
SaveCurrentQueryCondition( ) ;
// ここまでおまじない
DoQuery( FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , FALSE , 0 , 2 , "=?us-ascii?q?" , "2001/07/31" , "2001/07/31" , FALSE , FALSE , FALSE , FALSE , FALSE , 1 ) ;
// この「DoQuery」について "=?us-ascii?q?" の2つ前の値を書き換えると
// デコードする範囲が設定できる。
// 0 (初期値) = 現在のフォルダ
// 1 = 現在+下位のフォルダ
// 2 = 現在のアカウント
// 3 = すべてのアカウント
OffAutoForm( ) ;
OnHeaderEdit( ) ;
SetFocusToView( ) ;
KeyDown( VK_HOME , 2 ) ;
FindString( TRUE , FALSE , TRUE , FALSE , TRUE , FALSE , FALSE , TRUE , TRUE , "=?us-ascii?q" ) ;
KeyDown( VK_HOME , 0 ) ;
SetAnchor( ) ;
KeyDown( VK_END , 0 ) ;
SetAnchor( ) ;
SelectAnchorArea( ) ;
CopyString( ) ;
NewMessageSx( ) ;
SetFocusToEditor( ) ;
SelectAllString( ) ;
PasteString( ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , " =?us-ascii?q?" , " " ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "?= " , "" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "?=" , "" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "_" , " " ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5F" , "_" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=21" , "!" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=23" , "#" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=24" , "$" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=28" , "(" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=29" , ")" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2E" , "." ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2A" , "*" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2B" , "+" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2C" , "," ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2E" , "." ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=2F" , "/" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3A" , ":" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3B" , ";" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3C" , "<" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3E" , ">" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=40" , "_@_" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5B" , "[" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5D" , "]" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=60" , "`" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=5C" , "\\" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3F" , "?" ) ;
ReplaceString( 2 , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , TRUE , "=3D" , "=" ) ;
SelectAllString( ) ;
CopyString( ) ;
CloseFileNoConfirmation( ) ;
ActivateMailerPart( ) ;
SetFocusToView( ) ;
SelectAnchorArea( ) ;
PasteString( ) ;
ClearClipboard( ) ;
// 以下おまじない
KeyDown( VK_HOME , 0 ) ;
SetAnchor( ) ;
KeyDown( VK_END , 0 ) ;
SetAnchor( ) ;
ToggleEnableHeaderEdit( ) ;
ToggleMailEditMode( ) ;
RestoreMailEditHeaderEditMode( ) ;
RestoreAutoFormSwitch( ) ;
RestoreCurrentQueryCondition( ) ;
// End of EdMax Macro