//实现向网页自动填写用户名密码并自动点击登录按钮  完成全自动凳录

Function FillForm(WebBrowser: TWebBrowser2; FieldName: String; Value: String):Boolean;
Vari, j: Integer;FormItem: Variant;
BeginResult := False;//no form on documentIf WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 ThenBeginExit;End;For I := 0 To WebBrowser.OleObject.Document.forms.Length - 1 DoBeginFormItem := WebBrowser.OleObject.Document.forms.Item(I);For j := 0 To FormItem.Length - 1 DoBeginTry//when the fieldname is found, try to fill outIf FormItem.Item(j).Name = FieldName ThenBeginFormItem.Item(j).Value := Value;Result := True;End;ExceptExit;End;End;End;
End;FillForm(浏览器控件名称, 编辑框名称, 内容)

str := (Webbrowser1.Document as IHTMLDocument2).cookie;

Ver: TFixedFileInfo;
begin
Ver := FileInfo(Application.ExeName);
Edition.Caption := '软件版本:' + IntToStr(Ver.wFileVersionLS) + '.' +
      IntToStr(Ver.wFileVersionMS) + '.' +
      IntToStr(Ver.wProductVersionLS) + '.' +
      IntToStr(Ver.wProductVersionMS) + ' - [正式版]';
end;

