杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2822|回复: 0

安装过程显示网页基本实例

[复制链接]
发表于 2017-5-30 05:32:59 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x


1


  1. ; -- Example.iss --
  2. ; restools
  3. ; http://restools.hanzify.org
  4. ; 插件名:webctrl.dll
  5. ; 插件功能:网络连接检测,创建网页页面。
  6. ; 插件大小:9 KB

  7. ; V2 增强操作函数,可以同时创建多达 256 个 Web 窗口。
  8. ; V2 例子中演示了建立一个小型浏览器以体现该版本中的函数如何使用。比起 V1 重点在于能同时创建多个 Web 窗口。
  9. ; V2.1 删除 InitWebCtrl 和 UninitWebCtrl 函数, 增加 FreeAllWebWnd. 改善某些情况下不能卸载插件的问题.

  10. [Setup]
  11. AppName=My Application
  12. AppVersion=1.5
  13. DefaultDirName={pf}\My Application
  14. OutputDir=userdocs:Inno Setup Examples Output

  15. [Files]
  16. Source: "webctrl.dll"; Flags: dontcopy
  17. Source: "file.htm"; Flags: dontcopy
  18. Source: "wizard.htm"; Flags: dontcopy
  19. Source: "1.gif"; Flags: dontcopy
  20. Source: "2.gif"; Flags: dontcopy
  21. Source: "3.gif"; Flags: dontcopy

  22. [code]
  23. function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall';
  24. function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
  25. function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
  26. ////////////////////////////////////////////////////////////////////////////////////
  27. // 检查网络连接是否正常
  28. // lpszURL: 网址,如果这里设置为空网址,检测将会简单的检查网络状态,返回状态标志
  29. // lpdwState: 状态标志,以下是标志值的解释
  30. // 注意:当不用网址来检测网络连接时,只是检查当前是否符合网络连接的条件,但是并不等于
  31. //       能正常连接 Internet,但是这种检测方式相当迅速,如果使用网址连接测试,如果网
  32. //       络处于正常连接,检查速度也相当快,但是如果非正常,那么将会有一点时间延迟,因
  33. //       为实际的连接测试有一个超时的限制来判断是否能够连接。但是这种检测方式是最直接
  34. //       的,并能确实知道是否能够连接网络,所以你按照实际要求来选择检测方式。
  35. //
  36. //得到的 lpdwState 返回值可能是以下值的一个或几个值之和:
  37. //  INTERNET_STATE_CONNECTED           :$00000001 连接状态;
  38. //  INTERNET_STATE_DISCONNECTED        :$00000002 非连接状态(和 INTERNET_STATE_CONNECTED 对应);
  39. //  INTERNET_STATE_DISCONNECTED_BY_USER:$00000010 用户请求的非连接状态
  40. //  INTERNET_STATE_IDLE                :$00000100 连接状态,并且空闲
  41. //  INTERNET_STATE_BUSY                :$00000200 连接状态,正在响应连接请求
  42. function CheckConnectState(lpsURL: PChar; var lpdwState: dword): boolean; external 'checkconnectstate@files:webctrl.dll stdcall';

  43. // 创建 WEB 窗口
  44. function NewWebWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND; external 'newwebwnd@files:webctrl.dll stdcall';

  45. // 释放 WEB 窗口
  46. function FreeWebWnd(hWndWeb: HWND): Boolean; external 'freewebwnd@files:webctrl.dll stdcall';

  47. // 释放所有 WEB 窗口, 此函数对于卸载插件很重要, 必须在结束安装之前调用才能顺利卸载插件.
  48. function FreeAllWebWnd(): Boolean; external 'freeallwebwnd@files:webctrl.dll stdcall';

  49. // 设置 WEB 窗口的父窗口
  50. function WebWndSetParent(hWndWeb: HWND; hWndParent: HWND): Boolean; external 'webwndsetparent@files:webctrl.dll stdcall';

  51. // 设置 WEB 窗口的位置大小
  52. function WebWndSetBounds(hWndWeb: HWND; X, Y, nWidth, nHeight: Integer): Boolean; external 'webwndsetbounds@files:webctrl.dll stdcall';

  53. // 显示 HTML 网页
  54. function DisplayHTMLPage(hWndWeb: HWND; lpsURL: PChar): Boolean; external 'displayhtmlpage@files:webctrl.dll stdcall';  // ;

  55. // 显示 HTML 字符串
  56. function DisplayHTMLStr(hWndWeb: HWND; lpsHtmlText: PChar): Boolean; external 'displayhtmlstr@files:webctrl.dll stdcall';

  57. // Web 页面 动作
  58. function WebPageAction(hWndWeb: HWND; action: DWord): Boolean; external 'webpageaction@files:webctrl.dll stdcall';

  59. const
  60.   SM_CXSCREEN = 0;
  61.   SM_CYSCREEN = 1;
  62.   
  63.   WS_EX_CLIENTEDGE = $200;
  64.   GWL_EXSTYLE = -20;

  65.   WEBPAGE_GOBACK = 0;
  66.   WEBPAGE_GOFORWARD = 1;
  67.   WEBPAGE_GOHOME = 2;
  68.   WEBPAGE_SEARCH = 3;
  69.   WEBPAGE_REFRESH = 4;
  70.   WEBPAGE_STOP = 5;
  71. var
  72.   UrlPage, HtmlPage, HtmlTextPage: TWizardPage;
  73.   WebHWND1, WebHWND2, WebHWND3, WebHWND4: HWND;
  74.   WebHWND_Browser: HWND;
  75.   Form_Browser: TForm;
  76.   AddrEdit: TNewEdit;
  77.   GoBtn: TNewButton;

  78. function InitializeSetup(): Boolean;
  79. begin
  80.   WebHWND1 := 0;
  81.   WebHWND2 := 0;
  82.   WebHWND3 := 0;
  83.   WebHWND4 := 0;
  84.   Result := True;
  85. end;

  86. procedure DeinitializeSetup();
  87. begin
  88.   WizardForm.Hide;
  89.   FreeAllWebWnd;
  90. end;

  91. procedure GoBackBtnOnClick(Sender: TObject);
  92. begin
  93.   WebPageAction(WebHWND_Browser, WEBPAGE_GOBACK);
  94. end;

  95. procedure GoForwardBtnOnClick(Sender: TObject);
  96. begin
  97.   WebPageAction(WebHWND_Browser, WEBPAGE_GOFORWARD);
  98. end;

  99. procedure StopBtnOnClick(Sender: TObject);
  100. begin
  101.   WebPageAction(WebHWND_Browser, WEBPAGE_STOP);
  102. end;

  103. procedure RefreshBtnOnClick(Sender: TObject);
  104. begin
  105.   WebPageAction(WebHWND_Browser, WEBPAGE_REFRESH);
  106. end;

  107. procedure HomeBtnOnClick(Sender: TObject);
  108. begin
  109.   WebPageAction(WebHWND_Browser, WEBPAGE_GOHOME);
  110. end;

  111. procedure GoBtnOnClick(Sender: TObject);
  112. begin
  113.   DisplayHTMLPage(WebHWND_Browser, AddrEdit.Text);
  114. end;

  115. procedure BrowserFormResize(Sender: TObject);
  116. var
  117.   W: Integer;
  118. begin
  119.   WebWndSetBounds(WebHWND_Browser, 0, ScaleY(35), Form_Browser.ClientWidth,
  120.          Form_Browser.ClientHeight - ScaleY(35));
  121.   W := Form_Browser.Width - ScaleX(285);
  122.   if W <= 0 then W := 1;
  123.   AddrEdit.Width := W;
  124.   GoBtn.SetBounds(AddrEdit.Left + AddrEdit.Width + ScaleX(2), ScaleY(5), ScaleX(30),
  125.        WizardForm.CancelButton.Height);
  126. end;

  127. procedure EditKeyPress(Sender: TObject; var Key: Char);
  128. begin
  129.   if Key = #13 then
  130.     DisplayHTMLPage(WebHWND_Browser, AddrEdit.Text);
  131. end;

  132. procedure WizardBtnOnClick(Sender: TObject);
  133. var
  134.   ScreenWidth, ScreenHeight: Integer;
  135.   Btn: TNewButton;
  136. begin
  137.   Form_Browser := TForm.Create(WizardForm);
  138.   try
  139.     Form_Browser.Caption := 'ThinBrowser';
  140.     Form_Browser.BorderIcons := [biSystemMenu, biMaximize];
  141.     ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
  142.     ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
  143.     Form_Browser.SetBounds((ScreenWidth - ScaleX(600)) div 2, (ScreenHeight - ScaleY(400)) div 2,
  144.          ScaleX(600), ScaleY(400));
  145.     WebHWND_Browser := NewWebWnd(Form_Browser.Handle, 0, 0, Form_Browser.ClientWidth,
  146.          Form_Browser.ClientHeight);
  147.     SetWindowLong(Form_Browser.Handle, GWL_EXSTYLE, GetWindowLong(
  148.          WebHWND_Browser, GWL_EXSTYLE) or WS_EX_CLIENTEDGE);

  149.     Btn := TNewButton.Create(Form_Browser);
  150.     Btn.SetBounds(ScaleX(5), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  151.     Btn.Caption := '&Back';
  152.     Btn.OnClick := @GoBackBtnOnClick;
  153.     Btn.Parent := Form_Browser;
  154.    
  155.     Btn := TNewButton.Create(Form_Browser);
  156.     Btn.SetBounds(ScaleX(47), ScaleY(5), ScaleX(55), WizardForm.CancelButton.Height);
  157.     Btn.Caption := '&Forward';
  158.     Btn.OnClick := @GoForwardBtnOnClick;
  159.     Btn.Parent := Form_Browser;
  160.    
  161.     Btn := TNewButton.Create(Form_Browser);
  162.     Btn.SetBounds(ScaleX(104), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  163.     Btn.Caption := '&Stop';
  164.     Btn.OnClick := @StopBtnOnClick;
  165.     Btn.Parent := Form_Browser;

  166.     Btn := TNewButton.Create(Form_Browser);
  167.     Btn.SetBounds(ScaleX(146), ScaleY(5), ScaleX(50), WizardForm.CancelButton.Height);
  168.     Btn.Caption := '&Refresh';
  169.     Btn.OnClick := @RefreshBtnOnClick;
  170.     Btn.Parent := Form_Browser;

  171.     Btn := TNewButton.Create(Form_Browser);
  172.     Btn.SetBounds(ScaleX(198), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  173.     Btn.Caption := '&Home';
  174.     Btn.OnClick := @HomeBtnOnClick;
  175.     Btn.Parent := Form_Browser;

  176.     AddrEdit := TNewEdit.Create(Form_Browser);
  177.     AddrEdit.Left := ScaleX(240);
  178.     AddrEdit.Top := ScaleY(6);
  179.     AddrEdit.Parent := Form_Browser;
  180.     AddrEdit.Text := 'about:blank';
  181.     AddrEdit.OnKeyPress := @EditKeyPress;

  182.     GoBtn := TNewButton.Create(Form_Browser);
  183.     GoBtn.Caption := '&Go';
  184.     GoBtn.OnClick := @GoBtnOnClick;
  185.     GoBtn.Parent := Form_Browser;

  186.     BrowserFormResize(Form_Browser);
  187.     Form_Browser.OnResize := @BrowserFormResize;
  188.     Form_Browser.ActiveControl := AddrEdit;
  189.     Form_Browser.ShowModal();
  190.     FreeWebWnd(WebHWND_Browser);
  191.   finally
  192.     Form_Browser.Free();
  193.   end;
  194. end;

  195. procedure InitializeWizard();
  196. var
  197.   State: DWord;
  198.   s: string;
  199.   BrowserBtn: TNewButton;
  200. begin
  201.   State := 0;
  202.   s := '';
  203. // 如果需要进行网址连接测试,取消下面代码的注释
  204. //  s := 'http://www.3dmgame.com/';

  205.   if CheckConnectState(s, State) then
  206.     MsgBox('网络已经连接。', mbInformation, MB_OK)
  207.   else
  208.     MsgBox('网络未连接。', mbCriticalError, MB_OK);
  209.   MsgBox(inttostr(State), mbInformation, MB_OK);

  210.   ExtractTemporaryFile('wizard.htm');
  211.   ExtractTemporaryFile('file.htm');
  212.   ExtractTemporaryFile('1.gif');
  213.   ExtractTemporaryFile('2.gif');
  214.   ExtractTemporaryFile('3.gif');
  215.   
  216.   WebHWND1 := NewWebWnd(WizardForm.WelcomePage.Handle, 0, 0, WizardForm.WizardBitmapImage.Width, WizardForm.WelcomePage.Height);
  217.   DisplayHTMLPage(WebHWND1, ExpandConstant('{tmp}\wizard.htm'));

  218.   UrlPage := CreateCustomPage(wpWelcome, '菜鸟解脱的天堂', '这里有很多神奇的脚本: http://bbs.hanzify.org/');

  219.   HtmlPage := CreateCustomPage(UrlPage.ID, '测试 HTML文件 页面', '文件: file.htm');

  220.   HtmlTextPage := CreateCustomPage(HtmlPage.ID, '测试 HTML文本 页面', '临时自定义 HTML 字符串');

  221.   BrowserBtn := TNewButton.Create(WizardForm);
  222.   BrowserBtn.Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
  223.   BrowserBtn.Top := WizardForm.CancelButton.Top;
  224.   BrowserBtn.Width := WizardForm.CancelButton.Width;
  225.   BrowserBtn.Height := WizardForm.CancelButton.Height;
  226.   BrowserBtn.Caption := '&Browser...';
  227.   BrowserBtn.OnClick := @WizardBtnOnClick;
  228.   BrowserBtn.Parent := WizardForm;
  229. end;

  230. procedure CurPageChanged(CurPageID: Integer);
  231. begin
  232.   if CurPageID = wpWelcome then
  233.     WebWndSetParent(WebHWND1, WizardForm.WelcomePage.Handle)
  234.   else
  235.   if CurPageID = wpFinished then
  236.     WebWndSetParent(WebHWND1, WizardForm.FinishedPage.Handle)
  237.   else
  238.   if (CurPageID = UrlPage.ID) and (WebHWND2 = 0) then
  239.   begin
  240.     WebHWND2 := NewWebWnd(UrlPage.Surface.Handle, 0, 0, UrlPage.Surface.Width, UrlPage.Surface.Height);
  241.     DisplayHTMLPage(WebHWND2, 'http://bbs.hanzify.org/')
  242.   end else
  243.   if (CurPageID = HtmlPage.ID) and (WebHWND3 = 0) then
  244.   begin
  245.     WebHWND3 := NewWebWnd(HtmlPage.Surface.Handle, 0, 0, HtmlPage.Surface.Width, HtmlPage.Surface.Height);
  246.     DisplayHTMLPage(WebHWND3, ExpandConstant('{tmp}\file.htm'));
  247.   end
  248.   else
  249.   if (CurPageID = HtmlTextPage.ID) and (WebHWND4 = 0) then
  250.   begin
  251.     WebHWND4 := NewWebWnd(HtmlTextPage.Surface.Handle, 0, 0, HtmlTextPage.Surface.Width, HtmlTextPage.Surface.Height);
  252.     DisplayHTMLStr(WebHWND4, '<b>I''m a <u>HTML text</u></b>');
  253.   end;
  254. end;

复制代码



2

  1. [Setup]
  2. AppName=My Application
  3. AppVersion=1.5
  4. DefaultDirName={pf}\My Application
  5. OutputDir=userdocs:Inno Setup Examples Output
  6. [Files]
  7. Source: "webctrl.dll"; Flags: dontcopy
  8. Source: "wizard.htm"; Flags: dontcopy
  9. Source: "1.gif"; Flags: dontcopy
  10. Source: "2.gif"; Flags: dontcopy
  11. Source: "3.gif"; Flags: dontcopy
  12. [code]
  13. ////////////////////////////////////////////////////////////////////////////////////
  14. // 检查网络连接是否正常
  15. // lpszURL: 网址,如果这里设置为空网址,检测将会简单的检查网络状态,返回状态标志
  16. // lpdwState: 状态标志,以下是标志值的解释
  17. // 注意:当不用网址来检测网络连接时,只是检查当前是否符合网络连接的条件,但是并不等于
  18. //       能正常连接 Internet,但是这种检测方式相当迅速,如果使用网址连接测试,如果网
  19. //       络处于正常连接,检查速度也相当快,但是如果非正常,那么将会有一点时间延迟,因
  20. //       为实际的连接测试有一个超时的限制来判断是否能够连接。但是这种检测方式是最直接
  21. //       的,并能确实知道是否能够连接网络,所以你按照实际要求来选择检测方式。
  22. //
  23. //得到的 lpdwState 返回值可能是以下值的一个或几个值之和:
  24. //  INTERNET_STATE_CONNECTED           :$00000001 连接状态;
  25. //  INTERNET_STATE_DISCONNECTED        :$00000002 非连接状态(和 INTERNET_STATE_CONNECTED 对应);
  26. //  INTERNET_STATE_DISCONNECTED_BY_USER:$00000010 用户请求的非连接状态
  27. //  INTERNET_STATE_IDLE                :$00000100 连接状态,并且空闲
  28. //  INTERNET_STATE_BUSY                :$00000200 连接状态,正在响应连接请求
  29. function CheckConnectState(lpsURL: PChar; var lpdwState: dword): boolean; external 'checkconnectstate@files:webctrl.dll stdcall';
  30. // 创建 WEB 窗口
  31. function NewWebWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND; external 'newwebwnd@files:webctrl.dll stdcall';
  32. // 释放 WEB 窗口
  33. function FreeWebWnd(hWndWeb: HWND): Boolean; external 'freewebwnd@files:webctrl.dll stdcall';
  34. // 释放所有 WEB 窗口, 此函数对于卸载插件很重要, 必须在结束安装之前调用才能顺利卸载插件.
  35. function FreeAllWebWnd(): Boolean; external 'freeallwebwnd@files:webctrl.dll stdcall';
  36. // 设置 WEB 窗口的父窗口
  37. function WebWndSetParent(hWndWeb: HWND; hWndParent: HWND): Boolean; external 'webwndsetparent@files:webctrl.dll stdcall';
  38. // 设置 WEB 窗口的位置大小
  39. function WebWndSetBounds(hWndWeb: HWND; X, Y, nWidth, nHeight: Integer): Boolean; external 'webwndsetbounds@files:webctrl.dll stdcall';
  40. // 显示 HTML 网页
  41. function DisplayHTMLPage(hWndWeb: HWND; lpsURL: PChar): Boolean; external 'displayhtmlpage@files:webctrl.dll stdcall';  // ;
  42. // 显示 HTML 字符串
  43. function DisplayHTMLStr(hWndWeb: HWND; lpsHtmlText: PChar): Boolean; external 'displayhtmlstr@files:webctrl.dll stdcall';
  44. // Web 页面 动作
  45. function WebPageAction(hWndWeb: HWND; action: DWord): Boolean; external 'webpageaction@files:webctrl.dll stdcall';
  46. var
  47.   UrlPage: TWizardPage;
  48.   WebHWND1, WebHWND2: HWND;
  49. function InitializeSetup(): Boolean;
  50. begin
  51.   WebHWND1:= 0;
  52.   WebHWND2 := 0;
  53.   Result := True;
  54. end;
  55. procedure DeinitializeSetup();
  56. begin
  57.   WizardForm.Hide;
  58.   FreeAllWebWnd;
  59. end;
  60. procedure InitializeWizard();
  61. var
  62.   State: DWord;
  63.   s: string;
  64. begin
  65.   State := 0;
  66.   s := '';
  67. // 如果需要进行网址连接测试,取消下面代码的注释
  68. //  s := 'http://www.3dmgame.com/';
  69.   if CheckConnectState(s, State) then
  70.     MsgBox('网络已经连接。', mbInformation, MB_OK)
  71.   else
  72.     MsgBox('网络未连接。', mbCriticalError, MB_OK);
  73.   ExtractTemporaryFile('wizard.htm');
  74.   ExtractTemporaryFile('1.gif');
  75.   ExtractTemporaryFile('2.gif');
  76.   ExtractTemporaryFile('3.gif');
  77.   
  78.   WebHWND1 := NewWebWnd(WizardForm.WelcomePage.Handle, 0, 0, WizardForm.WizardBitmapImage.Width, WizardForm.WelcomePage.Height);
  79.   DisplayHTMLPage(WebHWND1, ExpandConstant('{tmp}\wizard.htm'));
  80.   
  81.   UrlPage := CreateCustomPage(wpWelcome, '菜鸟解脱的天堂', '这里有很多神奇的脚本: http://bbs.hanzify.org/');
  82. end;
  83. procedure CurPageChanged(CurPageID: Integer);
  84. begin
  85.   if CurPageID = wpWelcome then
  86.     WebWndSetParent(WebHWND1, WizardForm.WelcomePage.Handle)
  87.   else
  88.   if CurPageID = wpFinished then
  89.     WebWndSetParent(WebHWND1, WizardForm.FinishedPage.Handle)
  90.   else
  91.   if (CurPageID = UrlPage.ID) and (WebHWND2 = 0) then
  92.   begin
  93.     WebHWND2 := NewWebWnd(UrlPage.Surface.Handle, 0, 0, UrlPage.Surface.Width, UrlPage.Surface.Height);
  94.     DisplayHTMLPage(WebHWND2, 'http://bbs.hanzify.org/')
  95.   end;
  96. end;
复制代码


3


  1. [Setup]
  2. AppName=My Application
  3. AppVersion=1.5
  4. DefaultDirName={pf}\My Application
  5. OutputDir=C:\Users\Administrator\Desktop\临时脚本

  6. [Files]
  7. Source: "webctrl.dll"; Flags: dontcopy



  8. [code]
  9. function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall';
  10. function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
  11. function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
  12. function CheckConnectState(lpsURL: PChar; var lpdwState: dword): boolean; external 'checkconnectstate@files:webctrl.dll stdcall';
  13. function NewWebWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND; external 'newwebwnd@files:webctrl.dll stdcall';
  14. function FreeWebWnd(hWndWeb: HWND): Boolean; external 'freewebwnd@files:webctrl.dll stdcall';
  15. function FreeAllWebWnd(): Boolean; external 'freeallwebwnd@files:webctrl.dll stdcall';
  16. function WebWndSetParent(hWndWeb: HWND; hWndParent: HWND): Boolean; external 'webwndsetparent@files:webctrl.dll stdcall';
  17. function WebWndSetBounds(hWndWeb: HWND; X, Y, nWidth, nHeight: Integer): Boolean; external 'webwndsetbounds@files:webctrl.dll stdcall';
  18. function DisplayHTMLPage(hWndWeb: HWND; lpsURL: PChar): Boolean; external 'displayhtmlpage@files:webctrl.dll stdcall';
  19. function WebPageAction(hWndWeb: HWND; action: DWord): Boolean; external 'webpageaction@files:webctrl.dll stdcall';

  20. const
  21. SM_CXSCREEN = 0;
  22. SM_CYSCREEN = 1;
  23.   
  24.   WS_EX_CLIENTEDGE = $200;
  25.   GWL_EXSTYLE = -20;

  26.   WEBPAGE_GOBACK = 0;
  27.   WEBPAGE_GOFORWARD = 1;
  28.   WEBPAGE_GOHOME = 2;
  29.   WEBPAGE_SEARCH = 3;
  30.   WEBPAGE_REFRESH = 4;
  31.   WEBPAGE_STOP = 5;
  32. var
  33.   WebHWND_Browser: HWND;
  34.   Form_Browser: TForm;
  35.   AddrEdit: TNewEdit;
  36.   GoBtn: TNewButton;

  37. procedure DeinitializeSetup();
  38. begin
  39.   WizardForm.Hide;
  40.   FreeAllWebWnd;
  41. end;

  42. procedure GoBackBtnOnClick(Sender: TObject);
  43. begin
  44.   WebPageAction(WebHWND_Browser, WEBPAGE_GOBACK);
  45. end;

  46. procedure GoForwardBtnOnClick(Sender: TObject);
  47. begin
  48.   WebPageAction(WebHWND_Browser, WEBPAGE_GOFORWARD);
  49. end;

  50. procedure StopBtnOnClick(Sender: TObject);
  51. begin
  52.   WebPageAction(WebHWND_Browser, WEBPAGE_STOP);
  53. end;

  54. procedure RefreshBtnOnClick(Sender: TObject);
  55. begin
  56.   WebPageAction(WebHWND_Browser, WEBPAGE_REFRESH);
  57. end;

  58. procedure HomeBtnOnClick(Sender: TObject);
  59. begin
  60.   WebPageAction(WebHWND_Browser, WEBPAGE_GOHOME);
  61. end;

  62. procedure GoBtnOnClick(Sender: TObject);
  63. begin
  64.   DisplayHTMLPage(WebHWND_Browser, AddrEdit.Text);
  65. end;

  66. procedure BrowserFormResize(Sender: TObject);
  67. var
  68.   W: Integer;
  69. begin
  70.   WebWndSetBounds(WebHWND_Browser, 0, ScaleY(35), Form_Browser.ClientWidth,
  71.          Form_Browser.ClientHeight - ScaleY(35));
  72.   W := Form_Browser.Width - ScaleX(285);
  73.   if W <= 0 then W := 1;
  74.   AddrEdit.Width := W;
  75.   GoBtn.SetBounds(AddrEdit.Left + AddrEdit.Width + ScaleX(2), ScaleY(5), ScaleX(30),
  76.        WizardForm.CancelButton.Height);
  77. end;

  78. procedure EditKeyPress(Sender: TObject; var Key: Char);
  79. begin
  80.   if Key = #13 then
  81.     DisplayHTMLPage(WebHWND_Browser, AddrEdit.Text);
  82. end;

  83. procedure WizardBtnOnClick(Sender: TObject);
  84. var
  85.   ScreenWidth, ScreenHeight: Integer;
  86.   Btn: TNewButton;
  87. begin
  88.   Form_Browser := TForm.Create(WizardForm);
  89.   try
  90.     Form_Browser.Caption := 'ThinBrowser';
  91.     Form_Browser.BorderIcons := [biSystemMenu, biMaximize];
  92.     ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
  93.     ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
  94.     Form_Browser.SetBounds((ScreenWidth - ScaleX(600)) div 2, (ScreenHeight - ScaleY(400)) div 2,
  95.          ScaleX(600), ScaleY(400));
  96.     WebHWND_Browser := NewWebWnd(Form_Browser.Handle, 0, 0, Form_Browser.ClientWidth,
  97.          Form_Browser.ClientHeight);
  98.     SetWindowLong(Form_Browser.Handle, GWL_EXSTYLE, GetWindowLong(
  99.          WebHWND_Browser, GWL_EXSTYLE) or WS_EX_CLIENTEDGE);

  100.     Btn := TNewButton.Create(Form_Browser);
  101.     Btn.SetBounds(ScaleX(5), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  102.     Btn.Caption := '&返回';
  103.     Btn.OnClick := @GoBackBtnOnClick;
  104.     Btn.Parent := Form_Browser;
  105.    
  106.     Btn := TNewButton.Create(Form_Browser);
  107.     Btn.SetBounds(ScaleX(47), ScaleY(5), ScaleX(55), WizardForm.CancelButton.Height);
  108.     Btn.Caption := '&下一步';
  109.     Btn.OnClick := @GoForwardBtnOnClick;
  110.     Btn.Parent := Form_Browser;
  111.    
  112.     Btn := TNewButton.Create(Form_Browser);
  113.     Btn.SetBounds(ScaleX(104), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  114.     Btn.Caption := '&停止';
  115.     Btn.OnClick := @StopBtnOnClick;
  116.     Btn.Parent := Form_Browser;

  117.     Btn := TNewButton.Create(Form_Browser);
  118.     Btn.SetBounds(ScaleX(146), ScaleY(5), ScaleX(50), WizardForm.CancelButton.Height);
  119.     Btn.Caption := '&刷新';
  120.     Btn.OnClick := @RefreshBtnOnClick;
  121.     Btn.Parent := Form_Browser;

  122.     Btn := TNewButton.Create(Form_Browser);
  123.     Btn.SetBounds(ScaleX(198), ScaleY(5), ScaleX(40), WizardForm.CancelButton.Height);
  124.     Btn.Caption := '&主页';
  125.     Btn.OnClick := @HomeBtnOnClick;
  126.     Btn.Parent := Form_Browser;

  127.     AddrEdit := TNewEdit.Create(Form_Browser);
  128.     AddrEdit.Left := ScaleX(240);
  129.     AddrEdit.Top := ScaleY(6);
  130.     AddrEdit.Parent := Form_Browser;
  131.     AddrEdit.Text := 'about:blank';
  132.     AddrEdit.OnKeyPress := @EditKeyPress;

  133.     GoBtn := TNewButton.Create(Form_Browser);
  134.     GoBtn.Caption := '&进入';
  135.     GoBtn.OnClick := @GoBtnOnClick;
  136.     GoBtn.Parent := Form_Browser;

  137.     BrowserFormResize(Form_Browser);
  138.     Form_Browser.OnResize := @BrowserFormResize;
  139.     Form_Browser.ActiveControl := AddrEdit;
  140.     Form_Browser.ShowModal();
  141.     FreeWebWnd(WebHWND_Browser);
  142.   finally
  143.     Form_Browser.Free();
  144.   end;
  145. end;

  146. procedure InitializeWizard();
  147. var
  148.   BrowserBtn: TNewButton;
  149. begin

  150.   BrowserBtn := TNewButton.Create(WizardForm);
  151.   BrowserBtn.Left := 65;
  152.   BrowserBtn.Top := WizardForm.CancelButton.Top;
  153.   BrowserBtn.Width := WizardForm.CancelButton.Width-35;
  154.   BrowserBtn.Height := WizardForm.CancelButton.Height;
  155.   BrowserBtn.Caption := 'web';
  156.   BrowserBtn.OnClick := @WizardBtnOnClick;
  157.   BrowserBtn.Parent := WizardForm;
  158. end;

复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-10 14:00 , Processed in 0.144536 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表