スペルチェックの言語切り替えNo.35012
あべのり さん 16/05/13 18:04
 
あべのりです.

スペルチェックアドインのスペルチェック対象となる言語を,手軽に切り替える方法
はありますか?現在だと,ファイルタイプ別の設定→その他→スペルチェックと潜ら
なければならず,ちょっと面倒です.
マクロからの切り替えでも構いませんので,何か手があるとありがたいです.

よろしくお願いします.

[ ]
RE:35012 スペルチェックの言語切り替えNo.35013
秀丸担当 さん 16/05/16 09:43
 

幾つかのファイルタイプ別の設定はconfig文で変更できますが、スペルチェック
の言語はconfig文ではできないです。
以前にレジストリで内部的な情報を書き換えて変更するマクロを作ったことがあ
りました。
一時的な設定でなはく保存しているものを変更してよければ、以下のようなマク
ロでできると思います。

    //enUS 656E5553
    //enGB 656E4742
    //enCA 656E4341
    //frFR 66724652
    //frCH 66724348
    //deDE 64654445
    //deCH 64654348
    //es   65730000
    //it   69740000
    //
    $langname[0] = "英語-米国(&U)";
    $langname[1] = "英語-英国(&G)";
    $langname[2] = "英語-カナダ(&C)";
    $langname[3] = "フランス語-フランス(&F)";
    $langname[4] = "フランス語-スイス(&S)";
    $langname[5] = "ドイツ語-ドイツ(&D)";
    $langname[6] = "ドイツ語-スイス(&D)";
    $langname[7] = "スペイン語(&E)";
    $langname[8] = "イタリア語(&I)";

    $langcode[0] = "656E5553";
    $langcode[1] = "656E4742";
    $langcode[2] = "656E4341";
    $langcode[3] = "66724652";
    $langcode[4] = "66724348";
    $langcode[5] = "64654445";
    $langcode[6] = "64654348";
    $langcode[7] = "65730000";
    $langcode[8] = "69740000";

    #langcount = 9;

    if( (platform & 0x00800000) == 0 ) {
      if( (configstate & 0x01) != 0 ) {
        message "一時的な設定になっているため設定を変更できません。";
        endmacro;
      }
      openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\"
        +filetype;
      $config=getregstr("");
      closereg;
     
      if( $config!=""){
        $configset="Config\\"+$config;
      } else {
        $configset="Default";
      }
      openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\"
        +$configset;
     
      $s = getregbinary("ExConfig2",20,4);
      $lang = leftstr($s,8);
    }

    #i = 0;
    $menu[0] = "スペルチェックの言語";
    $menu[1] = "\x01";
    while( #i < #langcount ) {
        if( $langcode[#i] == $lang ) {
            $menu[#i+2] = "●" + $langname[#i];
        } else {
            $menu[#i+2] = " " + $langname[#i];
        }
        #i = #i + 1;
    }
    menuarray $menu, #langcount + 2;
    #lang = result - 3;
    if( #lang <0  ) {
        closereg;
        endmacro;
    }

    $s = $langcode[#lang] + midstr($s, 8);
    if( (platform & 0x00800000) == 0 ) {
      writeregbinary "ExConfig2", $s,20,1;
    }
    closereg;
    envchanged;
    endmacro;

[ ]
RE:35013 スペルチェックの言語切り替えNo.35014
あべのり さん 16/05/16 17:50
 
>一時的な設定でなはく保存しているものを変更してよければ、以下のようなマク
>ロでできると思います。

ありがとうございます.期待通りの動作です.

どちらかというと秀丸メールの方で使いたかったので,まねをしてHKEY_CURRENT_USE
R\SOFTWARE\Hidemaruo\TuruKame\Config\SpellCheckDetailを書き換えるマクロを書
いてみたのですが,期待通り動かないようです,レジストリは書き換わっているので
すが,秀丸メール自身が設定を読んでくれないようです.何か手はありますか?

[ ]
RE:35014 スペルチェックの言語切り替えNo.35015
あべのり さん 16/05/16 18:11
 
>どちらかというと秀丸メールの方で使いたかったので,まねをしてHKEY_CURRENT_US
>ER\SOFTWARE\Hidemaruo\TuruKame\Config\SpellCheckDetailを書き換えるマクロを
>書いてみたのですが,期待通り動かないようです,レジストリは書き換わっている
>のですが,秀丸メール自身が設定を読んでくれないようです.何か手はありますか?

すみません,秀丸メールではtkinfo.dllを呼ばなければならないことを忘れていまし
た.以下のマクロで動いているようです.ありがとうございます.
$langname[#langcount] = "英語-米国(&U)";$langcode[#langcount] = "656E5553";#
langcount = #langcount + 1;
$langname[#langcount] = "英語-英国(&G)";$langcode[#langcount] = "656E4742";#
langcount = #langcount + 1;
$langname[#langcount] = "英語-カナダ(&C)";$langcode[#langcount] = "656E4341
";#langcount = #langcount + 1;
$langname[#langcount] = "フランス語-フランス(&F)";$langcode[#langcount] = "6
6724652";#langcount = #langcount + 1;
$langname[#langcount] = "フランス語-スイス(&S)";$langcode[#langcount] = "667
24348";#langcount = #langcount + 1;
$langname[#langcount] = "ドイツ語-ドイツ(&D)";$langcode[#langcount] = "64654
445";#langcount = #langcount + 1;
$langname[#langcount] = "ドイツ語-スイス(&D)";$langcode[#langcount] = "64654
348";#langcount = #langcount + 1;
$langname[#langcount] = "スペイン語(&E)";$langcode[#langcount] = "65730000";
#langcount = #langcount + 1;
$langname[#langcount] = "イタリア語(&I)";$langcode[#langcount] = "69740000";
#langcount = #langcount + 1;

if( (platform & 0x00800000) == 0 ) {
 if( (configstate & 0x01) != 0 ) {
  message "一時的な設定になっているため設定を変更できません。";
  endmacro;
 }
 openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\" + filetype;
 $config=getregstr("");
 closereg;
 
 if( $config!=""){
  $configset="Config\\"+$config;
 } else {
  $configset="Default";
 }
 openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\" + $configset;
 
 $s = getregbinary("ExConfig2",20,4);
 $lang = leftstr($s,8);
}else{
 openreg "CURRENTUSER", "SOFTWARE\\Hidemaruo\\TuruKame\\Config";
 $s = getregbinary("SpellCheckDetail",0,4);
 $lang = leftstr($s,8);
}

#i = 0;
$menu[0] = "スペルチェックの言語";
$menu[1] = "\x01";
while( #i < #langcount ) {
 if( $langcode[#i] == $lang ) {
  $menu[#i+2] = "●" + $langname[#i];
 } else {
  $menu[#i+2] = " " + $langname[#i];
 }
 #i = #i + 1;
}
menuarray $menu, #langcount + 2;
#lang = result - 3;
if( #lang <0  ) {
 closereg;
 endmacro;
}

$s = $langcode[#lang] + midstr($s, 8);
if( (platform & 0x00800000) == 0 ) {
 writeregbinary "ExConfig2", $s,20,1;
 closereg;
 envchanged;
}else{
 writeregbinary "SpellCheckDetail",$s,0,1;
 closereg;
 loaddll "tkinfo.dll";
 #h = hidemaruhandle(0);
 #main = dllfunc("MainWnd2");
 #hidden = (dllfunc("Bypass_IsWindowVisible",#main) == 0);
 if(#hidden)##_ = sendmessage( #main, 0x112, 0xF120, 0); //WM_SYSCOMMAND, SC
_RESTORE
 if(#h != #main)setactivehidemaru #main;
 ##_ = dllfunc("EnvChanged",0);
 if(#h != #main)setactivehidemaru #h;
 if(#hidden)##_ = dllfunc("Bypass_ShowWindow",#main,0);
 freedll;
}
endmacro;

[ ]
RE:35015 スペルチェックの言語切り替えNo.35021
でるもんたいいじま さん 16/05/18 13:24
 
あべのりさん、こんにちは。でるもんた・いいじまです。

> $langname[#langcount] = "フランス語-フランス(&F)";
> $langcode[#langcount] = "66724652";
> #langcount = #langcount + 1;
> $langname[#langcount] = "フランス語-スイス(&S)";
> $langcode[#langcount] = "66724348";
> #langcount = #langcount + 1;
> $langname[#langcount] = "ドイツ語-ドイツ(&D)";
> $langcode[#langcount] = "64654445";
> #langcount = #langcount + 1;
> $langname[#langcount] = "ドイツ語-スイス(&D)";
> $langcode[#langcount] = "64654348";
> #langcount = #langcount + 1;

重箱の隅ですが、&D がかぶっていますね。
ここは、「フランス語-スイス」を&H(< Helvetica)にして、
空いた&Sを「ドイツ語-スイス」(< Switzerland)に転用しては
如何でしょうか。
Aspel 0.60.x の Windows 版が出て、ヘブライ語・ハンガリー語・
クロアチア語あたりも使いたくなると困りますが、今のところ
そのへんの言語をお使いになる予定はなさそうですし。

ではでは。

[ ]