忍者ブログ

Home

溺れる者はUWSCを掴め!

[PR]

  • 2025-01-23 (Thu)
×

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

  • Comments (Close):

楽天のポイント獲得履歴を集計するツール

  • 2010-07-09 (Fri)
  • ポイント関連スクリプト

某氏が楽天のポイント獲得履歴を集計するツールがあると便利
とかいうので作ってみた。
※2010/9/14仕様変更があったので一部変更
※2011/1/14年度を跨いだ処理に問題があったのを修正したのと集計年度も選択できるようにした
※2012/2/4仕様変更があったので一部変更及び機能追加
・CSVでの保存もできるようにした

機能的には指定月度を各サービス事に集計し
ラッキーくじ当選など同一の物が複数あるものも集計する。

まぁ説明するより使ってみた方がわかり安いと思う。
ユーザー定義の部分にIDとパスを設定し起動し集計する月を選択するだけ。
注意:あんまり前の月を調査すると1ページ目から全部チェックするので時間がかかります。精々数ヶ月前までが無難かと。

Rspsum.uws(右クリックからダウンロード)

//--ユーザー定義
id="***"
pass="***"
csv_file_dir=GET_CUR_DIR   //CSV保存先のディレクトリ指定(例はカレントディレクトリ)
//csv_file_dir=""            //CSV作成しない場合は空欄で

//--初期設定
HASHTBL list
HASHTBL content
Public OkBtn
dim total_k,total_l,total_c,yy,mm

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = true

dt=Gettime()
y=G_TIME_YY4
m=G_TIME_MM
//--集計月取得
IE.Navigate("about:blank")
BusyWait(IE)
doc=IE.document
yy="<OPTION value="+y+" selected>"+y+"</OPTION>"
yy=yy+"<OPTION value="+y+">"+(y-1)+"</OPTION>"
for i=1 to 12
   ifb i=m
      mm=mm+"<OPTION value="+i+" selected>"+i+"</OPTION>"
   else
      mm=mm+"<OPTION value="+i+">"+i+"</OPTION>"
   endif
next
HTML=HTML_s
HTML=Chgmoj(HTML,"$_y_$",yy)
HTML=Chgmoj(HTML,"$_m_$",mm)
doc.write(HTML)
OleEvent(doc.body.all["OkBtn"], "HTMLInputTextElementEvents2", "OnClick", "clk_OkBtn")
Repeat
   Sleep(0.1)
Until OkBtn=1
mon=IEgetdata(IE,"mon")
year=IEgetdata(IE,"year")
mon=VAL(mon)
year=VAL(year)
ifb !(csv_file_dir="")
   if copy(csv_file_dir,length(csv_file_dir))="\" then csv_file_dir=copy(csv_file_dir,1,length(csv_file_dir)-1)
   csv_file=csv_file_dir+"\"+year+"年"+mon+"月度ポイント獲得集計.csv"
endif
//--データ集計
IE.Navigate("https://www.rakuten.co.jp/myrakuten/login.html")
sleep(1)
BusyWait(IE)
for i=0 to doc.all.tags("input").length-1
   ifb pos("             次へ             ",doc.all.tags("input").item(i).value)>0
      doc.all.tags("input").u.value=ID
      doc.all.tags("input").p.value=PASS
      clickIE(IE,"             次へ             ",1)
      sleep(1)
      IE.Navigate("https://point.rakuten.co.jp/history/")
      BusyWait(IE)
      break
   endif
next
next_page=1
While next_page>0
   table=doc.getElementsByTagName("table")
   for i=0 to table.length-1
      ifb table.item(i).rows(1).cells(0).innerText="利用日<#cr>獲得日"
         o_table=table.item(i)
         break
      endif
   next
   for i=3 to o_table.rows.length-1
      o_row=o_table.rows(i)
      t_mon=val(Betweenstr(o_row.cells(0).innerText,"<#CR>","/"))
      //Msgbox(t_mon)
      t_year=val(copy(o_row.cells(0).innerText,0,4))
      //Msgbox(t_year)
      ifb t_mon=mon
         key=o_row.cells(1).innerText
         //Msgbox(key)
         if !(list[key,HASH_EXISTS]) then list[key]=""
         for ii=2 to 5 
            text=o_row.cells(ii).innerText
            text=Chgmoj(text,"["+Betweenstr(text,"[","]")+"]","")
            text=Chgmoj(text,"(全て)","")
            list[key]=list[key]+text+"|"
         next
         list[key]=list[key]+"@"
      endif
      ifb t_year+copy("0"+t_mon,length("0"+t_mon)-2)<year+copy("0"+mon,length("0"+mon)-2)
         next_page=0 
         break
      endif
   next
   ifb next_page>0
      if !(clickIE(IE,"次の30件 >",0)) then next_page=0
   endif
