秀丸エディタ/秀丸メールで使用するマクロ拡張用DLLです。マクロで(簡単には)実現できない(事もない?)各種機能(?)を提供します。
(まぁ、大半は単なるWindows APIのラッパー(?)ですが・・・)
無保証です。
秀丸エディタが必要です。秀丸メールでも動作します。秀丸エディタはDLLをサポートしたVersion3.02以降、なるべく最新版を使用してください。 unicode版の関数を呼び出す(dllfuncw、dllfuncstrwを使用する)には、秀丸エディタVer.8以降が必要です。
以下の環境で動作確認しています。
nkf関連のコマンドを使用する場合はnkf32.dllが必要です。 nkd32.dllはVer.1系、 Ver.2.0.5以降があります。
mecab関連のコマンドを使用する場合は、mecabのインストールが必要です。 MeCab: Yet Another Part-of-Speech and Morphological Analyzerから入手して下さい。
64bit版は公式なものではありませんが、以下にあります。
GitHub - ikegami-yukino/mecab
hunspell関連のコマンドを使用する場合は、libhunspell.dll と 辞書ファイルが必要です。 (Version 1.24.00β4 から、libhunspell.dll は Ver.1.7.0 が必要です)
64bit版の場合、64bit版の、nkf、mecabが必要になります。 libhunspell.dllは、改造版に64bit版が含まれます。
EditorConfig に関してはEditorConfigを参照してください。
圧縮ファイル内に以下のファイルが格納されています。 (フォルダ構造を保ったまま展開してください。)
ht_tools.dll :32bit DLL
ht_tools.html :説明ファイル
ht_tools_dictionary.txt :ht_tools.dll マクロ用関数の単語補完用辞書ファイル
HidemaruMacroInstaller.lst:HidemaruMacroInstaller用スクリプト
x64 :フォルダ
└ht_tools.dll :64bit DLL
秀丸エディタで使う場合(秀丸メールをインストールしている場合も含む)
"ht_tools.dll"を"hidemaru.exe"と同じ場所に置いてください。
秀丸メールで使う場合(秀丸エディタをインストールしていない場合)
"ht_tools.dll"を"turukame.exe"と同じ場所に置いてください。
"ht_tools.dll"と添付の文書(ht_tools.html)を削除するだけです。レジストリ等は使用していません。
以下の関数が実装されています。詳細は各関数の解説を参照。
TopWindow
任意のウィンドウを最前面ウィンドウに設定・解除 。
IsTopWindow
最前面ウィンドウかどうかのチェック。
BottomWindow
最背面に移動。
SearchWindow
指定されたクラス名、キャプションを持つウィンドウを検索する。
NextWindowHandle
検索したウィンドウハンドルを返す。
GetWindowCount
検索したウィンドウハンドルを読み出していない数を返す。
GetSearchWindowCount
検索したウィンドウの数を返す。
ActiveWindow
指定されたWindowをアクティブにする。
GetActiveWindowHandle
アクティブなウィンドウのハンドルを取得。
GetWindowClass
指定されたWindowのクラス名を取得する。
GetWindowCaption
指定されたWindowのキャプションを取得する。
GetWindowState
指定されたWindowの表示状態を取得
SetWindowState
指定されたWindowの表示状態を設定
NextWindow
一つ下のWindowハンドルを取得。
NextActiveWindow
一つ下のWindowをアクティブにする。
FINDWINDOW
指定されたクラス名、キャプションを持つWindowの検索
GetAncestorWindow
指定されたウィンドウの、親ウィドウのウィンドウハンドルを取得する。
GetWindowRect_Top
指定されたウィンドウの、スクリーン座標を返す。(Top)
GetWindowRect_Bottom
指定されたウィンドウの、スクリーン座標を返す。(Bottom)
GetWindowRect_Left
指定されたウィンドウの、スクリーン座標を返す。(Left)
GetWindowRect_Right
指定されたウィンドウの、スクリーン座標を返す。(Right)
ScreenToClient_X
スクリーン座標から、指定されたウィンドウのクライアント座標に変換(X)
ScreenToClient_Y
スクリーン座標から、指定されたウィンドウのクライアント座標に変換(Y)
MOVEWINDOW
指定されたウィンドウの位置とサイズを指定する。
DwmGetWindowRect_Top
指定されたウィンドウの、スクリーン座標を返す。(Top)
DWM(Desktop Window Manager)対応版
DwmGetWindowRect_Bottom
指定されたウィンドウの、スクリーン座標を返す。(Bottom)
DWM(Desktop Window Manager)対応版
DwmGetWindowRect_Left
指定されたウィンドウの、スクリーン座標を返す。(Left)
DWM(Desktop Window Manager)対応版
DwmGetWindowRect_Right
指定されたウィンドウの、スクリーン座標を返す。(Right)
DWM(Desktop Window Manager)対応版
DwmGetWindowRectAll Unicode関数
指定されたウィンドウの、スクリーン座標を返す。
DWM(Desktop Window Manager)対応版
GetWindowRectAll Unicode関数
指定されたウィンドウの、スクリーン座標を返す。
DwmMoveWindow
指定されたウィンドウの位置とサイズを指定する。
GetDllVersion
バージョン情報の取得(数字)。
GetDllVersionStr
バージョン情報の取得(文字列)。
Wait
指定された時間待機する。
URLExchange
URL文字列の変換。
UrlEncode
文字列をURLに渡せる形式でエンコードして返す。
UrlEncodeW Unicode関数
文字列をUTF-8に変換し、URLに渡せる形式でエンコードして返す。
UrlDecode
URL向けにエンコードされた文字列をデコードして返す。
TimeFormat
書式に従って時刻を文字列で返す。
SetTime
TimeFormatで使用する日時をセットする。
ResetTime
TimeFormatで使用する日時をりセットする。
NumStringToKanji
数字(文字列)を漢数字または漢字表記に変換。
NumToKanji
数字を漢数字または漢字表記に変換。
GetStdout
標準出力を取り込む。
GetExitCode
GetStdout関数で実行したプログラムのリターンコードを取得。
OpenHtmlHelp
htmlhelp(*.chm)ファイルを開く
RUNSYNC
指定したプログラムの実行。
SendKeyPress
キーの送信
GetClipboardOwnerHandle
現在クリップボードを所有しているウィンドウのハンドルを取得。
GetClipboardDSPTEXT
現在クリップボードから"CF_DSPTEXT"形式のデータを取り出す。
DebugOut Unicode関数
デバッグメッセージの出力(OutputDebugStringW のラッパー関数)。
GetChangeFileExt
拡張子を変更したファイル名を返す。
GetFileName
ファイルパスからファイル名を返す。
GetParentFolder
ファイルパスからフォルダ名を返す。
IsMatchFileName
ファイル名がワイルドカードとマッチするかどうかを返す。
GetFileExtention
ファイルパスから拡張子を返す。
GetFileBaseName
ファイルパスからファイル名(拡張子なし)を返す。
GetShortName
ファイルパスを短い名前にして返す。
GetLongName
短いファイルパスを長いファイルパスにして返す。
GetExpandPath
相対パスを展開する。
GetFileNameFromHwnd
ウィンドウハンドルから、実行ファイル名を取得する。
GetCompactPath
ファイル名を指定の文字数に収まるように省略して返す。
GetSpecialFolder
特殊なフォルダーの位置を返す。
GetFileSizeByte
ファイルサイズを取得。
GetFileSizeStr
ファイルサイズを文字列で取得。
GetUnitStr
ファイルサイズの単位を取得。
GetSizeStr
ファイルサイズを文字列で取得。
GetFileAttr
ファイルの属性を取得
IsDirectory
ディレクトリかどうかのチェック
IsFile
ファイルかどうかのチェック
IsRelativePath
相対パスかどうかのチェック
GetRelativePathTo
相対パスを作成する。
IsUTF16LE Unicode関数
指定されたファイルのエンコードがUTF-16LEかUTF-8(BOM付き)をチェックする。(BOMの確認のみ)
IsBOM Unicode関数
指定されたファイルのBOMをチェックする。
AnalyzeEncoding Unicode関数
指定されたファイルのエンコードを解析して、結果を返す。
ReadSectionKeys、ReadSectionKeysW
iniファイルからセクションの全データを読み込む
GetKeyValue、GetKeyValueW
読み込んだデータから指定されたキーの値を取り出す。
GetIniKeyData、GetIniKeyDataW
読み込まれたセクションからキーと値を取り出す。
GetIniKey、GetIniKeyW
読み込まれたセクションからキーを取り出す。
GetIniKeyValue、GetIniKeyValueW
読み込まれたセクションから値を取り出す。
ReadSectionNames、ReadSectionNamesW
iniファイルからセクション名を読み込む
ExistSection、ExistSectionW
読み込んだデータ内にセクションが存在するかどうか。
GetSectionName、GetSectionNameW
読み込んだデータから指定されたセクションの値を取り出す。
GetSection、GetSectionW
読み込んだデータからセクションの値を取り出す。
NextSection、NextSectionW
セクション名を取り出す位置を変更する。
WriteIniStrW Unicode関数
iniファイルへデータを書き込む(文字列)
GetIniStrW Unicode関数
iniファイルからデータを読み込む(文字列)
WriteIniNumW Unicode関数
iniファイルへデータを書き込む(数値)
GetIniNumW Unicode関数
iniファイルからデータを読み込む(数値)
FileOpen
ファイルを指定されたモードで開きファイル番号を返す。
WrFile
ファイルに文字列を書き込む。
WrFileLine
ファイルに文字列を書き込む。
RdFile
ファイルから1行読み込む。
RdFile2
ファイルから1行読み込む。
RdFileLine
ファイルから1行読み込む。
RdFileByte
ファイルから指定バイト数読み込む。
FileOpenW Unicode関数
ファイルを指定されたモードで開きファイル番号を返す。
WrFileW Unicode関数
ファイルに文字列を書き込む。
WrFileLineW Unicode関数
ファイルに文字列を書き込む。
RdFileW Unicode関数
ファイルから1行読み込む。
RdFileLineW Unicode関数
ファイルから1行読み込む。
FileError
ファイル操作時のエラーの有無を返す。
IsOpen
指定されたファイル番号が開かれているかを返す。
IsFerror
指定されたファイル番号でエラーが起きているかを返す。
IsEof
指定されたファイル番号でEOFが起きているかを返す。
FileClose
指定されたファイル番号を閉じる。
FileDelete
指定されたファイルを削除する。
InStr
開始位置指定付きの文字列検索。
InStrEx
開始位置指定付きの文字列検索(全角、半角大文字無視の指定可能)。
InStrRev
最期に発見した位置を返す文字列検索。
InStrRevEx
最期に発見した位置を返す文字列検索(全角、半角大文字無視の指定可能)。
TrimStr
両端にある文字列の削除。
GetStrCSpn
指定された文字列に一致する最初の位置を返す。
GetStrSpn
指定された文字列に一致しない最初の位置を返す。
InsertStr
指定された位置に文字列を挿入。
DeleteStr
指定された位置から指定された長さの文字を削除。
Centor
指定した幅で左によせる。
LeftJust
指定した幅で左によせる。
RightJust
指定した幅で右によせる。
UpperStr
大文字へ変換。
LowerStr
小文字へ変換。
LTrim
左側にある空白を削除。
RTrim
右側にある空白を削除。
Trim
両端にある空白を削除。
String
連続した文字を作成。
Strings
連続した文字列を作成。
Replace
文字列の置き換え。
SetUTF8ConvertString Unicode関数
UTF-16LEからUTF-8へ変換する
SetUTF16ConvertString
UTF-8からUTF-16LEへ変換する
GetResult
SetUTF8ConvertStringの結果を取得
GetResultW Unicode関数
SetUTF16ConvertStringの結果を取得
nkf_load
nkf32.dllをロード。
nkf_free
nkf32.dllをアンロード。
nkf_version
nkf32.dllのバージョン情報の取得。
nkf_exec
nkfコマンドの実行。
nkf_tohankaku
半角英数字への変換。
nkf_tozenkakukana
全角カナへの変換。
nkf_tomime
mime形式への変換。
nkf_error
nkf32コマンド実行時のエラーコードの取得。
nkf_errormessage
nkf32コマンド実行時のエラーメッセージの取得。
nkf_getkanjicode
変換対象の漢字コードを取得。
nkf32.dll Ver.2以降が必要
nkf_fileconvert1
ファイルの対象にしたnkfコマンドの実行。(ファイルを書き換える)
nkf32.dll Ver.2以降が必要
nkf_fileconvert2
ファイルの対象にしたnkfコマンドの実行。(出力ファイルを指定)
nkf32.dll Ver.2以降が必要
nkf_getguess
変換対象の漢字コードを文字列で取得。
nkf32.dll Ver.2.0.5以降が必要
nkf_getmodulefilename
ロードしたnkf32.dllのフルパスを返す。
hmjre_version
hmjre.dllのバージョン情報を取得(文字列)。
hmjre_load
hmjre.dllをロードする。
hmjre_free
hmjre.dllを解放する。
hmjre_match
正規表現を使った検索。
hmjre_match_string
検索でマッチした文字列を取得。
hmjre_match_tag_string
検索でタグにマッチした文字列を取得。
hmjre_match_info
検索でマッチした、位置/長さを返す。
mecab_load
mecab(libmecab.dll)をロード。
mecab_free
mecab(libmecab.dll)をアンロード。
mecab_version
mecabのバージョン情報の取得。
mecab
mecabコマンドの実行。
mecab_getyomi
"読み"を取得
mecab_wakati
わかち書きの実行
mecab_error
mecabコマンド実行時のエラーコードの取得。
mecab_errormessage
mecabコマンド実行時のエラーメッセージの取得。
(ht_toold.dllのメッセージ)
mecab_getstrerror
mecabコマンド実行時のエラーメッセージの取得。
(mecabのメッセージ)
mecab_getmodulefilename
ロードしたlibmecab.dllのフルパスを返す。
hunspell_load
libhumspell.dllをロード。
hunspell_free
libhumspell.dllをアンロード。
hunspell_Create
辞書を指定して、スペルチェッククラスの生成
hunspell_Get_Dic_Encoding
読み込んだ辞書のエンコードを返す。
hunspell_Spell
スペルチェックを実施。
hunspell_Suggest
Suggestを実行し、候補数を取得。
hunspell_SuggestList
Suggestの結果を取得。
hunspell_Add
語句を辞書に追加する。
hunspell_Remove
語句を辞書から削除する。
hunspell_AddDictionary
辞書ファイルを追加する。
hunspell_getmodulefilename
ロードしたlibhumspell.dllのフルパスを返す。
hunspell_errormessage
hunspellコマンド実行時のエラーメッセージの取得。
hunspell_SpellW Unicode関数
スペルチェックを実施。
hunspell_SuggestW Unicode関数
Suggestを実行し、候補数を取得。
hunspell_SuggestListW Unicode関数
Suggestの結果を取得。
hunspell_AddW Unicode関数
語句を辞書に追加する。
hunspell_RemoveW Unicode関数
語句を辞書から削除する。
hunspell_GetVersion
ロードしたlibhumspell.dllのバージョンを文字列で返す。
EditorConfigExecute
.editorconfigを検索し、適応するプロパティを取得する。
EditorConfigExecuteW Unicode関数
.editorconfigを検索し、適応するプロパティを取得する。
EditorConfigErrorMessage
EditorConfigのエラーメッセージを返す。
EditorConfigGetKey
EditorConfigExecuteで取得したプロパティの、キー名を返す。
EditorConfigGetValue
EditorConfigExecuteで取得したプロパティの、値を返す。
EditorConfigClear
EditorConfigExecuteで取得したプロパティの、キー、値を破棄する。
EditorConfigGetVersionStr
使用している"EditorConfig C Core"のバージョン情報を返す。
EditorConfigGetPcreVersionStr
"EditorConfig C Core"で使用しているPCREのバージョン情報を返す。
#num = dllfunc("TopWindow", #handle, #set, #active)
設定
1:最前面
0:最前面解除
アクティブ設定
1:アクティブ状態にする
0:非アクティブ状態する
#num = dllfunc("IsTopWindow", #handle)
#num = dllfunc("BottomWindow", #handle, #active)
ウィンドウの状態
1:アクティブ状態にする
0:非アクティブ状態する
#num = dllfunc("SearchWindow", $ClassName, $Caption, #Flag)
検索時のフラグ
ビット割り付け
bit 00 キャプションチェック有無。0:なし 1:あり
これ以降、bit 00が"1"でなければ無効
bit 01 0:完全一致 1:含まれる
bit 02 0:大文字小文字を認識 1:大文字小文字を無視
非表示のウィンドウも対象にする場合は、1をセットする事。
bit 04 0:表示されているウィンドウのみ 1:非表示のウィンドウも対象にする
FEDC BA98 7654 3210
xxxx xxxx xxxx xxx0 : XXX0 :チェックしない
xxxx xxxx xxxx 0001 : XXX1 :一致
xxxx xxxx xxxx 0011 : XXX3 :含まれる
xxxx xxxx xxxx 0101 : XXX5 : 一致、大文字小文字無視
xxxx xxxx xxxx 0111 : XXX7 :含まれる、大文字小文字無視
xxxx xxxx xxx1 xxxx : XX1X :非表示のウィンドウも対象にする
見つかった場合はウィンドウハンドル、見つからない場合は0を返します。複数のウィンドウがある場合、NextWindowHandle関数で残りのウィンドウハンドルを取得することができます。
手順としては、
となります。 "GetSearchWindowCount"は検索で見つけたハンドル数を、 "GetWindowCount"は"NextWindowHandle"で取得できるハンドル数を返します。
#num = dllfunc("NextWindowHandle")
#num = dllfunc("GetSearchWindowCount")
#num = dllfunc("GetWindowCount")
#num = dllfunc("ActiveWindow", #handle)
#num = dllfunc("GetActiveWindowHandle")
$str = dllfuncstr("GetWindowClass", #Handle)
$str = dllfuncstr("GetWindowCaption", #handle)
#num = dllfunc("GetWindowState", #handle)
成功した場合
失敗した場合は-1を返します。
#num = dllfunc("SetWindowState", #handle, #state)
表示状態
#num = dllfunc("NextWindow", #handle)
#num = dllfunc("NextActiveWindow", #handle)
#num = dllfunc("FINDWINDOW", #handle, $WindowClassName, $WindowCaption)
#num = dllfunc("GetAncestorWindow", #handle)
#num = dllfunc("GetWindowRect_Top", #handle)
#num = dllfunc("GetWindowRect_Bottom", #handle)
#num = dllfunc("GetWindowRect_Left", #handle)
#num = dllfunc("GetWindowRect_Right", #handle)
#num = dllfunc("ScreenToClient_X", #handle, #X, #Y)
#num = dllfunc("ScreenToClient_Y", #handle, #X, #Y)
#num = dllfunc("MOVEWINDOW", #handle, #X, #Y, #WIDTH, #HEIGHT)
#num = dllfunc("DwmGetWindowRect_Top", #handle)
#num = dllfunc("DwmGetWindowRect_Bottom", #handle)
#num = dllfunc("DwmGetWindowRect_Left", #handle)
#num = dllfunc("DwmGetWindowRect_Right", #handle)
#num = dllfuncw("DwmGetWindowRectAll", #handle, $ValName)
結果を格納する数値変数名(配列の名前)
例1) "#Window_pos" //数値変数なので"#" or "##" が先頭に着く
例2) "Window_pos" //"#" or "##" がない場合は、"#"が指定されたと見なす
成功なら 1 を、失敗なら 0 を返す。
成功した場合は、指定された変数の配列に、top、left、right、bottom の順で格納される。
#num = dllfuncw("DwmGetWindowRectAll", #handle, "pos");
//#pos[0] --> top
//#pos[1] --> left
//#pos[2] --> right
//#pos[3] --> bottom
#num = dllfuncw("GetWindowRectAll", #handle, $ValName)
結果を格納する数値変数名(配列の名前)
例1) "#Window_pos" //数値変数なので"#" or "##" が先頭に着く
例2) "Window_pos" //"#" or "##" がない場合は、"#"が指定されたと見なす
成功なら 1 を、失敗なら 0 を返す。
成功した場合は、指定された変数の配列に、top、left、right、bottom の順で格納される。
#num = dllfuncw("DwmGetWindowRectAll", #handle, "pos");
//#pos[0] --> top
//#pos[1] --> left
//#pos[2] --> right
//#pos[3] --> bottom
#num = dllfunc("DwmMoveWindow", #handle, #X, #Y, #WIDTH, #HEIGHT)
#num = dllfunc("GetDllVersion")
$str = dllfuncstr("GetDllVersionStr")
#num = dllfunc("Wait", #MilliSecond)
$str = dllfuncstr("URLExchange", $Str, #num)
設定フラグ
0:全てエンコードする
1:スペースのみエンコード
2:ブラウザと同じく"#"、"?" 以降はエンコードしない
4:メタ文字を削除しない
8:エンコードしない
16:%XX をデコードする
$str = dllfuncstr("UrlEncode", $Str, #num)
設定フラグ
0:漢字(SJIS)のみ
1:漢字(SJIS)と" "(空白)
2:漢字(SJIS)、" "(空白)、「<>"#%{}|^~[]`」を変換。
URL全体を指定すると不必要な文字までエンコードしてしまうかもしれません。
デコードした文字をrun命令で他のプログラムの引数に使う場合は注意が必要です。
マクロのrun命令では "%d"、"%f"、"%b"が以下のように特殊な意味を持ちます。
%f :フルパスのファイル名
%d :フォルダ名
%b :フォルダを除いたファイル名
(UrlEncodeでは常に大文字で返すが、大文字でも同様です。)
漢字をデコードした場合、これらの文字が含まれる場合があります。
引数に使用する場合はこれらの文字が含まれていないかチェックし、含まれる場合は
"%%f"のように"%"を2重にする必要があります
$str = dllfuncstrw("UrlEncodeW", $Str, #num)
設定フラグ
0:数字(0~9)、アルファベット(A~Z、a~z)、"-"、"."、"_" 、"~" 以外を変換
1:すべて変換
URL全体を指定すると不必要な文字までエンコードしてしまうかもしれません。
デコードした文字をrun命令で他のプログラムの引数に使う場合は注意が必要です。
マクロのrun命令では "%d"、"%f"、"%b"が以下のように特殊な意味を持ちます。
%f :フルパスのファイル名
%d :フォルダ名
%b :フォルダを除いたファイル名
(UrlEncodeでは常に大文字で返すが、大文字でも同様です。)
漢字をデコードした場合、これらの文字が含まれる場合があります。
引数に使用する場合はこれらの文字が含まれていないかチェックし、含まれる場合は
"%%f"のように"%"を2重にする必要があります
$str = dllfuncstr("UrlDecode", $Str)
$str = dllfuncstr("TimeFormat", $format)
書式に指定できる文字列はC言語の"strftime"と同じですが、多少拡張(?)してあります。 "%"の後に"#"があると、数字を返す場合は先頭の"0"を省略します。もともと文字列を返す書式に"#"を追加しても無視します。 %k・・・の場合、"#"があると漢字表記になります。
#num = dllfunc("SetTime", #year, #month, #day #hour, #min, #sec)
#num = dllfunc("ResetTime")
$str = dllfuncstr("NumStringToKanji",$Numstr,#flag)
変換用フラグ
0:漢数字
1:漢字表記
$str = dllfuncstr("NumToKanji",#Num,#flag)
変換用フラグ
0:漢数字
1:漢字表記
$str = dllfuncstr("GetStdout",$Cmdline, $Stdin)
#num = dllfunc("GetExitCode")
#num = dllfunc("OpenHtmlHelp",$helpfile, $keyword)
#num = dllfunc("RUNSYNC",$program, #Error_code, #WindowMode)
プログラム実行時の状態。以下の値が使用可能。
#SW_HIDE = 0
ウィンドウを非表示にし、別のウィンドウをアクティブにする。
#SW_NORMAL = 1
ウィンドウをアクティブにして表示。
#SW_SHOWMINIMIZED = 2
ウィンドウをアクティブにし、最小化ウィンドウとして表示。
#SW_SHOWMAXIMIZED = 3
ウィンドウをアクティブにし、最大化ウィンドウとして表示。
#SW_SHOWNOACTIVATE = 4
ウィンドウを最新のサイズと位置で表示。
アクティブなウィンドウは切り替わらない。
#SW_SHOW = 5
ウィンドウをアクティブにし、現在のサイズと位置で表示。
#SW_MINIMIZE = 6
指定したウィンドウを最小化し、Z オーダー上で次に上位となるウィンドウをアクティブにする。
#SW_SHOWMINNOACTIVE = 7
ウィンドウを最小化ウィンドウとして表示。アクティブなウィンドウは切り替わらない。
#SW_SHOWNA = 8
ウィンドウを現在の状態で表示。アクティブなウィンドウは切り替わらない。
#SW_RESTORE = 9
ウィンドウをアクティブにして表示。
#SW_SHOWDEFAULT = 10
アプリケーションを起動したプログラムの状態に基づいて、表示状態を設定。
通常使うのは0~4まで。
#num = dllfunc("SendKeyPress",#vkey, #flag)
Shift、Ctrl、Altキーの状態設定以下のビットの組み合わせを指定します。
0bit:Shift
1bit:Ctrl
2bit:Alt
#num = dllfunc("GetClipboardOwnerHandle")
$str = dllfuncstr("GetClipboardDSPTEXT")
$str = dllfuncw("DebugOut", $str)
$str = dllfuncstr("GetChangeFileExt", $filename, $ext)
$str = dllfuncstr("GetFileName", $filename)
$str = dllfuncstr("GetParentFolder", $filename)
#num = dllfunc("IsMatchFileName", $filename, $wildcard)
$str = dllfuncstr("GetFileExtention", $filename)
$str = dllfuncstr("GetFileBaseName", $filename)
$str = dllfuncstr("GetShortName", $filename)
$str = dllfuncstr("GetLongName", $filename)
$str = dllfuncstr("GetSpecialFolder", #num)
フラグ
0:デスクトップ
1:お気に入り、
2:マイドキュメント、
3:アプリケーションデータ
$str = dllfuncstr("GetExpandPath", $filename)
$str = dllfuncstr("GetFileNameFromHwnd", #Hwnd)
$str = dllfuncstr("GetCompactPath", $filename, #length)
#num = dllfunc("GetFileSizeByte", $filename)
失敗すると-1を返します。
プログラム的には64ビットまで対応していますが、マクロが符号付4バイト(32ビット) までなのであまり大きいサイズのファイルを指定するとどうなるかわかりません。ファイルサイズが大きくなる場合は"GetFileSizeStr"を使ってください。(ほぼ問題ないと思いますが。)
$str = dllfuncstr("GetFileSizeStr", $filename)
ファイル名
省略も可能。省略した場合、直前に実行した以下の関数の結果を返す。
"GetFileSizeByte"
"GetUnitStr"
"GetSizeStr"
ファイルサイズを文字列で返します。ファイルサイズに合わせた単位で返します。
例)
512 -> 512 bytes
1024 -> 1.0 KB
2500000 -> 2.5 MB
$str = dllfuncstr("GetUnitStr", $filename)
ファイル名
省略も可能。省略した場合、直前に実行した以下の関数の結果を返す。
"GetFileSizeByte"
"GetUnitStr"
"GetSizeStr"
ファイルサイズに合わせた単位を返します。
例)
512 -> bytes
1024 -> KB
2500000 -> MB
$str = dllfuncstr("GetSizeStr", $filename)
ファイル名
省略も可能。省略した場合、直前に実行した以下の関数の結果を返す。
"GetFileSizeByte"
"GetFileSizeStr"
"GetUnitStr"
ファイルサイズを返します。
例)
512 -> 512
1024 -> 1.0
2500000 -> 2.5
#num = dllfunc("IsDirectory", $filename)
#num = dllfunc("GetFileAttr", $filename)
失敗した場合は-1、成功した場合は各属性がORされた値。Windows APIの戻り値そのまま。
#num = dllfunc("IsFile", $filename)
#num = dllfunc("IsRelativePath", $filename)
$str = dllfuncstr("GetRelativePathTo", $basename, $filename)
#num = dllfuncw("IsUTF16LE", $filename)
#num = dllfuncw("IsBOM", $filename)
ファイルの先頭にある BOM を確認しているだけです。ファイルの内容から判断している訳ではありません。その為、UTF-8でBOMないファイルは、0 を返します。
IsUTF16LE のエイリアス(別名)です。
#num = dllfuncw("AnalyzeEncoding", $filename)
解析に成功したときは、0より大きい値を返す。成功したときの値は、encodeキーワードを & 0x3F した値と同じ。
エラーの場合はマイナス値を返します。
#num = dllfunc("ReadSectionKeys", $filename, $section)
関数の実行に失敗
#num = dllfunc("ExistKey", $key)
0以上ならキーは存在し、その位置を示す。(0(zero)ベースの配列に格納されている)
-1:存在していない。
-2:ReadSectionKeysが実行されていない。
$str = dllfuncstr("GetKeyValue", #num)
$str = dllfuncstr("GetIniKeyData")
$str = dllfuncstr("GetIniKey")
$str = dllfuncstr("GetIniKeyValue")
#num = dllfunc("NextKey")
#num = dllfunc("ReadSectionNames", $filename)
#num = dllfunc("ExistSection", $section)
0以上なら存在し、その位置を示す。(0(zero)ベースの配列に格納されている)
-1:存在していない。
-2:ReadSectionNamesが実行されていない。
$str = dllfuncstr("GetSectionName", #num)
$str = dllfuncstr("GetSection")
#num = dllfunc("NextSection")
#num = dllfuncw("ReadSectionKeysW", $filename, $section)
関数の実行に失敗
#num = dllfuncw("ExistKeyW", $key)
0以上ならキーは存在し、その位置を示す。(0(zero)ベースの配列に格納されている)
-1:存在していない。
-2:ReadSectionKeysが実行されていない。
$str = dllfuncstrw("GetKeyValueW", #num)
$str = dllfuncstrw("GetIniKeyDataW")
$str = dllfuncstrW("GetIniKeyW")
$str = dllfuncstrw("GetIniKeyValueW")
#num = dllfunc("NextKeyW")
#num = dllfuncw("ReadSectionNamesW", $filename)
#num = dllfuncw("ExistSectionW", $section)
0以上なら存在し、その位置を示す。(0(zero)ベースの配列に格納されている)
-1:存在していない。
-2:ReadSectionNamesWが実行されていない。
$str = dllfuncstrw("GetSectionNameW", #num)
$str = dllfuncstrw("GetSectionW")
#num = dllfuncw("NextSectionW")
#num = dllfuncw("WriteIniStrW", $inifileW, $sectionW, $keyW, $valueW)
$str = dllfuncstrw("GetIniStrW", $inifileW, $sectionW, $keyW)
#num = dllfuncw("WriteIniNumW", $inifileW, $sectionW, $keyW, #value)
$str = dllfuncstrw("GetIniNumW", $inifileW, $sectionW, $keyW)
#num = dllfunc("FileOpen", $filename, $mode)
オープンモード
#num = dllfunc("WrFile", #handle, $Target)
#num = dllfunc("WrFileLine", #handle, $Target)
$str = dllfuncstr("RdFile", #handle)
$str = dllfuncstr("RdFile2", #handle)
$str = dllfuncstr("RdFileLine", #handle)
$str = dllfuncstr("RdFileByte", #handle, #Size)
#num = dllfunc("FileError")
エラーコード
#num = dllfunc("IsOpen",#handle)
#num = dllfunc("IsFerror",#handle)
#num = dllfunc("IsEof",#handle)
#num = dllfunc("FileClose",#handle)
#num = dllfunc("FileDelete",$filename)
#num = dllfuncw("FileOpenW", $filename, $mode, $encode)
オープンモード
ファイルのエンコード
"" や以下の内容以外は、Shift_JIS と認識します。
#num = dllfuncw("WrFileW", #handle, $Target)
#num = dllfuncw("WrFileLineW", #handle, $Target)
$str = dllfuncstrw("RdFileW", #handle)
$str = dllfuncstrw("RdFileLineW", #handle)
#num = dllfunc("InStr", #start, $Target, $Search)
#num = dllfunc("InStrEx", #start, $Target, $Search, #option)
検索オプション
0:検索文字そのもの
1:半角、全角の大文字小文字の違いを無視
2:半角のみ大文字小文字の違いを無視
3:全角のみ大文字小文字の違いを無視
#num = dllfunc("InStrRev", $Target, $Search)
#num = dllfunc("InStrRevEx", $Target, $Search, #option)
検索オプション
0:検索文字そのもの
1:半角、全角の大文字小文字の違いを無視
2:半角のみ大文字小文字の違いを無視
3:全角のみ大文字小文字の違いを無視
$str = dllfuncstr("TrimStr", $Target, $Delete)
#n = dllfunc("GetStrCSpn", $Target, $Search)
#n = dllfunc("GetStrSpn", $Target, $Search)
$str = dllfuncstr("InsertStr", $Target, #Number, $Ins)
$str = dllfuncstr("DeleteStr", $Target, #Number, #Length)
$str = dllfuncstr("LeftJust", $Target, #Length)
$str = dllfuncstr("RightJust", $Target, #Length)
$str = dllfuncstr("Centor", $Target, #Length)
$str = dllfuncstr("UpperStr", $Target, #option)
検索オプション
0:半角、全角を対象
1:半角のみ
2:全角のみ
$str = dllfuncstr("LowerStr", $Target, #option)
検索オプション
0:半角、全角を対象
1:半角のみ
2:全角のみ
$str = dllfuncstr("Trim", $Target)
$str = dllfuncstr("LTrim", $Target)
$str = dllfuncstr("RTrim", $Target)
$str = dllfuncstr("String", #repeat, $str)
$str = dllfuncstr("Strings", #repeat, $str)
$str = dllfuncstr("Replace", $Target, $Search, $Replace, #cnt)
置換された文字列
検索文字列が見つからない場合は、対象文字列を返します。何かしらのエラーがある場合は""を返します。
#cntに0を指定すると0回なので元の文字列をそのまま返します。
$Searchに""を指定すると元の文字列をそのまま返します。
#num = dllfuncw("SetUTF8ConvertString", $WString)
dllfuncwを使用して呼び出してください。変換結果を取得するには、GetResultを使用します。
#ret = dllfuncw("SetUTF8ConvertString", "秀丸エディタ");
$utf8 = dllfuncstr("GetResult");
#num = dllfunc("SetUTF16ConvertString", $String)
変換結果を取得するには、GetResultWを使用します。
$utf8 = getinistr($inifile, $section, "utf8");
#ret = dllfunc("SetUTF16ConvertString", $utf8);
$utf16 = dllfuncstrw("GetResultW");
$str = dllfuncstr("GetResult")
$str = dllfuncstrw("GetResultW")
#num = dllfunc("nkf_load", $filename)
例)
#num = dllfunc("nkf_load"); //nkf32.dllがパスの通った場所にある場合。
#num = dllfunc("nkf_load","");//nkf32.dllがパスの通った場所にある場合。
#num = dllfunc("nkf_load",hidemarudir + "\\nkf32.dll"); //nkf32.dllのパスを指定する場合
#num = dllfunc("nkf_free")
$str = dllfuncstr("nkf_version")
$str = dllfuncstr("nkf_exec", $Option, $Target)
$str = dllfuncstr("nkf_tohankaku", $Target)
$str = dllfuncstr("nkf_tozenkakukana", $Target)
$str = dllfuncstr("nkf_tomime", $Target)
#num = dllfunc("nkf_error")
エラーコード
$str = dllfuncstr("nkf_errormessage")
#num = dllfunc("nkf_getkanjicode")
#num = dllfunc("nkf_fileconvert1", $TargetFile, $Option)
#num = dllfunc("nkf_fileconvert2", $InFile, $OutFile, $Option)
$str = dllfuncstr("nkf_getguess")
$str = dllfuncstr("nkf_getmodulefilename")
$str = dllfuncstr("hmjre_version")
#num = dllfunc("hmjre_load", $filename)
hmjre.dllの場所
""だとDLLを検索します。
#num = dllfunc("hmjre_free")
#num = dllfunc("hmjre_match", $target, $search, #flag, #start)
$str = dllfuncstr("hmjre_match_string")
#num = dllfuncstr("hmjre_match_info", $target)
$str = dllfuncstr("hmjre_match_tag_string",#num)
#num = dllfunc("mecab_load",$filename)
resource fileを指定する場合は、各コマンドのオプションで指定して下さい。
例)
#num = dllfunc("mecab_load"); //libmecab.dllがパスの通った場所にある場合。
#num = dllfunc("mecab_load","");//libmecab.dllがパスの通った場所にある場合。
#num = dllfunc("mecab_load",hidemarudir + "\\libmecab.dll"); //libmecab.dllのパスを指定する場合
#num = dllfunc("mecab_free")
$str = dllfuncstr("mecab_version")
$str = dllfuncstr("mecab", $Option, $Target)
$str = dllfuncstr("mecab_getyomi", $Option, $Target)
$str = dllfuncstr("mecab_wakati", $Option, $Target)
$str = dllfuncstr("mecab_nbest", $Option, $Target, #Num)
#num = dllfunc("mecab_error")
エラーコード
$str = dllfuncstr("mecab_errormessage")
$str = dllfuncstr("mecab_getstrerror")
$str = dllfuncstr("mecab_getmodulefilename")
#num = dllfunc("hunspell_load",$filename)
#num = dllfunc("hunspell_free")
#num = dllfunc("hunspell_Create", $Dictionary, $Affix)
$Dictionary(辞書ファイル) と $Affix(接辞ファイル) の指定について。
第一引数($Dictionary)のみ指定した場合、指定された文字列から、辞書/接辞ファイル名を自動的に作成します。
拡張子なしの文字列を指定した場合、".dic"、".aff"を補完し、辞書/接辞ファイル名とします。
拡張子(".dic"、".aff")を指定してある場合は、そこから辞書/接辞ファイル名を作成します。
第一引数($Dictionary)、第二引数($Affix)の両方を指定した場合は、ファイルの存在チェックは行いますが、引数をそのまま使用するので、第一引数に辞書ファイル、第二引数に接辞ファイルを指定してください。
「C:\Hunspell\dic\」にある、「en_US.aff/en_US.dic」を使う場合の指定方法は、以下の方法があります。
#num = dllfunc("hunspell_Create", "C:\\Hunspell\\dic\en_US")
#num = dllfunc("hunspell_Create", "C:\\Hunspell\\dic\en_US.dic")
#num = dllfunc("hunspell_Create", "C:\\Hunspell\\dic\en_US.aff")
#num = dllfunc("hunspell_Create", "C:\\Hunspell\\dic\en_US.dic", "C:\\Hunspell\\dic\en_US.aff")
$str = dllfuncstr("hunspell_Get_Dic_Encoding")
#num = dllfunc("hunspell_Spell", $word)
#num = dllfunc("hunspell_Suggest", $word)
$str = dllfuncstr("hunspell_SuggestList", #num)
#num = dllfunc("hunspell_Add", $word)
#num = dllfunc("hunspell_Remove", $word)
#num = dllfunc("hunspell_AddDictionary", $Dictionary)
この関数を使用するには、改造版libhunspell.dllが必要です。
辞書ファイルは、hunspellの辞書と同じ形式のファイルを指定して下さい。
$str = dllfuncstr("hunspell_getmodulefilename")
$str = dllfuncstr("hunspell_errormessage")
#num = dllfuncw("hunspell_SpellW", $word)
#num = dllfuncw("hunspell_SuggestW", $word)
$str = dllfuncstrw("hunspell_SuggestListW", #num)
#num = dllfuncw("hunspell_AddW", $word)
#num = dllfuncw("hunspell_RemoveW", $word)
$str = dllfuncstr("hunspell_GetVersion")
#num = dllfunc("EditorConfigExecute",$filename)
実行例
#ec = loaddll(hidemarudir + "\\ht_tools.dll");
#max = dllfunc(#ec, "EditorConfigExecute", filename);
if(#max == 0){
freedll #ec;
endmacro;
}else if(#max == -1){
message dllfuncstr(#ec, "EditorConfigErrorMessage");
freedll #ec;
endmacro;
}
#cnt = 0;
while(#cnt < #max){
$key = tolower(dllfuncstr(#ec, "EditorConfigGetKey", #cnt));
$value = tolower(dllfuncstr(#ec, "EditorConfigGetValue", #cnt));
message $key + ":" + $value;
#cnt = #cnt + 1;
}
#num = dllfuncw("EditorConfigExecuteW",$filename)
dllfuncw を使用して呼び出してください。
実行例
#ec = loaddll(hidemarudir + "\\ht_tools.dll");
#max = dllfuncw(#ec, "EditorConfigExecuteW", filename);
if(#max == 0){
freedll #ec;
endmacro;
}else if(#max == -1){
message dllfuncstr(#ec, "EditorConfigErrorMessage");
freedll #ec;
endmacro;
}
#cnt = 0;
while(#cnt < #max){
$key = tolower(dllfuncstr(#ec, "EditorConfigGetKey", #cnt));
$value = tolower(dllfuncstr(#ec, "EditorConfigGetValue", #cnt));
message $key + ":" + $value;
#cnt = #cnt + 1;
}
$str = dllfuncstr("EditorConfigErrorMessage")
$str = dllfuncstr("EditorConfigGetKey", #num)
$str = dllfuncstr("EditorConfigGetValue", #num)
#num = dllfunc("EditorConfigClear")
$str = dllfuncstr("EditorConfigGetVersionStr")
$str = dllfuncstr("EditorConfigGetPcreVersionStr")
UrlEncode関数でエンコードした文字列を、秀丸マクロのrun命令で、他のプログラムの引数に使う場合は注意が必要です。
マクロのrun命令では "%d"、"%f"、"%b"が以下のように特殊な意味を持ちます。
%f :フルパスのファイル名
%d :フォルダ名
%b :フォルダを除いたファイル名
(UrlEncodeでは常に大文字で返すが、大文字でも同様です。)
漢字をデコードした場合、これらの文字が含まれる場合があります。引数に使用する場合はこれらの文字が含まれていないかチェックし、含まれる場合は "%%f"のように"%"を2重にする必要があります
このDLLは作者本人は、Windows 10(x86/x64)上でしか動作確認していません。
nkf32.dllはVer.1.xxとVer.2.xxがあります。バージョンによって使用できない関数があります。 Ver.2系はUTF-8などUNICODE対応版です。
ht_tools.dll Version 1.9.00β6より、ロードするnkf32.dllを指定できます。パスの通った場所に入れなくても、フルパスで指定すれば動作します。
mecabはVer.0.97で動作確認。(Windowsインストーラ版) その他のバージョンでは確認していません。
ht_tools.dll Version 1.9.00β5より、ロードするlibmecab.dllを指定できます。パスの通った場所に入れなくても、フルパスで指定すれば動作します。
hunspell Ver.1.7.0で動作確認。辞書ファイルは、適当に入手して下さい。
操作するWindowが秀丸の場合、アクティブな秀丸にマクロの実行も移動するので注意してください。
不具合をなくす意志はありますが、実力が伴っていないので治らないかもしれません。
このDLLを使用したことによって如何なる不幸が生じても、 作者がそれらに対して補償を行う義務は無いものとさせてください。
ウィンドウハンドル
ウィンドウハンドルとは、ウィンドウを識別する為につけられる番号です。秀丸のウィンドウハンドルは「hidemaruhandle(x)」で取得できます。秀丸以外のウィンドウハンドルは「findwindow」、「findwindowclass」で検索・取得できます。
バージョン番号について
バージョン番号は Major.Minor.Revision です。
各項目は10進数、2桁とする。
配布用圧縮ファイルも同様の番号を含むファイル名になるが"."は省略。 Revisionの後に小文字のアルファベットがつく場合はDLLのバージョンはそのままで、圧縮ファイル内に含まれる文章が修正された事を示します。
このプログラムでは、漢字の"一"から"九"と0(zero)を示す記号の"〇"で、位取り記数法で示したものをさします。1999年は一九九九年となる。
このプログラムでは、「十百千万億兆」等の位取りの漢字を用いた数字表現をさします。 1999年は千九百九十九年となる。
ファイル名操作関係を追加。(文字列操作もこっそり追加)
GetChangeFileExt, GetFileName, GetParentFolder, IsMatchFileName, GetFileExtention, GetFileBaseName, GetShortFileName, GetLongFileName を追加。
このバージョンからいっそう環境を選ぶようになると思う。要IE5以上。
「GetShortFileName,GetLongFileName」を「GetShortName,GetLongName」へ変更。
GetExpandPath, GetSpecialFolder, URLExchange, UrlEncode, UrlDecode, GetStrCSpn, GetStrSpn, を追加。
このバージョンでなんとかWindows2000以外でも動くようにしたつもり。ただしWindows95、とXPは全然未確認。XPはたぶん大丈夫だと思うけどね。
Windows98でロードに失敗する問題に対処
ライブラリのリンク時の問題? "SHLWAPI.DLL"の関数使うつもりが"SHELL32.DLL"の関数を使用していた。 Windows2000では両方に同じAPIが実装されているため問題ないがWindows98 では"SHELL32.DLL"にないためエラーになっていた。リンク時に"SHLWAPI.Lib"を先にリンクさせるようにした。
GetLongName関数を変更
変換APIがWindows NTだと動作しないので自前のコードで変換
"ht_version"を"GetDllVersion"へ変更。
InStrRev関数のバグの修正。
検索文字があると無限ループになってしまっていた。検索開始位置を示すポインタ位置を更新していなかった。
GetSpecialFolder関数がWindows NTで動作しなかったのを修正。
MSDNにはWindows95、NT4.0でも使えるとのことだったが、どうやらIE4でアクティブディスクトップにしないと"SHELL32.DLL"が置き換えられないので"SHGetSpecialFolderPath"が使えない。 "SHGetSpecialFolderLocation"を使うことでNTでも動作するようにした。
InStr関数の検索開始位置を"0"からにした。(戻り値と同じ考え)関数の説明にも明記するようにした。
GetDllVersion関数の戻り値を数字に変更。ついでにht_version関数を復活。
機能追加
InStrEx、 InStrRevEx、 UpperStr、 LowerStr を追加。
仕様変更
Wait関数で不正な値を指定された場合は-1を返すようにした。
修正
GetUnitStrがUnitStr、 GetSizeStrがSizeStr という名前になってしまっていたので修正。 RightJust/LeftJust関数で1024を指定すると落ちるのを修正。
その他
文字列引数の正当性をチェックをするようにした。(目に付いたモノだけ)
機能追加
TimeFormat を追加。
修正
GetDllVersionが返す値を最低5桁になるように修正。
その他
バージョンの番号の付け方を明確に。
機能追加
Trim、 LTrim、 RTrim、 NumStringToKanji、 NumToKanji、 SetTime、 ResetTime、 Centor、 RegexpCaseStr、を追加。
TimeFormatの書式に%km,%kM,%ks,%kh,%kI,%kH,%kd,%ky,%kYを追加
修正
その他
プログラムを1つのソースから、分野ごとに分割した。
機能追加
nkf_load、 nkf_free、 nkf_version、 nkf_exec、 nkf_tohankaku、 nkf_tozenkakukana、 nkf_EncodeSubject、 nkf_error、 FileOpen、 WrFile、 RdFile、 IsOpen、 IsFerror、 IsEof、 FileClose、 FileError、 GetStdout、 GetExitCode、を追加。
修正
その他
機能追加
修正
GetStdoutを修正。標準入出力にアクセスする方法を、安全と思われる方法に変更。それに伴い標準入力へコマンドを送れるようにした。
GetLongNameを修正。アルゴリズムを入れ替え。フルパスでなくても変換できるようにした。
その他
機能追加
修正
GetStdoutを修正。秀丸ごと死んでしまう現象に対処。(引数のチェックを行っていなかった。)
その他
機能追加
ReadSectionKeys、 GetIniKeyData、 GetIniKey、 GetIniKeyValue、 NextKeyを追加。
修正
その他
機能追加
修正
InStrI、 InStrRevIを削除。
その他
機能追加
修正
その他
機能追加
修正
機能追加に伴いReadSectionKeysを修正
その他
機能追加
修正
その他
機能追加
修正
その他
この文章を修正。
機能追加
GetWindowState、 SetWindowState、 GetFileAttr、 IsDirectory、 IsFile、 FileDeleteを追加。
修正
その他
秀丸Ver.4.10β9にて最前面に設定が可能になったので、 dll内関数がいくつか不要になった。
機能追加
修正
GetWindowCaptionが正常に動作していなかったのを修正。
その他
機能追加
FINDWINDOW、OpenHtmlHelpを追加。
修正
その他
機能追加
SearchWindow、 NextWindowHandle、 GetWindowCount、 GetSearchWindowCount、 hmjre関連コマンドを追加。
修正
関数自体は存在していたが説明がない物があったので説明を追加。 IsRelativePath、GetRelativePathTo。
その他
機能追加
修正
この文章を修正。
その他
機能追加
nkf32.dll Ver.2への対応。 nkf_getkanjicode、 nkf_fileconvert1、 nkf_fileconvert2コマンドを追加。
修正
その他
機能追加
修正
hmjre関連の関数で内部構造を変更。
その他
機能追加
RUNSYNCコマンドを追加
修正
その他
機能追加
修正
iniファイル関連のモジュールを修正
キー位置保存配列を1024固定から可変へ。最終キー位置が保存されないバグの修正。
メモリ確保失敗時の処理を追加。
その他
機能追加
SendKeyPress関数の追加。
修正
その他
機能追加
修正
GetWindowClass関数が正常に動作していないのを修正。
その他
機能追加
修正
hmjre_match_infoの説明を修正。
その他
機能追加
修正
hmjre_matchでメモリーリークしていたバグの修正。
その他
機能追加
修正
以下の関数を削除。 FINDWINDOW、ht_version、RegexpCaseStr
その他
機能追加
修正
GetDllVersion、GetDllVersionStrの返す値をバージョンリソースから取得するように変更。
その他
機能追加
修正
その他
機能追加
修正
その他
ドキュメント修正。
機能追加
セクション取得関連の関数追加。
ReadSectionNames、 ExistSection、 GetSectionName、 GetSection、 NextSection
NKF32.DLLのVer.2.0.5に対応。
nkf_getguessを追加。 Ver.2.0.5の場合は、各関数も対応したDLL関数群を使用するよう変更。
修正
UrlDecodeが正常に動作していなかったバグの修正。途中から、"StrToIntEx"APIを使って16進数->10進数変換を行っていたが、 "0x"をつけずに変換していたため結果がおかしかった。
その他
メモがわりに。
%xxをデコードする場合、"nkf_exec"で--url-input オプションを指定し、実行すると、文字コード変換も同時にできます。
機能追加
nkf_errormessageを追加。
修正
OpenHtmlHelp、nkf_fileconvert1、nkf_fileconvert2が正常に動作していなかったバグの修正。
その他
機能追加
修正
nkf32.dll Ver.2.0.7で正常に動作しないバグの修正。
その他
機能追加
mecab関連の関数を追加。
mecab_load、 mecab_free、 mecab_version、 mecab_getyomi、 mecab_wakati、 mecab、 mecab_nbest、 mecab_error、 mecab_errormessage、 mecab_getstrerror
修正
その他
機能追加
hmjre関連の関数を追加。
修正
その他
機能追加
FINDWINDOW関数を追加
修正
その他
機能追加
GetAncestorWindow関数を追加
修正
GetWindowClassが正常に動作していなかったのを修正。
その他
機能追加
修正
mecab_loadで、読み込む"libmecab.dll"を指定できるようにした。
その他
機能追加
nkf_getmodulefilename、mecab_getmodulefilename、 GetClipboardOwnerHandle、 GetClipboardDSPTEXTを追加
修正
nkf_loadで、読み込む"nkf32.dll"を指定できるようにした。
その他
機能追加
修正
ドキュメント修正
その他
コンパイラを、Borland C++ Compiler 5.5から、Visual C++ 2008 Express Edition SP1へ 変更。コンパイラ変更に伴い、多少コードを修正。
機能追加
修正
その他
64bit対応
機能追加
SetUTF8ConvertString、SetUTF16ConvertString、 GetResult、GetResultW、 WriteIniStrW、GetIniStrWを追加
修正
その他
機能追加
修正
その他
機能追加
hunspell関連の関数を追加。
hunspell_load、 hunspell_free、 hunspell_SetDictionary、 hunspell_Spell、 hunspell_Suggest、 hunspell_SuggestList、 hunspell_getmodulefilename
修正
NextActiveWindowの関数名が間違っていたのを修正。 (NextAvtiveWindow → NextActiveWindow)
その他
コンパイラを、Visual C++ 2008 Express Edition SP1から、Visual C++ 2010 Express Edition SP1へ 変更。
機能追加
hunspell関連の関数を追加。
hunspell_AddDictionary、 hunspell_Add、 hunspell_Remove、 hunspell_errormessage
修正
hunspell_SetDictionary → hunspell_Create へ変更
hunspell_Spell、hunspell_Suggest実行時毎に、スペルチェッククラスを生成していたのを止め、辞書ファイル指定時に、クラスを作成するように変更。
その他
機能追加
GetWindowRect_Top、 GetWindowRect_Bottom、 GetWindowRect_Left、 GetWindowRect_Right、 ScreenToClient_X、 ScreenToClient_Y
修正
InStr系関数で、全角文字を使用時に、検索文字があるのにマッチしない場合があるのを修正(完全ではないが)
例)InStrEx(0,"Hidemaru Editor","MARU", 1)
がマッチしない場合があった。
SetWindowStateの戻り値の説明が間違っていたので修正。
その他
機能追加
修正
ドキュメントの誤字等修正のみ
その他
機能追加
hunspell関連の関数(unicode版)を追加。
hunspell_SpellW、 hunspell_SuggestW、 hunspell_SuggestListW、 hunspell_AddW、 hunspell_RemoveW
修正
その他
機能追加
EditorConfig関連の関数を追加。
EditorConfigExecute、 EditorConfigErrorMessage、 EditorConfigGetKey、 EditorConfigGetValue、 EditorConfigClear、 EditorConfigGetVersionStr
修正
その他
機能追加
修正
editorconfig-core-c ライブラリ更新
その他
機能追加
修正
WriteIniStrWを変更。引数のチェック追加および、
iniファイルが存在しない場合、UTF-16LEの空のファイルを作成するようにした。
editorconfig-core-c ライブラリ更新(0.12.0-beta)
その他
機能追加
修正
editorconfig-core-c ライブラリ更新(0.12.0)、 SetTimeでセットした日時が、TimeFormatに反映されていなかったバグの修正。
その他
機能追加
UrlEncodeW関数、IsUTF16LE関数を追加。
iniファイル関連のunicode版関数を追加。 ReadSectionKeysW、ExistKeyW、GetKeyValueW、GetIniKeyDataW、 GetIniKeyW、GetIniKeyValueW、NextKeyW、ReadSectionNamesW、 ExistSectionW、GetSectionNameW、GetSectionW、NextSectionW
修正
WriteIniStrW、WriteIniNumWで、UTF-16LE以外の場合は、失敗するように修正
その他
機能追加
修正
editorconfig-core-c で使用しているPCREを更新(8.36 --> 8.37)
その他
機能追加
修正
editorconfig-core-c で使用しているPCREを更新(8.37 --> 8.38)
その他
機能追加
修正
editorconfig-core-c で使用しているPCREを更新(8.38 --> 8.39)
その他
機能追加
修正
その他
ドキュメント修正。 mecabのリンク先を変更。
機能追加
修正
その他
ドキュメント修正。 Windows10(x64)上の、rdtool がうまく動いてなかった。
機能追加
修正
editorconfig-core-c を更新(master branch 2016.10.26)
その他
ドキュメント修正。 Windows10(x64)上の、rdtool がうまく動いてなかった。
機能追加
修正
editorconfig-core-c を更新(master branch 2017.04.02)
editorconfig-core-c で使用しているPCREを更新(8.39 --> 8.40)
その他
機能追加
MOVEWINDOW関数を追加。
修正
その他
機能追加
修正
その他
コンパイラを、Visual C++ 2010 Express Edition SP1から、 Visual Studio Community 2017 Ver.15.9.4(Microsoft Visual C++ 2017)へ 変更。
ドキュメントを rd から markdown(pandoc) に変更。
機能追加
SearchWindow関数で、非表示のウィンドウも対象にするようにオプションビット追加。
修正
SearchWindow関数でバッファーオーバーランする場合があったので修正。
その他
機能追加
修正
editorconfig-core-c を更新(0.12.4)
editorconfig-core-c で使用しているPCREを更新(PCRE2 10.32 --> 10.36)
ExistSection/ExistSectionW関数で、誤検出する場合があったのを修正。
その他
機能追加
修正
その他
ドキュメント修正。 editorconfig-core-c のバージョンが間違っていたのを修正。
機能追加
EditorConfigExecuteW関数を追加。(EditorConfigExecuteのユニコード版)
修正
その他
機能追加
DwmGetWindowRect_Top関数、DwmGetWindowRect_Bottom関数、DwmGetWindowRect_Left関数、DwmGetWindowRect_Right関数、 DwmGetWindowRectAll関数、GetWindowRectAll関数を追加。
修正
その他
機能追加
DwmMoveWindow関数を追加。
修正
その他
機能追加
修正
その他
ドキュメント修正。
機能追加
FileOpenW関数、WrFileW関数、WrFileLineW関数、RdFileW関数、RdFileLineW関数、RdFileLine関数、AnalyzeEncoding関数を追加。
修正
IsUTF16LE関数の仕様を変更し、UTF-8のBOMも認識可能にした。関数名と機能が一致しないので、エイリアスとしてIsBOM関数を追加。
その他
機能追加
DebugOut関数を追加。
修正
その他
このプログラムの動作保証はありません。動作確認を行っていますが、プログラムの実行環境や、プログラムの不具合などによって、問題が生じる場合があります。それにより損害が生じても、損害に対する保証は出来かねますので、あらかじめ、ご了承ください。
不具合をなくす意志はありますが、実力が伴っていないので、治らないかもしれません。
ht_tools.dll は、「EditorConfig C Core」と「PCRE2」ライブラリを使用しています。「EditorConfig C Core」、「PCRE2」は BSD ライセンスとなっています。
EditorConfig C Core のライセンス、 PCRE2 のライセンス を参照してください。
有用なライブラリの公開、ありがとうございます。
Q&A集を作成された「秀丸エディタQ&A集 制作しよう会」の皆様。(このDLLは、「秀丸エディタQ&A集(第5版)」 の「第V部~マクロから呼び出すDLLの作り方」を参考に作成。)
使用している各ツールの開発者(hmjre.dll、nkf、mecab、hunspell、EditorConfig C Core)
以上の皆さんに感謝します。
著作権について
この「ht_tools.dll」の著作権は h-tom が保持しています。
配布規定等
問い合わせ先
Unless otherwise stated, all files are distributed under the Simplified BSD
license. The inih(`src/lib/ini.c` and `src/lib/ini.h`) library is distributed
under the New BSD license. `src/lib/utarray.h` is distributed under the Revised
BSD License. The See LICENSE file for details. Some code in src/lib/misc.c is
distributed under their own license (see the source file for details).
Copyright (c) 2011-2013 EditorConfig Team, including Hong Xu and Trey Hunner
Copyright (c) 2014 Hong Xu <hong AT topbug DOT net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Third Party
===========
CMake_Modules/FindPCRE2.cmake
LuaDist License
---------------
LuaDist is licensed under the terms of the MIT license reproduced below.
This means that LuaDist is free software and can be used for both academic
and commercial purposes at absolutely no cost.
Modules and Lua bindings contained in "dist" packages have their
individual copyright.
===============================================================================
Copyright (C) 2007-2010 LuaDist.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
===============================================================================
PCRE2 LICENCE
-------------
PCRE2 is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Releases 10.00 and above of PCRE2 are distributed under the terms of the "BSD"
licence, as specified below, with one exemption for certain binary
redistributions. The documentation for PCRE2, supplied in the "doc" directory,
is distributed under the same terms as the software itself. The data in the
testdata directory is not copyrighted and is in the public domain.
The basic library functions are written in C and are freestanding. Also
included in the distribution is a just-in-time compiler that can be used to
optimize pattern matching. This is an optional feature that can be omitted when
the library is built.
THE BASIC LIBRARY FUNCTIONS
---------------------------
Written by: Philip Hazel
Email local part: Philip.Hazel
Email domain: gmail.com
Retired from University of Cambridge Computing Service,
Cambridge, England.
Copyright (c) 1997-2024 University of Cambridge
All rights reserved.
PCRE2 JUST-IN-TIME COMPILATION SUPPORT
--------------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
Copyright(c) 2010-2024 Zoltan Herczeg
All rights reserved.
STACK-LESS JUST-IN-TIME COMPILER
--------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
Copyright(c) 2009-2024 Zoltan Herczeg
All rights reserved.
THE "BSD" LICENCE
-----------------
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notices,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notices, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of Cambridge nor the names of any
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
EXEMPTION FOR BINARY LIBRARY-LIKE PACKAGES
------------------------------------------
The second condition in the BSD licence (covering binary redistributions) does
not apply all the way down a chain of software. If binary package A includes
PCRE2, it must respect the condition, but if package B is software that
includes package A, the condition is not imposed on package B unless it uses
PCRE2 independently.
End