[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
- Newer: 今見ているページのタイトルとURLをTweenに送るUWSCスクリプト
- Older: MeryからUWSCを起動
UWSCやらなんやら
Home > > UWSCのヘルプをポップアップで表示させるスクリプト
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Home > > UWSCのヘルプをポップアップで表示させるスクリプト
Home > UWSC利用環境 > UWSCのヘルプをポップアップで表示させるスクリプト
対象ワードのUWSCのヘルプをポップアップで手早く開くやつを作ったのでご紹介。
この関数の使い方はどうだったけ?とか頻繁にHELPファイルを覗くと思うのですが、さくっと目的の場所を開けると便利とか思い作ってみた。
※ヘルプが見れないとか言う人はヘルプのプロパティのブロックの解除が出来てるかご確認の程。
クリップボードの内容からヘルプを開く
検索したいワードをコピー後スクリプト起動で検索します。
スクリプトをUWSCのランチメニュー(初期値CTRL+W)やOrchisに入れておくと便利
綴がすべて解らない時は一部でも可
例:GetactiveOLEobjの綴が解らない時getだけで検索すると以下の画像の様に選択メニューが出ます。
起動した所
検索後はクリップボードの中に検索したワードが入ってるので正確な綴が解らない時にも利用するといいです。
初期設定ではコピー後起動する設定ですが設定変更で現在選択中のフォーカスのある部分をコピーしての起動も可能です。
get_f=0の所を1に変更してください。
※起動後マウス直下のウインドウのフォーカス部分を取得します
文字のサイズを変更可能です
f_size=0の所を1以上に変更してください。(最小1)
ウィンドウの大きさが変更可能です(初期値800×300)
TeraPadではツール設定から関連づけできるので利用する場合の設定
TeraPadでの関連付の仕方
ツール(T)→ツールの設定(T)から編集画面を開き
という感じで。
//---------------------------------
//--ユーザー設定
get_f=0 //マウス下のフォーカスで取得。する:1 しない:0(デフォルト)
f_size=0 //1以上
w_size_x=800 //ウインドウの横幅
w_size_y=300 //ウインドウの縦幅
//---------------------------------
Dim IE,mach[500]
HASHTBL h_str = HASH_SORT
//--連想配列に構文関連データ格納
i=0;str=htm_syntax
Repeat
h_str[Token(",",str)]="syntax"
i=i+1
Until str=""
//--連想配列に関数関連データ格納
i=0;str=htm_function
Repeat
h_str[Token(",",str)]="function"
i=i+1
Until str=""
//--クリップボードのデータ取得
ifb get_f=1 //マウス下ウインドウのフォーカスで取得する場合
id=Getid(GET_FROMPOINT_WIN);sckey(id,VK_CTRL,VK_C)
endif
key=trim(Getstr(0))
ifb key=""
Repeat
Fukidasi("コピーしてください")
key=trim(Getstr(0))
Sleep(0.2)
Until !(key="")
endif
//--データ分類の調査
//完全一致の場合
htm=h_str[key]
Sendstr(0,key)//コピペ用にクリップボード転送
//部分一致調査
n=0
ifb htm=""
Repeat
key_length=length(key)
for i=0 to length(h_str)-1
ifb copy(h_str[i,HASH_KEY],1,key_length)=key
mach[n]=h_str[i,HASH_KEY]
n=n+1
endif
next
if n=0 then key=copy(key,1,key_length-1)//前方一致で該当が出てくるまで文字数減らす
Until n>0 or key=""
ifb key="" //該当無ければ終了
Msgbox("該当なし")
ExitExit
endif
mach[n]="<キャンセル>"
//--POPUPメニューで選択
ans=POPUPMENU(mach)
if ans=-1 then ExitExit
key=mach[ans]
htm=h_str[key]
ifb pos("[",key)>0
Sendstr(0,copy(key,1,pos("[",key)-1))//コピペ用にクリップボード転送
key=Betweenstr(key,"[","]")
endif
ifb key="<キャンセル>"
ExitExit
endif
endif
//---IE起動
Try
IE=getactiveOLEObj("InternetExplorer.Application")
Except
IE = CreateOLEObj("InternetExplorer.Application")
IE.ToolBar=0
IE.StatusBar=0
Endtry
ifb IE.ToolBar=1
IE = CreateOLEObj("InternetExplorer.Application")
IE.ToolBar=0
IE.StatusBar=0
endif
IE.Visible = false
//--表示URIの設定と表示
chm="\uwsc.chm::/_RESOURCE/"
URI="mk:@MSITStore:"+GET_UWSC_DIR+chm+htm+".htm#"+key
IE.Navigate(URI)
BusyWait(IE)
doc=IE.document
doc.parentWindow.resizeTo(w_size_x,w_size_y)//ウインドウサイズの変更
ifb !(f_size=0)//フォントサイズの変更
fontobj=doc.getElementsByTagName("font").item(0)
size=doc.createattribute("size")
size.value=f_size
fontobj.setattributenode(size)
endif
IE.Navigate(URI)
BusyWait(IE)
IE.Visible = true
acw(Hndtoid(IE.hwnd))//ウインドウのアクティブ化
//---構文関連データ※[]内はヘルプのnameタグ
TEXTBLOCK htm_syntax
変数,
,DIM[変数],PUBLIC[変数],
,定数定義,
,CONST[定数定義],
,制御文,
,IF,THEN[IF],ELSE[IF],IFB,ELSEIF[IFB],
,ENDIF[IFB],SELECT[SELECT-SELEND],CASE[SELECT-SELEND],DEFAULT[SELECT-SELEND],
,SELEND[SELECT-SELEND],FOR[FOR-NEXT],NEXT[FOR-NEXT],TO[FOR-NEXT],STEP[FOR-NEXT],
,WHILE[WHILE-WEND],WEND[WHILE-WEND],REPEAT[REPEAT-UNTIL],UNTIL[REPEAT-UNTIL],
,CALL,BREAK,CONTINUE,EXIT,PRINT,
,演算式の優先順位,
,AND[演算式の優先順位],OR[演算式の優先順位],XOR[演算式の優先順位],MOD[演算式の優先順位],
,関数の定義,
,PROCEDURE,FUNCTION,FEND[PROCEDURE],RESULT[FUNCTION],
,DEFDLL,OPTION[OPTION指定],THREAD[スレッド生成],CLASS[クラス化],ENDCLASS[クラス化]
THIS,GLOBAL,WITH[WITH文],ENDWITH[WITH文],TEXTBLOCK[複数行文字列定義],ENDTEXTBLOCK[複数行文字列定義],HASHTBL[連想配列],
,TRY[例外処理],ENDTRY[例外処理],EXCEPT[例外処理],FINALLY[例外処理],MODULE[クラス化],PARAM_STR[起動時パラメーター]
ENDTEXTBLOCK
//---関数関連データ
TEXTBLOCK htm_function
ウィンドウ関連,
,GETID,CTRLWIN,CLKITEM,SCKEY,INPUT,SENDSTR,GETSTR,SETSLIDER,GETALLWIN,STATUS,MSGBOX,
,FUKIDASI,CHKBTN,MOUSEORG,PEEKCOLOR,CHKIMG,SAVEIMG,GETITEM,MUSCUR,POSACC,
,POPUPMENU,GETSLCTLST,
,制御関数,
,EXEC,SLEEP,DOSCMD,GETTIME,SOUND,POFF,KINDOFOS,GETKEYSTATE,
,LOCKHARD,STOPFORM,LOGPRINT,EVAL,VARTYPE,
,システム関数,
,GETCTLHND,IDTOHND,HNDTOID[IDTOHND],
,ウィンドウ関数低レベル,
,MMV,BTN,KBD,ACW,
,文字操作,
,COPY,LENGTH,POS,CHKNUM,VAL,FORMAT,REPLACE,CHGMOJ,TRIM,CHR,ASC,ISUNICODE,
,STRCONV,TOKEN,BETWEENSTR,COPYB,LENGTHB,POSB,CHRB,ASCB,
,配列操作,
,RESIZE,SETCLEAR,SHIFTARRAY,CALCARRAY,
,ファイル,
,FOPEN,FCLOSE,FGET,FPUT,FDELLINE,GETDIR,DROPFILE,
,INIファイル,
,READINI,WRITEINI,DELETEINI,
,COMオブジェクト,
,CREATEOLEOBJ,GETACTIVEOLEOBJ,GETOLEITEM,OLEEVENT,COMERRIGN,COMERRRET,SAFEARRAY,
,音声認識・合成,
,SPEAK,RECOSTATE,DICTATE,
,IE操作関連,
,IEGETDATA,IESETDATA,IEGETSRC,IELINK,ENCODE,DECODE,
,フォーム画面,
,CREATEFORM,GETFORMDATA,SETFORMDATA,
,Excel操作関連,
,XLOPEN,XLCLOSE,XLACTIVATE,XLSHEET,XLGETDATA,XLSETDATA,
,数学関数,
,RANDOM[数学関数],INT[数学関数],CEIL[数学関数],ABS[数学関数],
,ZCUT[数学関数],ROUND[数学関数],SQRT[数学関数],POWER[数学関数]
,EXP[数学関数],LN[数学関数],LOGN[数学関数],SIN[数学関数],
,COS[数学関数],TAN,ARCSIN[数学関数],ARCCOS[数学関数],ARCTAN[数学関数]
ENDTEXTBLOCK
//------
Procedure BusyWait(ie)
Sleep(0.5) // Wait
Const TIMEOUT = 90
tm = Gettime()
repeat
Sleep(0.2)
ifb Gettime() - tm > TIMEOUT
MsgBox("Time Out:BusyWait")
ExitExit
endif
until (! ie.busy) and (ie.readyState=4)
Sleep(0.5)
Fend
UWSCのヘルプのページを右クリックしてプロパティを表示させてみれば解るように元はHTLMなのでブラウザで開くこともできる。
例えばヘルプのキーワードからGETIDをチョイスした場合はこんな風になる。
mk:@MSITStore:C:\uwsc\uwsc.chm::/_RESOURCE/UWSC.htm#GETID
GETIDのヘルプが見たければ上記のようなURLを開けばいいわけだ。
ページはmainscrn.htm(使い方)syntax.htm(スクリプト構文)、function.htm(スクリプト関数)、OtherItem.htm(その他)の4種類あるが検索で使うのはsyntax.htmとfunction.htmの2種類。この2ページに関連するキーワードをTEXTBLOCKの中に入れておき起動時に読込むようにしている。 キーワードだけのとENDTRY[例外処理]のように[]付きの2種類があるが[]付きの方は括弧の中が検索時に使用するNAMEタグの中身になっている。
これらのワードを連想配列に取込んで検索時にどのページを開けばいいかデータの設定をする。
検索キーワードと完全一致がない場合は配列machに部分一致のワードを格納しPOPUPMENUで表示・選択。部分一致のワードも無ければ終了。ワードが決れば該当ページを表示。
IE起動時はすでにポップアップしてるウインドウがあればそれを再利用。ページ表示時は文字サイズ指定があればフォントサイズの属性を最初のフォントアイテムに追加してセット・再表示
以上で終了。