#module
//RSSの制御開始
//p1: url
#deffunc rssset str p1
rss_start=1 //フラグ
url=p1
newcom oDom,"Microsoft.XMLDOM"
oDom("async")="FALSE" ; 同期読み込みを行う
oDom->"load" url ; URLを指定する時
oRoot = oDom("documentElement")
//RSSが存在するかチェック
//戻り値: 存在しない場合0が返る
#defcfunc rsschek
if oRoot("tagName")!="rdf:RDF" :return 0
return 1
//RSSのタイトル返す
#defcfunc rsstitle
comres elm_ch
oDom->"getElementsByTagName" "title"
node = elm_ch("item",0)
node2 = node("firstChild")
return node2("nodeValue")
//RSSのリンク先を返す
#defcfunc rsslink
comres elm_link
oDom->"getElementsByTagName" "link"
node = elm_link("item",0)
node2 = node("firstChild")
link = node2("nodeValue")
return link
//RSSのデータを配列変数に代入
//p1: 読みこむ文字列型配列変数(関数内初期化)
//p2: 最低の読み込む行数(0の場合デフォルト値)
#deffunc rssload array p1, int p2
max=elm_ch("length")
if p2=0:max=15:else:{
if max>11 : max=11
}
//一応このくらいは確保しておく。
sdim p1,64,15,3
repeat max-1
i=cnt+1
node = elm_ch("item",i)
node2 = node("firstChild")
p1(cnt,0)=node2("nodeValue") //アイテムのタイトル
node = elm_link("item",i)
node2 = node("firstChild")
link = node2("nodeValue")
p1(cnt,1)=link //URL
loop
return
#global
#define global WM_COMMAND 0x0111 //メニューアイテムの選択・コントロールからの通知
#define global ctype LOWORD(%1) (%1 & 0xFFFF) //下位ワード値を取得
#define global ctype HIWORD(%1) ((%1 >> 16 ) & 0xFFFF) //下位ワード値を取得
oncmd gosub *ON_WM_COMMAND,WM_COMMAND
rssset "http://hspwiki.nm.land.to/?cmd=rss&ver=1.0"
if rsschek()=0:dialog "エラー"
mes rsstitle()
mes rsslink()
rssload list,15
sdim strlist,64
repeat length(list)
strlist+=list(cnt,0)+"\n"
loop
objsize 200
listbox ilist,100,strlist
hlist=objinfo(stat,2)
stop
*ON_WM_COMMAND
if lparam=hlist{
if HIWORD(wparam)=2{
exec list(ilist,1),16
}
}
return