忍者ブログ

Home > UWSC利用環境

UWSC利用環境 Archive

[PR]

  • 2024-04-28 (Sun)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

  • Comments (Close):
  • TrackBack (Close):

UWSCのヘルプをポップアップで表示させるスクリプト

  • 2010-05-22 (Sat)
  • UWSC利用環境

はじめに

対象ワードのUWSCのヘルプをポップアップで手早く開くやつを作ったのでご紹介。
この関数の使い方はどうだったけ?とか頻繁にHELPファイルを覗くと思うのですが、さくっと目的の場所を開けると便利とか思い作ってみた。
※ヘルプが見れないとか言う人はヘルプのプロパティのブロックの解除が出来てるかご確認の程。

主な機能

クリップボードの内容からヘルプを開く
完全一致するものがない場合前方一致で適合するものをポップアップして選択できる
チョイスしたタグはクリップボードに入る(綴がはっきり解らない時に便利)
設定により現在選択されてるワードをコピーして検索する事も可能(ランチメニューやTeraPadなどで関連づけした場合便利)
文字の大きさ・ウィンドウの大きさ変更可能(但し若干初回起動に時間多めに掛る)

基本の使い方

検索したいワードをコピー後スクリプト起動で検索します。
スクリプトをUWSCのランチメニュー(初期値CTRL+W)やOrchisに入れておくと便利
綴がすべて解らない時は一部でも可

例:GetactiveOLEobjの綴が解らない時getだけで検索すると以下の画像の様に選択メニューが出ます。

起動した所

検索後はクリップボードの中に検索したワードが入ってるので正確な綴が解らない時にも利用するといいです。

便利な使い方

初期設定ではコピー後起動する設定ですが設定変更で現在選択中のフォーカスのある部分をコピーしての起動も可能です。
get_f=0の所を1に変更してください。
※起動後マウス直下のウインドウのフォーカス部分を取得します

文字のサイズを変更可能です
f_size=0の所を1以上に変更してください。(最小1)

ウィンドウの大きさが変更可能です(初期値800×300)

参考:TeraPadの関連づけの仕方

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起動時はすでにポップアップしてるウインドウがあればそれを再利用。ページ表示時は文字サイズ指定があればフォントサイズの属性を最初のフォントアイテムに追加してセット・再表示
以上で終了。

MeryからUWSCを起動

  • 2010-05-20 (Thu)
  • UWSC利用環境

ちょっとMery's (mEditorの後継)もいいなと思って使ってみた。

Meryの公式ページにあるファイル名を引数にしてアプリ起動というマクロでTeraPad同様にエディタから起動できるみたいなので使って見たのだけども、うまく動かないので若干修正してみたら動くようになった。ポイントだけ後続の参考の為に書いておこう

まず、ここに実行ファイルへのパスを記述の所はUWSC.exeのフルパスを記入し、フルパスの中の¥を¥¥に変更(¥は半角英数)

25行目と41行目の
var cmdline = ""+s+""
var cmdline = "¥""+s+"¥""に変更
※¥は半角英数(ブログの都合上全角になってます)

37行目の".hsp"となってるのを".uws"に変更

 

以上で無事に動くようになると思います。

 

UWSCタグ一覧を予測変換候補に入れておくと便利

  • 2010-05-18 (Tue)
  • UWSC利用環境

UWSCでスクリプトを書くときに自分の場合普通のエディタで書いてる(TeraPad)。その時にATOKユーザーなら予測変換で出てくるようにしていると便利なので予測変換辞書に登録している。

使うときはCTRL+F9で入力方法が出てくるので半角英数固定(S)入力をチョイスしてスクリプトを作って行けばいい(ひらがなの時はひらがな(H)入力をチョイス)。

辞書登録が済んでいれば「G」と入力してTABキーを押してやれば「GETID」やら「GETTIME」やら変換候補で出てくるのでサクサクと記述していける。それと、記述中に使った変数も候補に出てくるのでミスも少なくていい。

と言うことで辞書登録するときに作成したテキストファイルが残ってたのでUPしておこうと思う。一応全部大文字になってるが自分の場合は頭だけ大文字にしてあとは小文字に変換した(スクリプト作って)、各自お好みで変えるといいと思う。

予測変換辞書の登録の方法はここでは説明しないので利用の場合はググるなりしてしください。
追記:重要なこと忘れてた、ATOKの入力・変換→確定履歴をファイルに保存に設定するのを忘れずに。

ダウンロード(UWSCtag.txt)

 

その他Meryとかであれば入力補完設定できるようなので(Mery-Tips集参照)補完用ファイルとして使うと良いと思われ。

Home > UWSC利用環境

Search
Meta
Links
Feeds
PR
PR

Page Top