wend
//--データテーブル作成
table_s="<table cellSpacing=0 cellPadding=0 border=1><tbody>";table_e="</tbody></table>"
td="<td>";etd="</td>";tr="<tr>";etr="</tr>"
htm=table_s+"<tr bgcolor=<#DBL>#66FFCC<#DBL>>"+td+"サービス"+etd+"<td width=300>"+"内容"+etd+td+"獲得ポイント"+etd+td+"利用ポイント"+etd+td+"データー数"+etd+etr
for n = 0 to Length(list)-1
   sum_k=0;sum_l=0;sum_c=0;num=0
   str=list[n, HASH_VAL]
   Repeat
      item=Token("@",str)
      key=Token("|",item)
      if !(content[key,HASH_EXISTS]) then content[key]=""
      content[key]=content[key]+item+"@"
   Until str=""
   for nn = 0 to Length(content)-1
      str2=content[nn, HASH_VAL]   
      k_point=0;l_point=0;c_point=0
      Repeat
         data=Token("@",str2)
         func=Token("|",data)
         p=Token("|",data)
         p=val(Chgmoj(p,"つぶやく",""))
         ifb p>0
            k_point=k_point+p
         elseif p<0
            l_point=l_point+p
         endif
         c_point=c_point+1
      Until str2=""
      sum_k=sum_k+k_point
      sum_l=sum_l+l_point
      sum_c=sum_c+c_point
      num=num+1
      ifb num=1 and nn=Length(content)-1
         htm=htm+"<tr bgcolor=<#DBL>#FFFFCC<#DBL>>"
      else
         htm=htm+tr
      endif
      htm=htm+td+list[n, HASH_KEY]+etd   
      htm=htm+td+content[nn, HASH_KEY]+etd
      htm=htm+td+k_point+etd+td+l_point+etd+td+c_point+etd+etr
   next
   ifb num>1
      htm=htm+"<tr bgcolor=<#DBL>#FFFFCC<#DBL>>"+td+list[n, HASH_KEY]+etd
      htm=htm+td+"合計"+etd
      htm=htm+td+sum_k+etd+td+sum_l+etd+td+sum_c+etd+etr
   endif
   content=HASH_REMOVEALL
   total_k=total_k+sum_k
   total_l=total_l+sum_l
   total_c=total_c+sum_c
next
htm=htm+"<tr bgcolor=<#DBL>#FFCCFF<#DBL>>"+td+"総計"+etd
htm=htm+td+" "+etd
htm=htm+td+total_k+etd+td+total_l+etd+td+total_c+etd+etr
htm=htm+table_e
htm=head+"<p>"+mon+"月度集計結果</p>"+htm+"</body></html>"
IE.Navigate("about:blank")
BusyWait(IE)
doc=IE.document
doc.write(htm)
ifb !(csv_file="")
   table_to_csv(doc.getElementsByTagName("table").item(0),csv_file)
endif
//------
Procedure BusyWait(ie)
   Sleep(0.5)   // Wait
   Const TIME_OUT = 90
   tm = Gettime()
   repeat
      Sleep(0.2)
      ifb Gettime() - tm > TIME_OUT
         MsgBox("Time Out:BusyWait")
         ExitExit
      endif
   until (! ie.busy) and (ie.readyState=4)
   Sleep(0.5)
Fend
//------
Function clickIE(IE,c_str,c_type)
Result=false
doc=IE.document
Select c_type
   case 0 //link
      for i=0 to doc.links.length-1
         ifb pos(c_str,doc.links(i).innerText)>0
            doc.links(i).click()
            Result=true
            Break
         endif
      next
      BusyWait(IE)
   case 1 //btn
      for i=0 to doc.all.tags("input").length-1
         ifb pos(c_str,doc.all.tags("input").item(i).value)>0
            doc.all.tags("input").item(i).click()
            Result=true
            Break
         endif
      next
      BusyWait(IE)
   Selend
