VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請教 FindWindowEx 使用,取得的字串只有 "導覽列" 及 空白 ,拜託,有空前輩,幫我看一下,謝謝

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
ms0800



註冊時間: 2004-07-23
文章: 65


第 1 樓

發表發表於: 星期二 十二月 25, 2012 2:10 pm    文章主題: 請教 FindWindowEx 使用,取得的字串只有 "導覽列" 及 空白 ,拜託,有空前輩,幫我看一下,謝謝 引言回覆

LOCAL hwnd1,hwnd2,xstr

DECLARE INTEGER FindWindow IN WIN32API STRING cNull,STRING cWinName
DECLARE LONG FindWindowEx IN User32 LONG hWndParent, LONG hWndChild_Or_0123, STRING cClassName, STRING cCaptionText

DECLARE Integer SendMessage IN "user32" Integer, Integer, Integer, Integer
DECLARE LONG PostMessage IN User32 LONG hWnd, LONG uMsg, LONG wParam, LONG lParam
DECLARE INTEGER GetWindowText in Win32API integer, string @, integer

#DEFINE WM_CLOSE 0x0010

*.先用FindWindow(0,"IE標題") 找到你要的視窗的hwnd
*2.再用FindWindowEx()找到該視窗下的所有物件的hwnd
*3.再用GetWindowText()去取出 caption

WINCAPTION = 'VFP 愛用者社區 :: 首頁 - Windows Internet Explorer'

hWnd1 = findWindow(0 ,WINCAPTION)
hwnd2=0
DO WHILE hwnd1<>0
hwnd2 = FindWindowEx(hwnd1, hwnd2, 0, 0) && 找該視窗內hwnd2之下一個物件的hwnd (0從頭找)
if hwnd2 = 0
exit
endif
xstr=space(250)
=GetWindowText(hwnd2, @xstr, len(xstr)) && 取出該物件的 Caption (****** 可能就是你要的 *********)
xstr=UPPER(left(xstr, at(chr(0), xstr) - 1)) && 避開 chr(0)
&& xstr 取得的字串只有 "導覽列" 及 空白
ENDDO
RETURN
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 2 樓

發表發表於: 星期二 十二月 25, 2012 5:40 pm    文章主題: 引言回覆

你想要什麼的內容 ?
回頂端
檢視會員個人資料 發送私人訊息
ms0800



註冊時間: 2004-07-23
文章: 65


第 3 樓

發表發表於: 星期二 十二月 25, 2012 7:07 pm    文章主題: 引言回覆

MESSAGEBOX('想開啟網頁後,登入帳單及登入密碼欄位 都帶入 guest123 值',0)
oIE = CREATEOBJECT("internetexplorer.application")
oIE.Visible=.T.
oIE.NAVIGATE("https://gdd.trade.gov.tw/IUSL/Home/Login.asp?s=3")
RETURN
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 4 樓

發表發表於: 星期二 十二月 25, 2012 9:22 pm    文章主題: 引言回覆

從上面的搜尋,搜尋 CREATEOBJECT("InternetExplorer.Application")

可找到很多的範例
回頂端
檢視會員個人資料 發送私人訊息
ms0800



註冊時間: 2004-07-23
文章: 65


第 5 樓

發表發表於: 星期二 十二月 25, 2012 11:23 pm    文章主題: 引言回覆

不好意思,已經找過一些範例,不過很多看不懂,已經卡好幾天了
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 6 樓

發表發表於: 星期三 十二月 26, 2012 9:55 am    文章主題: 引言回覆

可先開啟該網頁,然後檢視原始碼,尋找 input , 或 button ,就可找到你要的資訊

試看看:
oIE = CREATEOBJECT('internetexplorer.application')
oIE.NAVIGATE("https://gdd.trade.gov.tw/IUSL/Home/Login.asp?s=3")

oIE.VISIBLE=.T.
DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO

oIE.DOCUMENT.all.txtAliasName.VALUE = "guest123"
oIE.DOCUMENT.all.txtPassword.VALUE="guest123"
回頂端
檢視會員個人資料 發送私人訊息
ms0800



註冊時間: 2004-07-23
文章: 65


第 7 樓

發表發表於: 星期三 十二月 26, 2012 12:53 pm    文章主題: 引言回覆

oIE.DOCUMENT.all.txtAliasName.VALUE = "guest123"
oIE.DOCUMENT.all.txtPassword.VALUE="guest123"
太感謝您了,可以帶入值了,不過 txtAliasName , txtPassword 在原始碼都找得到,
就是 oIE.DOCUMENT.all.txtPassword.VALUE 的all 找不到 能否告之,
另外 oIE.DOCUMENT.all.Submit.click() 出現錯誤,為何 ,如何修
拜託您了,因為還有其它網頁要做,謝謝您
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 8 樓

