| 上一篇主題 :: 下一篇主題 | 
	
	
		| 發表人 | 內容 | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 1 樓
 
 | 
			
				|  發表於: 星期日 八月 30, 2009 2:52 am    文章主題: 如何用程式控制 ie 並自動填寫表單 ?? |   |  
				| 
 |  
				| myword = Createobject("InternetExplorer.Application") myword.Navigate("http://mail.google.com/mail/?shva=1#inbox")
 myword.visible = .t.
 以上程序會開啟ie,並停留於gmail登入畫面
 請問有辦法讓程式自動填寫帳號,密碼,及按下登入鍵嗎?
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| 小賴 
 
 
 註冊時間: 2004-12-27
 文章: 477
 
 
 第 2 樓
 
 | 
			
				|  發表於: 星期一 八月 31, 2009 9:23 am    文章主題: |   |  
				| 
 |  
				| oIE = CREATEOBJECT("InternetExplorer.Application") oIE.visible = .T.
 oIE.Navigate("http://mail.google.com/mail/?shva=1#inbox")
 DO WHILE oIE.ReadyState <> 4  && (! oIE.Busy)
 DoEvents
 ENDDO
 oDo = oIE.Document
 oName = oDo.getElementById("Email")
 oName.value = "AAAA"    && 帳號
 oPass = oDo.getElementById("Passwd")
 oPass.value = "1234"      && 密碼
 oSubmit = oDo.getElementsByTagName("Input")
 oSubmit.Item(13).Click   && 登入
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| Patrick Wu 
 
 
 註冊時間: 2007-01-03
 文章: 228
 來自: 台北市
 
 第 3 樓
 
 | 
			
				|  發表於: 星期一 八月 31, 2009 9:33 am    文章主題: |   |  
				| 
 |  
				| 後學的作法如下 供 先進參考 : 
 oIE = CREATEOBJECT('internetexplorer.application')
 oIE.NAVIGATE('http://www.cilink.com.tw/')
 oIE.VISIBLE=.F.  &&&& 帳號 密碼 的畫面 <<< 不須 >>>顯示
 DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
 ENDDO
 
 oIE.DOCUMENT.FORMS.form1.userid.VALUE = "3417845"
 oIE.DOCUMENT.FORMS.form1.userpwd.VALUE = "e251488"
 
 oIE.DOCUMENT.FORMS.form1.submit.CLICK
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 4 樓
 
 | 
			
				|  發表於: 星期二 九月 01, 2009 3:03 pm    文章主題: |   |  
				| 
 |  
				| 謝謝指導!! 經測試:
 2樓前輩的方法可以成功登入指定信箱
 但登入後使用者如果沒有先登出,而直接關閉ie視窗,
 再次執行2樓前輩的程式碼,則會出現錯誤:oNEME is not an object.
 但仍然可登入指定的gmail信箱,只是會有錯誤訊息而已!!
 
 
 
 3樓前輩的方法會出現錯誤
 以下3行列會出現錯誤: OLE error code 0x80020006:UnKnown name
 oIE.DOCUMENT.FORMS.form1.userid.VALUE = "3417845"
 oIE.DOCUMENT.FORMS.form1.userpwd.VALUE = "e251488"
 oIE.DOCUMENT.FORMS.form1.submit.CLICK
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| Patrick Wu 
 
 
 註冊時間: 2007-01-03
 文章: 228
 來自: 台北市
 
 第 5 樓
 
 | 
			
				|  發表於: 星期三 九月 02, 2009 8:27 am    文章主題: |   |  
				| 
 |  
				| 給 ufochen 先進的是範列 裡面的內容要看自我的須求 oIE = CREATEOBJECT('internetexplorer.application')
 oIE.NAVIGATE('http://postserv.post.gov.tw/webpost/CSController?cmd=POS4001_1&_MENU_ID=189&_SYS_ID=D&_ACTIVE_ID=190')
 oIE.VISIBLE=.T.
 
 DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
 ENDDO
 
 oIE.DOCUMENT.FORMS.MainForm.MAILNO1.VALUE = "96373510004610402418"
 oIE.DOCUMENT.FORMS.MainForm.cmd.value="POS4001_2"
 oIE.DOCUMENT.FORMS.document.MainForm.submit()
 
 這是後學昨天寫的 掛號信 自動查詢系統 給  ufochen 先進參考
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 6 樓
 
 | 
			
				|  發表於: 星期三 九月 02, 2009 3:34 pm    文章主題: |   |  
				| 
 |  
				|  	  | Patrick Wu 寫到: |  	  | 給 ufochen 先進的是範列 裡面的內容要看自我的須求 oIE = CREATEOBJECT('internetexplorer.application')
 oIE.NAVIGATE('http://postserv.post.gov.tw/webpost/CSController?cmd=POS4001_1&_MENU_ID=189&_SYS_ID=D&_ACTIVE_ID=190')
 oIE.VISIBLE=.T.
 
 DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
 ENDDO
 
 oIE.DOCUMENT.FORMS.MainForm.MAILNO1.VALUE = "96373510004610402418"
 oIE.DOCUMENT.FORMS.MainForm.cmd.value="POS4001_2"
 oIE.DOCUMENT.FORMS.document.MainForm.submit()
 
 這是後學昨天寫的 掛號信 自動查詢系統 給  ufochen 先進參考
 | 
 
 抱歉!是我的錯!! 我把 oIE.NAVIGATE 的值修改為gmail登入的位址,直接進行測試,所以才會出錯!!
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 7 樓
 
 | 
			
				|  發表於: 星期一 八月 24, 2020 4:50 am    文章主題: |   |  
				| 
 |  
				| ieMonitor = Createobject("InternetExplorer.Application") ieMonitor.Navigate("http://220.134.1.202")
 ieMonitor.Visible = .T.&& 至此...IE 畫面出現
 *WAIT "" WINDOW TIMEOUT 0.5
 Do While ieMonitor.BUSY Or ieMonitor.READYSTATE <> 4
 DoEvents
 Enddo
 ieMonitor.Document.getElementById("username").Value= "admin"
 ieMonitor.Document.getElementById("password").Value= "12345678"
 
 上述代碼可以正確開啟IE並自動填入帳號與密碼,但是當我按下登入鍵時,卻提示"帳號不得空白",經測試後發現帳號與密碼的輸入框雖然有填入了,但系統卻視為空白的,一定要手動填入才行,我把分別把帳號與密碼各刪去一個字再補上,就可以登入了,請教各位先進,有辦法自動登入嗎?
 另一個問題是,如果網址連不上會出現錯誤訊息!如何防止?
 
 ufochen 在 星期一 九月 14, 2020 12:21 am 作了第 1 次修改
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| garfield Site Admin
 
  
 註冊時間: 2003-01-30
 文章: 2160
 
 
 第 8 樓
 
 | 
			
				|  發表於: 星期一 八月 24, 2020 4:36 pm    文章主題: |   |  
				| 
 |  
				| 現在的瀏覽器基於安全性原則已不能用 getElementById("XXX").Value 的方式來自動填值到網頁裡. _________________
 利用>>搜尋<<的功能會比問的還要快得到答案.
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 9 樓
 
 | 
			
				|  發表於: 星期一 八月 24, 2020 6:39 pm    文章主題: |   |  
				| 
 |  
				|  	  | garfield 寫到: |  	  | 現在的瀏覽器基於安全性原則已不能用 getElementById("XXX").Value 的方式來自動填值到網頁裡. | 
 剛剛試了用Mouse AT 指令移到輸入框再用KEYBOARD "admin" 也不行,看來無解了
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| garfield Site Admin
 
  
 註冊時間: 2003-01-30
 文章: 2160
 
 
 第 10 樓
 
 | 
			
				|  發表於: 星期二 八月 25, 2020 3:50 pm    文章主題: |   |  
				| 
 |  
				| 剛才想到其實還有其它方式 oWS = CreateObject("WScript.Shell")
 oPaint = oWS.Exec("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
 *暫時沒想到如何填入網址, 先手動輸入網址 http://220.134.1.201:100 , 不然改用 Createobject("InternetExplorer.Application")可能也可以吧
 inkey(0)
 ? oWS.AppActivate(oPaint.ProcessID),oWS.SendKeys("admin"),oWS.SendKeys( "{TAB}" ),inkey(0.2),oWS.SendKeys("1234"),oWS.SendKeys( "{Enter}" )
 _________________
 利用>>搜尋<<的功能會比問的還要快得到答案.
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| Patrick Wu 
 
 
 註冊時間: 2007-01-03
 文章: 228
 來自: 台北市
 
 第 11 樓
 
 | 
			
				|  發表於: 星期二 八月 25, 2020 3:58 pm    文章主題: |   |  
				| 
 |  
				| 給 Ufochen 先進參考 
 LOCAL M->REP_TIMES
 THISFORM.VISIBLE = .F.
 _SCREEN.WindowState = 1
 oWS = Createobject("Wscript.Shell")
 oIE = CREATEOBJECT( "internetexplorer.application" )
 
 oIE.TOP = 0
 oIE.LEFT = 0
 oIE.Visible = .T.
 
 oIE.NAVIGATE( "http://postserv.post.gov.tw/pstmail/main_mail.html" )
 
 DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
 ENDDO
 
 INKEY(05)
 
 ieMonitor.Document.getElementById("username").Value= "admin"
 ieMonitor.Document.getElementById("password").Value= "12345678"
 改用以下方是輸入 應該 OK
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->RGT_C_A + M->RGT_CD2)
 oWS.SendKeys(SUBSTR(M->RGT_C_A + M->RGT_CD2 , M->REP_TIMES , 01))
 INKEY(0.1)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 
 重點應該是在 INKEY(0.1) 再填入下一個字
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| Patrick Wu 
 
 
 註冊時間: 2007-01-03
 文章: 228
 來自: 台北市
 
 第 12 樓
 
 | 
			
				|  發表於: 星期二 八月 25, 2020 5:00 pm    文章主題: |   |  
				| 
 |  
				| 給 Ufochen 先進參考 因 帳 & 密 不符 請自行套用 
 ieMonitor = Createobject("InternetExplorer.Application")
 ieMonitor.Navigate("http://220.134.1.201:100")
 ieMonitor.Visible = .T.&& 至此...IE 畫面出現
 Do While ieMonitor.BUSY Or ieMonitor.READYSTATE <> 4
 DoEvents
 
 STORE "admin" TO M->A
 STORE "12345678" TO M->B
 
 INKEY(05)
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->A)
 ieMonitor.Document.getElementById("username").Value = ieMonitor.Document.getElementById("username").Value + SUBSTR(M->A , M->REP_TIMES , 01)
 INKEY(0.5)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->B)
 ieMonitor.Document.getElementById("password").Value = ieMonitor.Document.getElementById("password").Value + SUBSTR(M->A , M->REP_TIMES , 01)
 INKEY(0.5)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| ufochen 
 
 
 註冊時間: 2003-09-17
 文章: 166
 
 
 第 13 樓
 
 | 
			
				|  發表於: 星期二 八月 25, 2020 8:37 pm    文章主題: |   |  
				| 
 |  
				|  	  | Patrick Wu 寫到: |  	  | 給 Ufochen 先進參考 因 帳 & 密 不符 請自行套用 
 ieMonitor = Createobject("InternetExplorer.Application")
 ieMonitor.Navigate("http://220.134.1.201:100")
 ieMonitor.Visible = .T.&& 至此...IE 畫面出現
 Do While ieMonitor.BUSY Or ieMonitor.READYSTATE <> 4
 DoEvents
 
 STORE "admin" TO M->A
 STORE "12345678" TO M->B
 
 INKEY(05)
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->A)
 ieMonitor.Document.getElementById("username").Value = ieMonitor.Document.getElementById("username").Value + SUBSTR(M->A , M->REP_TIMES , 01)
 INKEY(0.5)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->B)
 ieMonitor.Document.getElementById("password").Value = ieMonitor.Document.getElementById("password").Value + SUBSTR(M->A , M->REP_TIMES , 01)
 INKEY(0.5)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 | 
 謝謝Patrick Wu熱心指導,上述代碼可以把帳號跟密碼填入,但按下登入鍵時,系統提示帳號不得空白,顯然非手動KEY入的都被視為空白,我試著讓上述代碼自動填入,然後再手動刪去最後一個字"n",再Key入一個"n",系統就可以接受了,我想朝模擬鍵盤的方向試試或許可行
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		| Patrick Wu 
 
 
 註冊時間: 2007-01-03
 文章: 228
 來自: 台北市
 
 第 14 樓
 
 | 
			
				|  發表於: 星期三 八月 26, 2020 10:18 am    文章主題: |   |  
				| 
 |  
				| 用 oWS = Createobject("Wscript.Shell")
 .
 .
 
 oWS.SendKeys("{TAB}") 幾次(請自己算一下) 跳到 getElementById("username")
 .
 
 STORE 1 TO M->REP_TIMES
 DO WHILE M->REP_TIMES <= LEN(M->A)
 oWS.SendKeys(SUBSTR(M->A , M->REP_TIMES , 01))
 INKEY(0.1)
 STORE M->REP_TIMES + 1 TO M->REP_TIMES
 ENDDO
 
 試試
 |  | 
	
		| 回頂端 |  | 
	
		|  | 
	
		|  |