HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0831
Flagranceエラーの理由が分からず困ってます2解決


Flagrance

リンク

2015/8/31(Mon) 19:33:10|NO.71178

現在OSを作っているのですが、
どうしてもエラーが発生してしまいます

IEのソースを使っています

なにが原因なのでしょうか?


#uselib "user32.dll" #func SetWindowLong "SetWindowLongA" int,int,int #func GetWindowLong "GetWindowLongA" int,int #define PBS_MARQUEE 0x08 #define PBM_SETMARQUEE 0x040A #define GWL_STYLE (-16) #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define PBM_SETRANGE 0x0401 #define PBM_SETPOS 0x0402 #define ctype MAKELPARAM(%1,%2) (%1 | %2<<16) winobj "msctls_progress32","",0,WS_CHILD | WS_VISIBLE,640,20;←"300,12"の数値を変えることで、プログレスバーの長さや高さを調節することができる hProgress = objinfo(stat,2) ;------------------------ダウンロード中------------------------------- sendmsg hProgress ,PBM_SETRANGE,0,MAKELPARAM(0,100) GetWindowLong hProgress , GWL_STYLE SetWindowLong hProgress , GWL_STYLE ,stat | PBS_MARQUEE sendmsg hProgress ,PBM_SETMARQUEE,1,2 mes"ロード中..." wait 20 await 8000;この数値を変えることで、「準備中」速さを変えることができる 初期40000 ;------------------------インストール中------------------------------- sendmsg hProgress ,PBM_SETMARQUEE,0,0 GetWindowLong hProgress , GWL_STYLE SetWindowLong hProgress , GWL_STYLE,stat ^PBS_MARQUEE pos 100,20 mes"インストール中..." repeat 100,1 sendmsg hProgress ,PBM_SETPOS,cnt,0 if cnt = 20 :wait 200 if cnt = 50 :wait 300 if cnt = 80 :wait 200 if cnt = 90 :wait 200 if cnt = 99 :wait 300 await 700;この数値を変えることで、「インストール中」の長さを変えることができる 初期5000 loop wait 300 *install_syuuryou cls pos 210,200 mes"インストールが完了しました" mes mes mes"  再起動します" pos 250,260 stop *brouzer #include "user32.as" #include "comctl32.as" #define WS_CLIPSIBLINGS 0x04000000 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define TCIF_TEXT 0x0001 #define TCM_FIRST 0x1300 #define TCM_INSERTITEMA (TCM_FIRST + 7) #define TCM_GETCURSEL (TCM_FIRST + 11) #define TCM_ADJUSTRECT (TCM_FIRST + 40) #define SW_HIDE 0 #define SW_SHOW 5 #enum BTID_BACK = 0 #enum BTID_REFRESH #enum BTID_FORWARD #enum BTID_HOME #enum BTID_CLOSE #define WM_NOTIFY 0x004E #define TCN_FIRST (-550) #define TCN_SELCHANGE (TCN_FIRST - 1) #const TCM_DELETEITEM $1308 screen 4,1300,700 onexit gosub *ws_end // タブコントロール作成 InitCommonControls pos 40,0:winobj "systabcontrol32", "", 0, WS_CLIPSIBLINGS|WS_CHILD|WS_VISIBLE, ginfo_sx-40,30, 0, 0 hTab = objinfo_hwnd(stat) if hTab == 0 : end //タブ操作ボタン dim tci, 7 sdim buf, 10 ,5 buf = "Google","Yahoo" objsize 20,20 pos 0,0:button gosub"+",*newtab pos 20,0:button gosub"-",*clausetab //URL入力ボックス sdim url pos 275,30 input url,950,21 objsize 75,22 pos 1225,30 button gosub"検索",*new_int // タブアイテム追加 repeat 2 tci = TCIF_TEXT, 0, 0, varptr(buf.cnt), strlen(buf.cnt) sendmsg hTab, TCM_INSERTITEMA, cnt, varptr(tci) loop tabcount = 2 // ボタン作成 dim rect, 4 sendmsg hTab, TCM_ADJUSTRECT, 0, varptr(rect) btw = 50 bth = 24 buf = "戻る", "更新", "進む", "HOME", "閉じる" pos rect.0, rect.1 repeat 5 if cnt == 3 : btw = 60 objsize btw, bth button buf.cnt, *lb_button if cnt == 0 : btFirst = stat //最初のボタンIDを保存 pos ginfo_cx+btw, rect.1 loop // IEオブジェクト作成 dimtype ie, vartype("comobj"), 5 sdim urls, 1024, 2 urls.0 = "http://www.google.co.jp/" urls.1 = "http://www.yahoo.co.jp/ repeat 2 pos rect.0, rect.1+bth axobj ie.cnt, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 if cnt == 0 : ieFirst = stat // 最初のIEのオブジェクトIDを保存 if cnt == 1 : ShowWindow objinfo_hwnd(stat), SW_HIDE // 二つ目のIEを非表示に tmp = ie.cnt // ie.cnt->"navigate"だとエラー??? tmp->"navigate" urls.cnt delcom tmp loop ieID = 0 //アクティブなタブID activeIE = ie.ieID //アクティブなIEオブジェクト comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する oncmd gosub *lb_OnNotify, WM_NOTIFY title "読み込み中..." *lb_button // ボタンが押された switch stat-btFirst case BTID_BACK activeIE->"GoBack" swbreak case BTID_REFRESH activeIE->"Refresh2" 3 swbreak case BTID_FORWARD activeIE->"GoForward" swbreak case BTID_HOME activeIE->"Navigate" urls.ieID swbreak case BTID_CLOSE delcom activeIE gosub *clausetab swbreak swend stop *lb_OnNotify dupptr nmhdr, lparam, 12 // タブが変更された if nmhdr.0 = hTab & nmhdr.2 = TCN_SELCHANGE { ShowWindow objinfo_hwnd(ieID+ieFirst), SW_HIDE // アクティブだったタブのIEを非表示に sendmsg hTab, TCM_GETCURSEL, 0, 0 // アクティブになったタブのID取得 ieID = stat ShowWindow objinfo_hwnd(ieID+ieFirst), SW_SHOW // アクティブになったタブのIEを表示 // activeIEも変更する delcom activeIE activeIE = ie(ieID) comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する if activeIE("readyState") = 4 {//読み込みを終えたときにタイトルを取得する pDoc= activeIE("Document") title pDoc("Title") }else{ } } return *event dispid = comevdisp(ie_event) if dispid=252{ pDoc = activeIE("Document") title pDoc("Title") //アクティブのつまみ名を変更する命令 return } return *newtab //タブを追加する命令 tab__ = "タブ" tci = TCIF_TEXT, 0, 0, varptr(tab__), strlen(tab__) sendmsg hTab, TCM_INSERTITEMA, tabcount, varptr(tci) pos rect.0, rect.1+bth axobj ie.tabcount, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 tmp = ie.tabcount // ie.cnt->"navigate"だとエラー??? urls.tabcount = "http://www.google.co.jp/" tmp->"navigate" "http://www.google.co.jp/" delcom tmp tabcount++ return *clausetab //アクティブのタブを閉じる命令 sendmsg hTab, TCM_DELETEITEM, ieID, 0 /*for k, ieID, tabcount - 1 ie(k) = ie(k + 1) next delcom ik(tabcount - 1) tabcount--*/ return *new_int tab__ = "タブ" tci = TCIF_TEXT, 0, 0, varptr(tab__), strlen(tab__) sendmsg hTab, TCM_INSERTITEMA, tabcount, varptr(tci) pos rect.0, rect.1+bth axobj ie.tabcount, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 tmp = ie.tabcount // ie.cnt->"navigate"だとエラー??? urls.tabcount = url tmp->"navigate" url delcom tmp tabcount++ return *ws_end if wparam=0 :end gsel 4,-1 return

こんな感じのソースです
よろしくお願いします



この記事に返信する


Noa

リンク

2015/8/31(Mon) 20:22:19|NO.71180

#uselib "user32.dll"
#func SetWindowLong "SetWindowLongA" int,int,int #func GetWindowLong "GetWindowLongA" int,int

は「#include "user32.as"」ですでにSetWindowLongとGetWindowLongは呼び出せるようになっているので不要です。

また
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
はわざわざ二回定義する必要はありません。

またラベル「*browzer」の前のstopは余計です。

まとめるとインストールをしている様な表示をする部分とIEコンポーネントのブラウザ部分を別別に書いて組み合わせたようですので、
組み合わせる際はマクロ名や命令名等が衝突しないようにすることをこころがけましょう。
わたしはプログラミングは不得意ですので人のことはいえませんが。



Flagrance

リンク

2015/8/31(Mon) 20:31:26|NO.71181

ありがとうございます!
うまくいきました!
自分、まだまだですね(笑)



ONION software Copyright 1997-2021(c) All rights reserved.