|
いつもお世話になっております。 以前教えていただいたのを快適に使用させていただいていたのですが、 いつの間にかエラーが出て止まるようになっていました。 変更したのは、ipアドレスくらいなのですが、どうすれば元のように動きますでしょうか? (IE.Navigateのipアドレスの部分はきちんと直しました。開くのは問題ありません。) ご教授願いませんでしょうか?
エラーメッセージ //COM_Error:Access violation at address 00680641 in module 'UWSC.exe'. Read of address 00000000 48行目: リンク = IE.document.frames.item["FrMenu"].document.getElementsByTagName("a")
Public IE DIM 選択 SELECT SLCTBOX(SLCT_BTN or SLCT_STR,0,"項目選択","開くのみ","エリア別一括印刷","■終了■") CASE "開くのみ" Pたぴた開く CASE "エリア別一括印刷" 選択 = "エリア別一括印刷" CASE "終了" EXITEXIT selend
IFB 選択 = "エリア別一括印刷" THEN dim セレクト SELECT SLCTBOX(SLCT_BTN or SLCT_STR,0,"印刷","A社") CASE "A社" セレクト = "A社" selend
hashtbl アドレス dim リンク = ie.document.frames.item("FrMenu").document.getElementsByTagName("a")
dim 店id = fopen("",F_READ or F_WRITE)// テンポラリーファイル作成 Fput(店id,企業体分類, F_ALLTEXT)// ファイル形式で利用 for リンク in getoleitem(リンク) for i = 1 to fget(店id,F_LINECOUNT) ifb セレクト= fget(店id,i,2) then ifb リンク.innerText = fget(店id,i,1) then アドレス[fget(店id,i,1)] = リンク.href endif endif next next fclose(店id)
for k in アドレス BusyWait() ie.navigate(アドレス[k]) BusyWait() ie.ExecWB(6, 0) // 印刷ダイアログ sleep(0.1) id = GETID("印刷", "#32770", -1) sleep(0.1) CLKITEM(id, "印刷(P)", CLK_BTN) sleep(0.5) next
IE.QUIT ENDIF
/////////////////////////////////////////////////////////////////////// procedure Pたぴた開く() IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True setOleEvent() IE.Navigate("http://172.27.5.5/tapita/home.html") BusyWait() IESetData(IE,"a","id") // TEXT IE.Navigate("http://172.27.5.5/tapita/home.html?menu=uent&user=a") // INPUT BusyWait() IESetData(IE,True,"","ログイン") // BUTTON BusyWait() IELink(IE,"遠方工事") BusyWait() id = GETID("たぴた - Internet Explorer", "IEFrame", -1) CTRLWIN(id, MAX) FEND
DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32 CONST WM_ACTIVATE = $06 Public Pub_url, Pub_docc, Pub_BeforNav_cnt, Pub_DocComp_cnt, Pub_inp_flg Procedure BusyWait() Sleep(0.3) tm = GetTime() repeat ifb GetTime() - tm > 90 // TimeOut Pub_docc = ""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 IE.Navigate(Pub_url) tm = GetTime() endif Sleep(0.2) ifb Pub_inp_flg Pub_inp_flg = False continue endif if IE.busy then continue if Pub_url = "" then break // No read if (Pos("*"+Pub_url+"*",Pub_docc)) or (Pos("*"+IE.LocationURL+"*",Pub_docc)) or (Pub_BeforNav_cnt<=Pub_DocComp_cnt) then else continue errflg = False if IE.document.title = "503 Unavailable" then errflg = True if IE.document.title = "Service Unavailable" then errflg = True if IE.document.title = "503 Service Temporarily Unavailable" then errflg = True ifb errflg Sleep(90) // 503: Wait&Retry tm = 0 continue endif Sleep(0.3) until ! Pub_inp_flg Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 SendMessageA(IE.Hwnd, WM_ACTIVATE, 0, 0) Fend Procedure setOleEvent() OleEvent(IE, "DWebBrowserEvents2", "BeforeNavigate2", "fucBeforNav") OleEvent(IE, "DWebBrowserEvents2", "DocumentComplete", "fucDocComp") OleEvent(IE, "DWebBrowserEvents2", "OnQuit", "fucQuit") Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0; Pub_inp_flg=False Fend Procedure fucBeforNav() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) if Pub_url="" then Pub_url = ""+EVENT_PRM[1] Pub_BeforNav_cnt = Pub_BeforNav_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucDocComp() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) Pub_docc = Pub_docc + "*"+EVENT_PRM[1]+"*" Pub_DocComp_cnt = Pub_DocComp_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucQuit() ExitExit Fend Procedure PopupWin(title, btn, no=-1, str="") id = Getid(title,"#32770",10) Sleep(1) if no>=0 then Sendstr(id,str,no,True) Clkitem(id,btn) Fend
TEXTBLOCK 企業体分類 ?鰍`社 厚木店,A社 ENDTEXTBLOCK
|
No.2216 2016/03/16(Wed) 21:52:53
|
☆ Re: ie.document.frames.itemエラー / umiumi |
|
No.2219 2016/03/17(Thu) 00:51:19
|
|
☆ Re: ie.document.frames.itemエラー / sen |
|
|
フレーム間のアドレスは、どうやったら調べられるのでしょうか?
|
No.2220 2016/03/17(Thu) 01:17:28
|
|
☆ Re: ie.document.frames.itemエラー / umiumi |
|
|
home.html の中で フレーム(FrMenu) の定義がされているはずです。 そのフレームのパスを確認してください。
|
No.2228 2016/03/17(Thu) 23:28:41
|
|
☆ Re: ie.document.frames.itemエラー / SEN |
|
|
下記の様に書かれているのですが、どうなのでしょうか?
home.html
<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>たぴた</TITLE> </HEAD> <BODY> <P align="right"><FONT SIZE=-1><B>Webデータベース</FONT> <FONT COLOR="#008B45">たぴた</B></FONT> <CENTER><H1>MENU</H1></CENTER><HR> <table align="center" border=0> <TR><TD><H3><A HREF="view.html?menu=top&db=899395fb8d488e96">遠方工事</a></H3></TD></TR> <TR><TD><H3><A HREF="admin.html">管理画面</a></H3></TD></TR> </TABLE><HR> </BODY> </HTML>
home.html?menu=uent&user=a
<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>たぴた</TITLE> </HEAD> <FRAMESET COLS="200,*"> <FRAME SRC="view.html?menu=list&db=899395fb8d488e96" NAME="FrMenu"> <FRAME SRC="view.html?menu=title&db=899395fb8d488e96" NAME="FrMain"> </FRAMESET> </HTML>
|
No.2235 2016/03/19(Sat) 19:14:53
|
|
☆ Re: ie.document.frames.itemエラー / umiumi |
|
|
データベースを参照しているようで、それが別の場所なのでは。 社内システムだと思うので、これ以上はシステム管理者の方に尋ねてください。
あるいは以下を試してみる IEGETSRCでソースを取得しフォームに書き出し利用 form = CREATEFORM("about:blank", "", True, FOM_FORMHIDE) form.document.write(IEGETSRC(IE, "BODY", 1)) // 数字は試して合わせてください dim リンク = form.document.getElementsByTagName("a")
|
No.2242 2016/03/20(Sun) 21:20:54
|
|