Fend
TextBlock HTML_s
<form>
<font color="#FF0000" size="2">集計年度を選択してください</font><BR>
<SELECT name="year"> 
$_y_$
</SELECT>
<font size="2"> 年  </font>
<font color="#FF0000" size="2">集計月を選択してください</font><BR>
<SELECT name="mon"> 
$_m_$
</SELECT>
<font size="2"> 月  </font>
<input type="button" value=" OK " name="OkBtn">
</form>
EndTextBlock
TextBlock head
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
   <meta name="robots" content="nofollow" />
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style TYPE="text/css">
<!--
* {
margin: 10px;
padding: 2px;
font-size:12px;
font-family: ms ui gothic,arial,helvetica;
color: #444;
}
body{
background-color:#fffff1;
}
-->
</style>
</head>
<body>
EndTextBlock
//--
Procedure clk_OkBtn()
 OkBtn=1
Fend
//--
Procedure table_to_csv(table,file)
   fid=Fopen(file,F_READ or F_WRITE)
   for i=0 to table.rows.length-1
      for ii=0 to table.rows(i).cells.length-1
         Fput(fid,table.rows(i).cells(ii).innerText,i+1,ii+1)
      next
   next
   Fclose(fid)
fend

今見ているページのタイトルとURLをTweenに送るUWSCスクリプト

  • 2010-05-26 (Wed)
  • 実用スクリプト
お知らせ
5/27以前のバージョンを利用された方はTweenのクラス名が固有だったみたいで全く動かなかった人もいると思われます。 現在のバージョンに入替えて再度お試しください。その他何かあれば@kengo9999qまで

はじめに

TwitterクライアントにTweenを使ってる人用のスクリプトです。
IE/sleipnir/FireFox/Chromeに対応してます。

機能

今現在見ているページのURLとタイトルをTweenの入力欄に転送します。

設定・使い方

・mybrの所の数字を変えて自分が利用してるブラウザを選びます。
・retの所の数字を変えると転送後送信するかどうか選べます(デフォルト送信しない)
・タスクトレーに入ってる状態の場合はタスクトレーからTweenが出てきます。
 バックグラウンドでの使用はできません。(出さないと書込めない為)
・insの所の数字を変えると挿入するか置換える(デフォルト)か選択できます。挿入の場合は若干時間が掛ります。
・hed・mid・footの部分にコメントを入れるとTween転送時に反映されます。
 [hed][サイトタイトル][mid][サイトURL][foot]の順

参考例
「見てるなう 溺れる者はUWSCを掴め! - http://pointmania.blog.shinobi.jp/ このサイト」の場合
hed="見てるなう "、mid=" - "、foot=" このサイト"という風に

動作確認

スクリプトはIE7/sleipnir2.9.3/FireFox3.6.3/chrome4.1及び5.0で確認してます。

その他

Twitter関連なのでUWSC使いじゃない人も来るみたいなので掻摘んでUWSCの使い方。
・UWSCをUWSC:ダウンロードからダウンロード&解凍し適当な場所へ(フリー版で構いません)
・このスクリプトをメモ帳等で保存して拡張子を「.uws」に変更、又は下記ダウンロードからダウンロード。
・そのスクリプトファイルをダブルクリックで開くとプログラムをどのソフトで開くか聞かれるので参照ボタンを押して解凍して保存したUWSC.exeに関連付
これだけです。
※実際に使うときはUWSC付属機能のランチャー(ランチメニュー)やOrchisなどのランチャーから使います。(ショートカットを作ってタスクバーのランチャーの所にドロップしておくのも手です)

ダウンロード

liween0.52(uws)(右クリックから保存)

