读书人

求高手hook其他程序DBGRID后增加多

发布时间: 2013-01-27 13:55:24 作者: rapoo

求高手,hook其他程序DBGRID后,增加多条数据报错
注入程序进程后,获取到了DBGRID code:


vWinControl := FindControl(g_hWin);
for I := 0 to vWinControl.ComponentCount - 1 do
begin
if SameText(vWinControl.Components[I].ClassName, 'TDBGridE') then
begin
DBGRID := TDBGrid(vWinControl.Components[I]);
Break;
end;
end;


后面

DataSet := DBGRID.DataSource.DataSet;
for i:=1 to 10 do
begin
DataSet.Insert;
dataset.Fields[7].AsString:=ExcelApp.Cells[ih,1].Value;
dataset.Fields[8].AsString:=ExcelApp.Cells[ih,2].Value;
dataset.Fields[9].AsString:=ExcelApp.Cells[ih,3].Value;
dataset.Fields[10].AsString:=ExcelApp.Cells[ih,4].Value;
dataset.Fields[11].AsString:=ExcelApp.Cells[ih,5].Value;
dataset.Fields[12].AsString:=ExcelApp.Cells[ih,6].Value;
dataset.Fields[4].AsString:=ExcelApp.Cells[ih,7].Value;
DataSet.Post;
end;

第一条导入OK,第二条导入后发现DBGRID里2条数据内容一模一样
不管加不加dataset.next;

showmessage(inttostr(dataset.recordcount));

内容=1

最后一个难关了。研究了N天了。就差这个了。求HELP


dataset的字段有18个。我用程序自己添加数据,然后获取这18个字段的数值跟导入一条获取的数据,18个字段是一样的。
问题会出在哪里呢。。

[解决办法]
把ih换成i试试?
[解决办法]
这里看不出问题,可以这样测试,先不从Excel取数,只是连续添加一些简单的数据,看看结果如何

for i:=1 to 10 do
begin
DataSet.Insert;
dataset.Fields[7].AsString:=inttostr(i);
DataSet.Post;
end;



[解决办法]
'TDBGridE'应该是'TDBGrid'吧?
[解决办法]
Good idea
引用:
这里看不出问题,可以这样测试,先不从Excel取数,只是连续添加一些简单的数据,看看结果如何

for i:=1 to 10 do
begin
DataSet.Insert;
dataset.Fields[7].AsString:=inttostr(i);
DataSet.Post;
end;

读书人网 >.NET

热点推荐