|
秀丸担当さん今日は、ひろです。
> Win98SE
> 秀丸 V3.08 Float-Macro
> PDIC V4.21
PDIC は Ver.4.35 ですが、投稿した部分だけだと、浮動小数点版でもエ
ラーになりません。確認が甘かったですm(_|_)m。通常の秀丸では問題が起
きないので、浮動小数点版の問題だと思ったのですが、違うのかな?
取り敢えず、長くなりますが、マクロの全文を投稿します。
$Dictionary="英和辞書";
main:
title "PDICW Popup Search DDE Macro";
call save_condition;
call get_word;
call search_word $$return;
goto ENDING;
search_word://検索
//PDIC の起動と辞書のopen
if(findwindowclass("PDICW")==0){
call search_path;
run $$return;
##handle=hidemaruhandle(0);
setactivehidemaru ##handle;
}
ddeinitiate "PDICW","PDIC";
if(!result){
beep;
message "DDE リンク失敗です。";
ddeterminate;
goto ENDING;
}ddepoke "OpenGroup",$Dictionary;
ddeinitiate "PDICW","Dictionary";
ddepoke "Open","";
if(!result){
beep;
message "Poke失敗です (open)";
goto ENDING;
}ddepoke "PopupSearch",$$1;
word=dderequest("PopupSearch");
ddepoke "Close","";
ddeterminate;
return;
search_path://PDICW の path を探す
openreg "LOCALMACHINE","SOFTWARE\\Microsoft\\Windows\\CurrentVersion"
+ "\\App Paths\\PDICW32.EXE";
$$pdicpath=getregstr("");
if($$pdicpath==""){
message "PDICW32.EXEが見つかりません。";
endmacro;
goto ENDING;
}
closereg;
return $$pdicpath;
save_condition://検索状態の保持
#reg_search=searchmode;
if(!#reg_search){
writeininum "hidemaru.ini","Env","SelectFound",1;
envchanged;
}$search=searchbuffer;
#search=searchoption;
return;
get_word:// 単語の取得
disabledraw;
##orgX=x;
##orgY=y;
##filetop=0;
if(selecting==1){//選択状態ならそれを取得
$$word=gettext(seltopx,seltopy,selendx,selendy);
escape;
return $$word;
}
// 単語以外の場所に cursor が有れば手動入力
if(0x41>code||(code<0x5A&&0x61>code)code>0x7A){
##FEP=imestate;
if(##FEP==1)imeswitch;
$$word= input("Type English word!");
##result=result;
if(##FEP==1)imeswitch;
if($$word==""||##result==0)goto ENDING;
else return $$word;
}
// 単語に cursor が有ればその単語を取得
if(y < 0 && x == 0){//鶴亀 header 処理 1
beginsel;
right;
}
else{
while(!##filetop){
if(0x27==code||(0x41<=code&&code<=0x5A)||(0x61<=code&&code<=0x7A)){
left;
if(!result)##filetop = 1;
}
else break;
}
searchdown "['A-Za-z]+",regular;
if(##filetop)findup;
}
if((seltopy == selendy && seltopx <= ##orgX
&& selendx >= ##orgX && seltopy == ##orgY)
|| (seltopy != selendy && ((seltopy == ##orgY
&& seltopx >= ##orgX)
|| (selendy == ##orgY && selendx >= ##orgX))))
$$word=gettext(seltopx,seltopy,selendx,seltopy);
else if(y < 0){//鶴亀 header 処理 2
finddown;
if((seltopy == selendy && seltopx <= ##orgX && selendx >= ##orgX
&& seltopy == ##orgY) || (seltopy != selendy
&& ((seltopy == ##orgY && seltopx >= ##orgX)
|| (selendy == ##orgY && selendx >= ##orgX))))
$$word=gettext(seltopx,seltopy,selendx,seltopy);
}
goscreentop;
##y = y;
moveto ##orgX,##orgY;
enabledraw ##y;
return $$word;
ENDING:
if(!#reg_search){
writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
envchanged;
}setsearch $search,#search;
endmacro;
|
|