發表發表於: 星期三 十二月 26, 2012 2:12 pm    文章主題: 引言回覆

我也不大會

可google 查詢: DOM
(網頁文件物件模型),應該會對你有幫助
回頂端
檢視會員個人資料 發送私人訊息
ms0800



註冊時間: 2004-07-23
文章: 65


第 9 樓

發表發表於: 星期三 十二月 26, 2012 2:16 pm    文章主題: 引言回覆

感謝您,我再研究一下 DOM 謝謝
回頂端
檢視會員個人資料 發送私人訊息
Patrick Wu



註冊時間: 2007-01-03
文章: 223
來自: 台北市

第 10 樓

發表發表於: 星期三 十二月 26, 2012 4:35 pm    文章主題: 引言回覆

之前 承蒙 215001 & 各先進的指導 後學的做法如下 :
LOCAL M->REP_TIMES

oWS = Createobject("Wscript.Shell")
oIE = CREATEOBJECT("internetexplorer.application")
oIE.VISIBLE = .T.
oWS.AppActivate(oIE)
oIE.NAVIGATE("https://gdd.trade.gov.tw/IUSL/Home/Login.asp?s=3")

DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO

oIE.Document.getElementById("txtAliasName").Value = "guest123"
oIE.Document.getElementById("txtPassword").Value = "guest123"
oIE.Document.getElementById("txtPassword").FOCUS()
oIE.Document.getElementById("txtPassword").click()

INKEY(02)

STORE 1 TO M->REP_TIMES
DO WHILE M->REP_TIMES <= 2
oWS.SendKeys("{TAB}")
INKEY(0.1)
STORE M->REP_TIMES + 1 TO M->REP_TIMES
ENDDO

oWS.SendKeys("{ENTER}")
INKEY(02)
RELEASE oWS

IE 8 自動進入沒問題

oIE.Document.getElementById("Submit").click() &&& 此方式 有IE 版本的限制
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
ms0800



註冊時間: 2004-07-23
文章: 65


第 11 樓

發表發表於: 星期三 十二月 26, 2012 5:41 pm    文章主題: 引言回覆

Patrick Wu 前輩您的方法可行非常感謝,能否再請教如何開啟最大視窗

oIE.Width = SysMetric(1)
oIE.Height = SysMetric(2)
oIE.left = 0
oIE.TOP = 0
&& 能不能開啟網頁時,視窗就為最大, 如 VFP 裡
oIE.Windowstate = 2<---- 這行應該如何寫 ?
謝謝
回頂端
檢視會員個人資料 發送私人訊息
Patrick Wu



註冊時間: 2007-01-03
文章: 223
來自: 台北市

第 12 樓

發表發表於: 星期四 十二月 27, 2012 9:19 am    文章主題: 引言回覆

後學的做法如下 :
oIE.Width = SysMetric(1) &&& SYSMETRIC(1) Screen width 螢幕寬度
                     (2) Screen height. 螢幕高度
oIE.Height = SysMetric(2) - SysMetric(9) - (SysMetric(13) * 2)
       &&& (9) => Height of window title (13) Height of
          DOUBLE or PANEL window frame

或是 全螢幕
oIE.FullScreen = .T.
oIE.VISIBLE=.T.
oWS.AppActivate(oIE) &&& => 要在 oIE.Visible=.T. 之後
SET FOCUS() TO oIE => oWS.SendKeys("{ENTER}") 才會在此 oIE 上

DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO

之後再

oIE.Width = SysMetric(1)
oIE.Height = SysMetric(2) - SysMetric(9) - (SysMetric(13) * 2)
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
ms0800



註冊時間: 2004-07-23
文章: 65


第 13 樓

發表發表於: 星期四 十二月 27, 2012 9:48 am    文章主題: 引言回覆

Patrick Wu 前輩
不好意思,上述測的結果,好像沒我要的效果,我想要 開啟 IE 時網頁就最大化,還是要有抬頭,不知如何做?謝謝
回頂端
檢視會員個人資料 發送私人訊息
ms0800



註冊時間: 2004-07-23
文章: 65


第 14 樓

發表發表於: 星期三 一月 02, 2013 1:46 pm    文章主題: 引言回覆

找到了,
DECLARE Integer SendMessage IN "user32" Integer, Integer, Integer, Integer
SendMessage(oIE.HWnd, 274,61488,0) && 最大化

加入上述兩行,即可讓開啟的網頁為最大化,感謝大家
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作