WebBrowser自動填滿開啟檔案對話方塊

來源:互聯網
上載者:User

標籤:style   class   code   http   tar   ext   

WebBrowser自動填滿開啟檔案對話方塊

2013年06月24日 ⁄ 代碼 ⁄ 共 1456字 ⁄ 字型大小 小 中 大 ⁄ 暫無評論 ⁄ 閱讀 882 views 次

在使用WebBrowser編寫自動表單填寫軟體的時候,不知道大家是否遇到國填寫檔案選擇表單的情況。遇到這種情況的時候,無法直接隊Html元素賦值,必須類比手工選擇的辦法(是否有其它解決辦法,不得而知),下面我們來說一下我的解決辦法,如下:

1、先說一下正常表單的填寫方式,在Delphi+WebBrowser的環境下,可採用如下代碼:

1

WebBrowser.OleObject.document.all.item(‘XXX‘, 0).value :=xxx;

2、針對於檔案選擇表單,我們可以先類比一下點擊,開啟檔案選擇對話方塊:

1

WebBrowser.OleObject.document.all.item(‘click‘, 0).value;

3、然後我們採用枚舉子表單的辦法,找到檔案輸入位置,及"確定"按鈕,以類比選擇檔案:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

//...

function EnumProc(Hwnd: THandle; LB: LongInt): Boolean; stdcall;

//...

function EnumProc(Hwnd: THandle; LB: LongInt): Boolean; stdcall;

var CName: array[0..255] of char;

  path: string;

  i: integer;

begin

  GetClassName(Hwnd, CName, 255);

  if CName = ‘Edit‘ then

  begin

    path := extractfilepath(Application.ExeName) + ‘檢索\‘ + nameStr + ‘.bmp‘;

    for i := 1 to length(path) do

    begin

      PostMessage(Hwnd, WM_CHAR, WPAram(path[i]), 1);

    end;

    //次數類比選擇檔案,就是將檔案的位置填寫到選擇框內。

  end;

  if (TName = ‘開啟(&O)‘) or (TName =‘確定‘) then

  begin

    PostMessage(Hwnd, WM_LBUTTONDOWN, 0, 0);

    PostMessage(Hwnd, WM_LBUTTONup, 0, 0);

    //此處類比點擊

  end;

 

  Result := True;

end;

//...

Procedure FindWin();//調用

var Hwnd:THandle;

begin

 hwnd := FindWindow(nil, Title);

 //Title為檔案選擇視窗標題

 if Hwnd <> 0 then

 begin

   EnumChildWindows(Hwnd, @EnumProc, lp);

 end;

end;

3、需要注意事項:

 

上傳檔案表單對話方塊

a、選擇檔案對話方塊的視窗標題,在不同的IE核心下是不相同的,我在Win7及Xp上測試是兩種分別為"選擇文   件"、"選擇要負載檔案"。
b、在類比填寫的時候,需要注意,在提示開啟檔案的時候,代碼的運行是暫停,也就是說你必須線上程中進行類比開啟。

c、在檔案名稱輸入的時候,不要用SetWindowText函數,這個函數無法實現,只能採用發送WM_CHAR訊息的方式,類比字元輸入。
4、最後告誡大家,如果沒有特殊的密碼編譯演算法,或者其它限制,盡量直接採用Http協議來提交表單,否則有一些東西太過於麻煩。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.