//--liween Ver0.52--
//
//--ユーザー設定(環境に合わせて設定してください)---
mybr=1    //IE:0 sleipnir:1 FireFox:2 chrome:3
ret=0     //転送後すぐに送信 する:1 しない:0(デフォルト)
ins=1     //置換え形式:0 挿入形式:1
hed=""    //ヘッダー部分のコメント。例:"今見てる "
mid=""     //タイトルとURLの間のコメント(デフォルトは半角スペース)。
foot=""   //フッター部分のコメント。
//----------------------------------------------------
dim tbnames,tbc
ifb mybr=0
	id=Getid("Internet Explorer","IEFrame",5)
	ifb id>-1
		URL=Getstr(id,2,STR_ACC_EDIT)
		stt=Status(id,ST_TITLE)
		title=Copy(stt,1,Pos(" - ",stt,1,-1))
	else
		Msgbox("Internet Explorerが立上がってないようです")
		ExitExit
	endif
elseif mybr=1
	SP=CreateOleObj("Sleipnir.API") 
	ifb SP>-1
		url=SP.URL
		title=SP.GetDocumentObject(SP.GetDocumentID(SP.ActiveIndex)).title
	else
		Msgbox("Sleipnirが立上がってないようです")
		ExitExit
	endif
elseif mybr=2
	id=Getid("Mozilla Firefox","MozillaUIWindowClass",5)
	ifb id>-1
		URL=Getstr(id,1,STR_ACC_EDIT)
		stt=Status(id,ST_TITLE)
		title=Copy(stt,1,pos(" - ",stt,1,-1))
	else
		Msgbox("Firefoxが立上がってないようです")
		ExitExit
	endif
elseif mybr=3
	id=Getid("Google Chrome","Chrome_")
	ifb id>-1
		Getitem(id,ITM_EDIT,-1)
		URL=ALL_ITEM_LIST[0]
		stt=Status(id,ST_TITLE)
		title=Copy(stt,1,pos(" - ",stt,1,-1))
	else
		Msgbox("Chromeが立上がってないようです")
		ExitExit
	endif
endif
id=Getid("Tween","WindowsForms10.Window.8")
ifb id=-1
	Msgbox("Tweenが立上がってないようです")
	ExitExit
else
	Getitem(id,ITM_BTN)
	ifb ALL_ITEM_LIST[0]="Search"
		tbc=1
	endif
endif
ifb Status(id,ST_VISIBLE)=0
	Ctrlwin(id,NORMAL)
endif
if mid="" then mid=" "
str=hed+title+mid+url+foot
ifb ins=0
Sendstr(id,str,1+tbc,1)
elseif ins=1
Sendstr(id,str,1+tbc)
endif
ifb ret
	Sckey(id,VK_RETURN)
endif
Ctrlwin(id,TOPMOST)
Ctrlwin(id,NOTOPMOST)

変更履歴

追記5/26:早速もって修正CTRLWIN(id,SHOW)から表示状態を確認しCTRLWIN(id,NORMAL)にするに変更。それと検索タブで実行すると検索ワードの所に入ってしまうのでclkitem(id,"Recent",CLK_TAB)を追加
chromeでも使えるようにした。転送後アクティブになるように変更した。
追記5/27(ver0.4.0):@gomesun様からご連絡頂いて、Twitterのクラス名の末尾がどうも固有みたいなので
53行目:id=getid("Tween","WindowsForms10.Window.8.app.*****")の所の.app以下を削除した。(※GETIDのクラス名は前方一致での部分指定でOKです)
バージョン表記を入れた
追記5/27その2(ver0 4.1):挿入という形で入れられるようにした。※弊害として転送処理に時間若干掛る。
最大化時アクティブにならない問題を修正
追記5/28(ver.4.2):chromeにおいてver4.××とver5.××ではクラス名が違うので共通部分のみで認識するようにした。
追記5/28その2(ver0.5.0):投稿時のコメントを入れられるようにした。 ブラウザやTweenが起動してない場合の例外処理を追加した。
追記5/28その3(ver0.5.1):0.5.0up時にFireFoxの例外処理に誤りがあったのを修正
追記5/29(ver0.5.2):転送後、Resentタブに強制的になる問題を修正した(サーチタブでのエラー回避手段としてResentタブを押す方式からサーチボタンの有無でタブコントロールを変動させる方式に変更)。問題が無ければこれで最終更新の予定

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

Home

Search
Meta
Links
Feeds
PR
PR

Page Top