盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录...
//实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录 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; 这样,明白了吗? |
作者: |
|
2008-12-25 18:41:32 | ||||
2楼: |
其他,如文件大小什么什么的,自己搜索下。 ---------------------------------------------- |
|
加入我的收藏 | ||
楼主: |
我有个结构是这样子的 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 当定义时,初始了,在程序运行中,需要初始成定义时的数据,只能一个个赋值吗?还是有其它办法吗? |
作者: |
|
2010-12-15 21:31:49 | ||||
1楼: |
全局变量或Const定义的常量可以给初始值 ---------------------------------------------- 武稀松http://www.raysoftware.cn |
作者: |
|
2010-12-15 21:44:32 | ||||
2楼: |
不懂得你说的在程序中初始是什么意思。应该是你想说在程序运行时为整个Record赋值吧,那直接 := 就可以了。 ---------------------------------------------- http://hi.baidu.com/wqyfavor |
作者: |
|
2010-12-15 21:48:10 | ||||
3楼: |
TO wqyfavor
在程序运行的时候 用户可以修改 结构中的类型数据 用户还可以执行恢复默认设置, 当他恢复默认设置的时候 能否将这个结构初始化成 结构定义那里的值 只能一个一个的赋予给结构中的成员吗? |
作者: |
|
2010-12-15 22:35:16 | ||||
4楼: |
没有办法 统一值的话,你可以用fillchar ---------------------------------------------- 卖源码http://item.taobao.com/item.htm?spm=686.1000925.1000774.16.gmrHsT&id=37407600038每天点一下广告,支持盒子不关闭 |
作者: |
|
2010-12-15 23:17:55 | ||||
5楼: |
恢复成定义那里的值,你可以把那个定义改成const啊,就是一个常量。然后赋值给你的变量就可以了啊。 ---------------------------------------------- http://hi.baidu.com/wqyfavor |
作者: |
|
2010-12-16 2:32:19 | ||||
6楼: |
to wqyfavor 你还是不懂得我的意识 结构内非常多 如果一个一个赋值 会很麻烦 我想整个RECORD初始值 ---------------------------------------------- delphi众人拾柴火焰高!支持盒子~~~~~~~~~~ |
作者: |
|
2010-12-16 9:29:30 | ||||
7楼: |
都告诉你了. 全局变量或Const定义的常量可以给初始值. 你先定义一个全局变量或常量. 当想赋初始值的时候就等于这个变量或常量不就得了. ---------------------------------------------- 武稀松http://www.raysoftware.cn |
作者: |
|
2010-12-16 10:38:44 | ||||
8楼: |
不知道string, interface等能不能自动处理。 不过如果有动态数组或者对象引用那肯定是不能直接等于的。 ---------------------------------------------- - |
作者: |
|
2010-12-17 18:42:21 | ||||
9楼: |
用CopyMemory就可以了,不用一个一个赋值 ---------------------------------------------- 兼金软件工作室 |
作者: |
|
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/ |
作者: |
|
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; end; function DisposeRecord(Var R: RecBskyCust): boolean; |
网上有这种代码了,只是因为写的较早,有些地方写的不那么言简意赅,而且在XE后的版本中有问题(因为Unicode字符的关系)
下面是精简修改过的代码,只取第一块硬盘的序列号,Win7 + XE 测试通过。需要先安装JwApi函数库,因为有些结构体在库中有声明了
- unit uGetHDSN;
- interface
- uses
- Windows, JwaWinIoctl;
- function GetIdeSerialNumber: AnsiString;
- implementation
- type
- TIdSector = packed record
- wGenConfig: USHORT;
- wNumCyls: USHORT;
- wReserved: USHORT;
- wNumHeads: USHORT;
- wBytesPerTrack: USHORT;
- wBytesPerSector: USHORT;
- wSectorsPerTrack: USHORT;
- wVendorUnique: array [0 .. 2] of USHORT;
- sSerialNumber: array [0 .. 19] of AnsiChar;
- wBufferType: USHORT;
- wBufferSize: USHORT;
- wECCSize: USHORT;
- sFirmwareRev: array [0 .. 7] of AnsiChar;
- sModelNumber: array [0 .. 39] of AnsiChar;
- wMoreVendorUnique: USHORT;
- wDoubleWordIO: USHORT;
- wCapabilities: USHORT;
- wReserved1: USHORT;
- wPIOTiming: USHORT;
- wDMATiming: USHORT;
- wBS: USHORT;
- wNumCurrentCyls: USHORT;
- wNumCurrentHeads: USHORT;
- wNumCurrentSectorsPerTrack: USHORT;
- ulCurrentSectorCapacity: ULONG;
- wMultSectorStuff: USHORT;
- ulTotalAddressableSectors: ULONG;
- wSingleWordDMA: USHORT;
- wMultiWordDMA: USHORT;
- bReserved: array [0 .. 127] of Byte;
- end;
- PIdSector = ^TIdSector;
- const
- IDE_ATA_IDENTIFY = $EC;
- function LittleToBig(Data: Word): Word;
- asm
- xchg ah, al
- end;
- function GetIdeSerialNumber: AnsiString;
- var
- hDevice: THandle;
- Size, cbBytesReturned: DWORD;
- SCIP: TSendCmdInParams;
- SCOP: PSendCmdOutParams;
- P: PWORD;
- I: Integer;
- begin
- Result := '';
- hDevice := CreateFile('\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or
- FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
- if hDevice = INVALID_HANDLE_VALUE then
- Exit;
- Size := SizeOf(TSendCmdOutParams) + IDENTIFY_BUFFER_SIZE - 1;
- SCOP := AllocMem(Size);
- SCIP.irDriveRegs.bCommandReg := IDE_ATA_IDENTIFY;
- if DeviceIoControl(hDevice, SMART_RCV_DRIVE_DATA, @SCIP, SizeOf(TSendCmdInParams) - 1, SCOP, Size,
- cbBytesReturned, nil) = False then
- begin
- FreeMem(SCOP);
- CloseHandle(hDevice);
- Exit;
- end;
- // 处理一下序列号在内存中的顺序
- with PIdSector(@SCOP^.bBuffer[0])^ do
- begin
- SetLength(Result, Length(sSerialNumber));
- P := @Result[1];
- CopyMemory(P, @sSerialNumber[0], Length(sSerialNumber));
- for I := 1 to Length(sSerialNumber) div 2 do
- begin
- P^ := LittleToBig(P^);
- Inc(P);
- end;
- end;
- FreeMem(SCOP);
- end;
- end.
转载于:https://www.cnblogs.com/CodeGear/p/4290929.html
盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录...相关推荐
- 本地网站接入外网自动填写用户名密码并登陆
本地网站接入外网自动填写用户名密码并登陆 昨天公司给安排了一项任务,让公司的网站能够点击跳转到别的公司的网站上,但是那个网站有用户登陆,公司让跳过这个登陆直接进去. 为了解决这个问题,我是想来想去,最 ...
- Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!!
Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!! QWebview调用JS,自动填写用户名和密码,并且JS模拟鼠标点击网页按钮. 下载地址:https://down ...
- 有没有大佬知道,有哪些可以在网页上自动填写账号密码并登录的方法?
有没有大佬知道,有哪些可以在网页上自动填写账号密码并登录的方法?比如说我开了十个隐身窗口,用十个小号来登录这个网站,但是手打太累了.所以想求助万能的大佬,有没有什么方法可以实现自动填写账号密码并登录的 ...
- Linux自动切换用户脚本,自动输入用户名密码
需要安装tcl 和expect包 实现自动切换用户: #!/usr/bin/expect -fspawn su - root expect "Password:" send &qu ...
- vba html网页自动登录,javascript – 使用VBA在网页中填写用户名和密码
这是我第一次尝试通过VBA导航IE浏览器. 我在尝试着: – 转到此网页https://hb2.bankleumi.co.il/e/Login.html – 填写用户名 – 填写密码 – 单击&quo ...
- html5自动填充账号密码,谷歌浏览器怎么自动填充账号密码?自动填充账号密码的方法分享...
谷歌浏览器自动填充账号密码方法图文教程,相信有很多小伙伴对此存在疑惑,接下来就跟着IEfans小编一起了解一下谷歌浏览器自动填充账号密码方法图文教程吧! 谷歌浏览器自动填充账号密码方法: 方法一: 首 ...
- php 自动生成查询密码,php自动生成新密码的两种方法
php自动生成新密码的两种方法,方法一采用的是随机种子,方法是乱序数组,异曲同工吧. 有需要的朋友可以参考下. 方法1: 代码示例: /* * php自动生成新密码自定义函数 适用环境: PHP5.2 ...
- 搜狗浏览器下 禁止浏览器自动填写用户名、密码
搜狗浏览器下,会出现把用户设置记住密码的表单(用户名和密码)乱放在,网站中其他成对出现的用户名及密码框中. 如何解决这种不负责任的可恨问题,网上有很多方案,但最终都未果. 一.先把网上搜到的方案放下: ...
- 用计算机根据姓名填充地址,如何在一个excel表格中引用另一个表格的数据,并自动填充-excel自动填写,excel按照姓名自动匹配数据...
操作如下抄: 1.首先建立好月数据表格 2.之后是要在日数据袭表格中将两个表中项目(示例,可设为其他条件)所对应的数据自动填写 3.点击输入数据的首行单元格,选择插入函百数 4.选择VLOOKUP函数 ...
最新文章
- docker删除所有容器_如何在Linux上创建,列出和删除Docker容器
- 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
- (转)Linux grep
- Loadrunner 入门连载教程
- 新手WEB开发者易出现的30个问题(转)
- inputn函数与input函数的区别
- AI赋能案例—阿里云身份证OCR识别助力实现“无接触”式政务服务!
- 修改weblogic部署的应用名称
- 区块链溯源系统架构---区块链工作笔记002
- 昌吉学院2017年计算机招生,昌吉学院
- java链式存储_Java实现链式存储的二叉树
- JAVA→JDBCJava DataBase Connectivity、存储过程Stored Procedure、事务Transaction、连接池DBCP C3P0、JDBC升级替代框架
- 让/etc/profile文件修改后立即生效
- spring管理bean容器(笔记)[继]
- linux 远程端口号,linux远程端口查看
- Android 正则表达式
- 共射级放大电路—密勒电容影响下的压摆率
- python爬虫实战,爬虫之路,永无止境
- colab上传压缩文件并解压
- 程序语言Python Tutorial(一):激发你的欲望 程序语言