1 件の投稿を表示中 (合計 3 個)
- 作成者投稿
- 2015年12月21日 11:01 pm #22245qtv参加者
検索の「単語のみ検索する」をトグルすることが多いため、以前、VBscriptで以下のように書いていました。
現在の検索情報取得Set objWshShell = CreateObject("WScript.Shell") val = objWshShell.RegRead("HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3\Common\FindFlag") val = val Xor eeFindReplaceOnlyWord objWshShell.RegWrite "HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3\Common\FindFlag", val, "REG_DWORD"
最近まで動いていたのですが、「型が一致しません」のエラーがRegRead()のところで出るようになっていました。
よくわからなくなったので、JavaScriptで以下のように書いたのですが、レジストリエディタで見ていても値が反映されません。
検索ダイアログにも反映されませんが、プロンプトではvalがトグルしているのが確認できました。
(検索ダイアログを変更すると、レジストリには反映されています)val = editor.GetProfileInt(eeRegCommon, "", "FindFlag", eeFindReplaceOnlyWord); confirm(val); val = val ^ eeFindReplaceOnlyWord; editor.WriteProfileInt(eeRegCommon, "", "FindFlag", val);
VBScriptが動かなくなった理由もわかっていませんが、上記で反映されないのもよくわからないため、申し訳ありませんが何か気付かれたことがありましたらお願いします。
2015年12月22日 4:09 am #22248Yutaka Emuraキーマスターqtv 様
いつもお世話になっております。江村です。
これは、FindFlag の値が、REG_DWORD (32-bit 整数) から REG_QWORD (64-bit 整数) に変わったためです。
RegRead は 64-bit の整数をサポートしていないと思われるため、この方法では、うまくいきません。代わりに次のマクロを書きましたので、よろしければお使いください。
EEID_SHOW_FIND_BAR = 4559; EEID_FINDBAR_ONLY_WORD = 4576; // 検索バーが非表示なら、表示する bFindBar =editor.QueryStatusByID( EEID_SHOW_FIND_BAR ) & eeStatusLatched; if( !bFindBar ) { editor.ExecuteCommandByID( EEID_SHOW_FIND_BAR ); } // 「単語のみ検索」をトグルする editor.ExecuteCommandByID( EEID_FINDBAR_ONLY_WORD ); // 検索バーが非表示だったら、非表示に戻す if( !bFindBar ) { editor.ExecuteCommandByID( EEID_SHOW_FIND_BAR ); }
よろしくお願い申し上げます。
2015年12月22日 1:07 pm #22251qtv参加者ありがとうございます。
型が変わったのですね。
レジストリなので、ここは仕方ないですね。。
こういう書き方も、同じような動作ができました。dim arrSubKeys, arrValueTypes Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "." & "\root\default:StdRegProv") objReg.GetQWORDValue &H80000001, "Software\EmSoft\EmEditor v3\Common", "FindFlag", val val = val Xor eeFindReplaceOnlyWord objReg.SetQWORDValue &H80000001, "Software\EmSoft\EmEditor v3\Common", "FindFlag", val
- 作成者投稿
1 件の投稿を表示中 (合計 3 個)
- このトピックに返信するにはログインしてください。