这样,明白了吗?
---------------------------------------------- 
有空来俺们的小站逛逛(http://www.e8e.net)

作者:
 star5 (星五) ▲▲▲▲△ -
盒子活跃会员
2008-12-25 18:41:32
2楼: 其他,如文件大小什么什么的,自己搜索下。
---------------------------------------------- 
SOS!关于Record初始值一个问题! 浏览:1247
加入我的收藏
楼主: 我有个结构是这样子的
  TConfig = record
      A: Boolean;
      B: Integer;
      C: Boolean;
      D: Integer;
      //以此类推  非常多,下面还有数组
   sName: array[0..8] of string;
   boUse: array[0..8] of Boolean;
   wNum:  array[0..8] of Word;
  end;

var
  Config: TConfig = (
      A: False;
      B: 0;
      C: True;
      D: 2;
      //以此类推  非常多,下面还有数组
   sName:('1','2','3','4','5','6','7','8');
   boUse:(False, True, False, False, True, False, True, False, False); 
   wNum: (0, 1, 0, 4, 0, 3, 0, 0, 0);
   );

当定义时,初始了,在程序运行中,需要初始成定义时的数据,只能一个个赋值吗?还是有其它办法吗?
---------------------------------------------- 
delphi众人拾柴火焰高!支持盒子~~~~~~~~~~

 
作者:
 wr960204 (武稀松) ▲▲▲▲▲ -
盒子活跃会员
2010-12-15 21:31:49
1楼: 全局变量或Const定义的常量可以给初始值
---------------------------------------------- 
武稀松http://www.raysoftware.cn
作者:
 wqyfavor (wqyfavor) ▲▲▲▲△ -
普通会员
2010-12-15 21:44:32
2楼: 不懂得你说的在程序中初始是什么意思。应该是你想说在程序运行时为整个Record赋值吧,那直接 := 就可以了。
---------------------------------------------- 
http://hi.baidu.com/wqyfavor
作者:
 q34625474 (q34625474) ▲▲▲▲△ -
盒子活跃会员
2010-12-15 21:48:10
3楼: TO wqyfavor

在程序运行的时候 用户可以修改 结构中的类型数据    用户还可以执行恢复默认设置,  当他恢复默认设置的时候 能否将这个结构初始化成    结构定义那里的值     只能一个一个的赋予给结构中的成员吗?
---------------------------------------------- 
delphi众人拾柴火焰高!支持盒子~~~~~~~~~~

作者:
 supermay (supermay) ▲▲▲▲▲ -
盒子活跃会员
2010-12-15 22:35:16
4楼: 没有办法
统一值的话,你可以用fillchar
---------------------------------------------- 
卖源码http://item.taobao.com/item.htm?spm=686.1000925.1000774.16.gmrHsT&id=37407600038每天点一下广告,支持盒子不关闭
作者:
 wqyfavor (wqyfavor) ▲▲▲▲△ -
普通会员
2010-12-15 23:17:55
5楼: 恢复成定义那里的值,你可以把那个定义改成const啊,就是一个常量。然后赋值给你的变量就可以了啊。
---------------------------------------------- 
http://hi.baidu.com/wqyfavor
作者:
 q34625474 (q34625474) ▲▲▲▲△ -
盒子活跃会员
2010-12-16 2:32:19
6楼: to wqyfavor  
你还是不懂得我的意识
结构内非常多  如果一个一个赋值  会很麻烦  我想整个RECORD初始值
---------------------------------------------- 
delphi众人拾柴火焰高!支持盒子~~~~~~~~~~
作者:
 wr960204 (武稀松) ▲▲▲▲▲ -
盒子活跃会员
2010-12-16 9:29:30
7楼: 都告诉你了.
全局变量或Const定义的常量可以给初始值.
你先定义一个全局变量或常量.
当想赋初始值的时候就等于这个变量或常量不就得了.
---------------------------------------------- 
武稀松http://www.raysoftware.cn
作者:
 adamwu (AdamWu) ▲▲▲△△ -
注册会员
2010-12-16 10:38:44
8楼: 不知道string, interface等能不能自动处理。
不过如果有动态数组或者对象引用那肯定是不能直接等于的。
---------------------------------------------- 
-
作者:
 lbq971101 (lbq971101) ▲▲▲▲▲ -
盒子活跃会员
2010-12-17 18:42:21
9楼: 用CopyMemory就可以了,不用一个一个赋值
---------------------------------------------- 
兼金软件工作室
作者:
 egust (欢迎访问 Delphi@smth.org) ▲▲▲▲△ -
普通会员
2010-12-17 19:02:27
10楼: 像 lz 给出来的 record(成员包括自动管理生存期的 string 类型),CopyMemory/Move 属于找死的行为,必须要用“:=”标准赋值语句,或者自己调 system._CopyRecord 才行(后者还很麻烦)。FillChar/ZeroMemory 除非在还没使用过该局部变量的时候用,否则只要任何一个 string 里有指向非常量的内容,就会产生内存泄露。
---------------------------------------------- 
cnblogs中我写的关于Delphi的blog,欢迎访问:
http://www.cnblogs.com/egust/
作者:
 bmsr (白忙剩人) ▲▲▲▲△ -
普通会员
2010-12-17 19:24:29
11楼: 给你个例子自己去看
  RecBskyCust = record
    Ver: integer;
    Cust_ID: integer;
    Cust_name: string[40];
    Cust_NiName: string[40];
    Email: shortstring;
    MPhone: string[80];
    Phone: string[80];
    SFZ: string[18];
    pass: string[40];
    Func: integer;
    Reg_Time: TDateTime;
    UpDate_Time: TDateTime;
    QQ: integer;
    Msn: shortstring;
    OtherIM: shortstring;
    Company: shortstring;
    Area_Code: integer;
    PostCode: integer;
    Address: shortstring;
    CUST_STATES: TPassStates;
    Descr: string;
  end;

function CopyRecord(Rs: RecBskyCust; var RD: RecBskyCust): boolean; overload;
begin
  Result := False;
  try
    DisposeRecord(RD);
    System.move(Rs, RD, sizeof(Rs) - sizeof(string));
    RD.Descr := Rs.Descr;
    Result := True;
  except
    on E: Exception do
      Application.MessageBox(PChar(E.Message + '错误号:' + IntToStr(E.HelpContext)), '错误!', MB_OK + MB_ICONERROR + MB_TOPMOST);
  end;

end;

function DisposeRecord(Var R: RecBskyCust): boolean;
begin
  Result := False;
  try
    R.Descr := '';
    zeromemory(@R, sizeof(R));
    Result := True;
  except
    on E: Exception do
      Application.MessageBox(PChar(E.Message + '错误号:' + IntToStr(E.HelpContext)), '错误!', MB_OK + MB_ICONERROR + MB_TOPMOST);
  end;
end;
除了string 类型  还有动态数组和其它指针类型也需要单独处理,所以尽量把这类数据类型放到record的最后

网上有这种代码了,只是因为写的较早,有些地方写的不那么言简意赅,而且在XE后的版本中有问题(因为Unicode字符的关系)

下面是精简修改过的代码,只取第一块硬盘的序列号,Win7 + XE 测试通过。需要先安装JwApi函数库,因为有些结构体在库中有声明了

[delphi]  view plain copy
  1. unit uGetHDSN;
  2. interface
  3. uses
  4. Windows, JwaWinIoctl;
  5. function GetIdeSerialNumber: AnsiString;
  6. implementation
  7. type
  8. TIdSector = packed record
  9. wGenConfig: USHORT;
  10. wNumCyls: USHORT;
  11. wReserved: USHORT;
  12. wNumHeads: USHORT;
  13. wBytesPerTrack: USHORT;
  14. wBytesPerSector: USHORT;
  15. wSectorsPerTrack: USHORT;
  16. wVendorUnique: array [0 .. 2] of USHORT;
  17. sSerialNumber: array [0 .. 19] of AnsiChar;
  18. wBufferType: USHORT;
  19. wBufferSize: USHORT;
  20. wECCSize: USHORT;
  21. sFirmwareRev: array [0 .. 7] of AnsiChar;
  22. sModelNumber: array [0 .. 39] of AnsiChar;
  23. wMoreVendorUnique: USHORT;
  24. wDoubleWordIO: USHORT;
  25. wCapabilities: USHORT;
  26. wReserved1: USHORT;
  27. wPIOTiming: USHORT;
  28. wDMATiming: USHORT;
  29. wBS: USHORT;
  30. wNumCurrentCyls: USHORT;
  31. wNumCurrentHeads: USHORT;
  32. wNumCurrentSectorsPerTrack: USHORT;
  33. ulCurrentSectorCapacity: ULONG;
  34. wMultSectorStuff: USHORT;
  35. ulTotalAddressableSectors: ULONG;
  36. wSingleWordDMA: USHORT;
  37. wMultiWordDMA: USHORT;
  38. bReserved: array [0 .. 127] of Byte;
  39. end;
  40. PIdSector = ^TIdSector;
  41. const
  42. IDE_ATA_IDENTIFY = $EC;
  43. function LittleToBig(Data: Word): Word;
  44. asm
  45. xchg ah, al
  46. end;
  47. function GetIdeSerialNumber: AnsiString;
  48. var
  49. hDevice: THandle;
  50. Size, cbBytesReturned: DWORD;
  51. SCIP: TSendCmdInParams;
  52. SCOP: PSendCmdOutParams;
  53. P: PWORD;
  54. I: Integer;
  55. begin
  56. Result := '';
  57. hDevice := CreateFile('\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or
  58. FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
  59. if hDevice = INVALID_HANDLE_VALUE then
  60. Exit;
  61. Size := SizeOf(TSendCmdOutParams) + IDENTIFY_BUFFER_SIZE - 1;
  62. SCOP := AllocMem(Size);
  63. SCIP.irDriveRegs.bCommandReg := IDE_ATA_IDENTIFY;
  64. if DeviceIoControl(hDevice, SMART_RCV_DRIVE_DATA, @SCIP, SizeOf(TSendCmdInParams) - 1, SCOP, Size,
  65. cbBytesReturned, nil) = False then
  66. begin
  67. FreeMem(SCOP);
  68. CloseHandle(hDevice);
  69. Exit;
  70. end;
  71. // 处理一下序列号在内存中的顺序
  72. with PIdSector(@SCOP^.bBuffer[0])^ do
  73. begin
  74. SetLength(Result, Length(sSerialNumber));
  75. P := @Result[1];
  76. CopyMemory(P, @sSerialNumber[0], Length(sSerialNumber));
  77. for I := 1 to Length(sSerialNumber) div 2 do
  78. begin
  79. P^ := LittleToBig(P^);
  80. Inc(P);
  81. end;
  82. end;
  83. FreeMem(SCOP);
  84. end;
  85. end.

转载于:https://www.cnblogs.com/CodeGear/p/4290929.html

盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录...相关推荐

  1. 本地网站接入外网自动填写用户名密码并登陆

    本地网站接入外网自动填写用户名密码并登陆 昨天公司给安排了一项任务,让公司的网站能够点击跳转到别的公司的网站上,但是那个网站有用户登陆,公司让跳过这个登陆直接进去. 为了解决这个问题,我是想来想去,最 ...

  2. Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!!

    Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!! QWebview调用JS,自动填写用户名和密码,并且JS模拟鼠标点击网页按钮. 下载地址:https://down ...

  3. 有没有大佬知道,有哪些可以在网页上自动填写账号密码并登录的方法?

    有没有大佬知道,有哪些可以在网页上自动填写账号密码并登录的方法?比如说我开了十个隐身窗口,用十个小号来登录这个网站,但是手打太累了.所以想求助万能的大佬,有没有什么方法可以实现自动填写账号密码并登录的 ...

  4. Linux自动切换用户脚本,自动输入用户名密码

    需要安装tcl 和expect包 实现自动切换用户: #!/usr/bin/expect -fspawn su - root expect "Password:" send &qu ...

  5. vba html网页自动登录,javascript – 使用VBA在网页中填写用户名和密码

    这是我第一次尝试通过VBA导航IE浏览器. 我在尝试着: – 转到此网页https://hb2.bankleumi.co.il/e/Login.html – 填写用户名 – 填写密码 – 单击&quo ...

  6. html5自动填充账号密码,谷歌浏览器怎么自动填充账号密码?自动填充账号密码的方法分享...

    谷歌浏览器自动填充账号密码方法图文教程,相信有很多小伙伴对此存在疑惑,接下来就跟着IEfans小编一起了解一下谷歌浏览器自动填充账号密码方法图文教程吧! 谷歌浏览器自动填充账号密码方法: 方法一: 首 ...

  7. php 自动生成查询密码,php自动生成新密码的两种方法

    php自动生成新密码的两种方法,方法一采用的是随机种子,方法是乱序数组,异曲同工吧. 有需要的朋友可以参考下. 方法1: 代码示例: /* * php自动生成新密码自定义函数 适用环境: PHP5.2 ...

  8. 搜狗浏览器下 禁止浏览器自动填写用户名、密码

    搜狗浏览器下,会出现把用户设置记住密码的表单(用户名和密码)乱放在,网站中其他成对出现的用户名及密码框中. 如何解决这种不负责任的可恨问题,网上有很多方案,但最终都未果. 一.先把网上搜到的方案放下: ...

  9. 用计算机根据姓名填充地址,如何在一个excel表格中引用另一个表格的数据,并自动填充-excel自动填写,excel按照姓名自动匹配数据...

    操作如下抄: 1.首先建立好月数据表格 2.之后是要在日数据袭表格中将两个表中项目(示例,可设为其他条件)所对应的数据自动填写 3.点击输入数据的首行单元格,选择插入函百数 4.选择VLOOKUP函数 ...

最新文章

  1. docker删除所有容器_如何在Linux上创建,列出和删除Docker容器
  2. 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
  3. (转)Linux grep
  4. Loadrunner 入门连载教程
  5. 新手WEB开发者易出现的30个问题(转)
  6. inputn函数与input函数的区别
  7. AI赋能案例—阿里云身份证OCR识别助力实现“无接触”式政务服务!
  8. 修改weblogic部署的应用名称
  9. 区块链溯源系统架构---区块链工作笔记002
  10. 昌吉学院2017年计算机招生,昌吉学院
  11. java链式存储_Java实现链式存储的二叉树
  12. JAVA→JDBCJava DataBase Connectivity、存储过程Stored Procedure、事务Transaction、连接池DBCP C3P0、JDBC升级替代框架
  13. 让/etc/profile文件修改后立即生效
  14. spring管理bean容器(笔记)[继]
  15. linux 远程端口号,linux远程端口查看
  16. Android 正则表达式
  17. 共射级放大电路—密勒电容影响下的压摆率
  18. python爬虫实战,爬虫之路,永无止境
  19. colab上传压缩文件并解压
  20. 程序语言Python Tutorial(一):激发你的欲望 程序语言

热门文章

  1. 通过Safari获取苹果UDID
  2. Flutter实践之高仿有妖气漫画,从消息中间件看分布式系统的多种套路
  3. 如何进行视频压缩?一步一步教会你操作
  4. Prepared Requests
  5. 切水果 java_Android上的水果忍者刀锋效果(JAVA实现)
  6. 【Java】输入—Scanner用法(全)
  7. OpenCascade与三角剖分 笔记
  8. 计算机游戏配置价格,请电脑高手帮我配一台电脑
  9. 工控网络安全产品---学习笔记
  10. 三门问题c语言蒙特卡洛法