监控打印机打印内容.难哦.高手请进来指导,菜鸟进来听大大指导.(200分)

  • 主题发起人 主题发起人 007vivi
  • 开始时间 开始时间
其实很明显,想不花钱达到花钱的效果,至少都要付出时间的。
这个东西没人会肯免费提供的,按你说都8年了,那你的工资比这个软件贵多了。
 
监控一台电脑还行,要是很多台的话,就无能为力了.不过大家可以把这个当技术问题来探讨
 
to 老白:
我不是想免費得到什麽東西,天下沒有免費的午餐!!!我只想和那些共同遇到這樣問題的朋友一起討論討論,起碼的思路也可以。
 
最近怎麽上不了DFW??鬱悶中。。。
 
请各位帮我看看为什么不对
function Tform1.updatetable(ados:Tadoquery;lcTable:string):Boolean;
var
i:integer;
msql:string;
lnparm:string;
lnkey:variant;
msql1,msql2,msql3:string;
adod:Tadoquery;
// lcold,lcnew:variant;
begin
lnparm:='';
msql:='';
adod:=Tadoquery.Create(nil);
adod.Connection:=form1.ADOConnection1;
adod.Close;
adod.SQL.Clear;
lnkey:=ados.Fields[0].AsInteger;
if (lnkey>0) then
begin
msql1:='update '+lcTable +' set ';
msql2:='';
msql3:='';
for i:=1 to ados.FieldCount-1 do
if ((copy(ados.Fields.FieldName,0,2) <> 'tmp') and (ados.Fields.FieldName <> 'iren') and (ados.Fields.FieldName <> 'idate') and (ados.Fields.FieldName <> 'uren') and (ados.Fields.FieldName <> 'udate')) then
begin
if ados.Fields.OldValue<>ados.Fields.Value then ----> ERROR "Invaild variant operation" please help me
msql2:=msql2+ados.Fields.FieldName+'=:'+ados.Fields.FieldName+',';
end;
// end;
msql2:=copy(trim(msql2),0,length(trim(msql2))-1);
if (length(msql2) <> 0) then
begin
msql1:=msql1+msql2+',uren=:uren,udate=:udate where id=:id';
adod.SQL.add(msql1);
for i:=1 to ados.FieldCount-1 do
begin
if ((copy(ados.Fields.FieldName,0,2) <> 'tmp') and (ados.Fields.FieldName <> 'iren') and (ados.Fields.FieldName <> 'idate') and (ados.Fields.FieldName <> 'uren') and (ados.Fields.FieldName <> 'udate')) then
begin
if [red]ados.Recordset.Fields.OriginalValue<>ados.Recordset.Fields.Value[/red] then ---
begin
lnparm:=ados.Fields.FieldName ;
adod.Parameters.ParamByName(lnparm).Value:=ados.Fields.Value;
end;
end;
end;
adod.Parameters.ParamByName('uren').Value :='admin';
adod.Parameters.ParamByName('udate').Value:=now();
adod.Parameters.ParamByName('id').value:=ados.Fields[0].Value;
adod.Prepared:=true;
try
adod.ExecSQL;
result:=true;
except
result:=false;
end;
adod.Free;
end;
end
else
begin
msql1:=' insert into '+lcTable+ '(';
for i:=1 to ados.FieldCount-1 do
begin
if ((copy(ados.Fields.FieldName,0,2) <> 'TMP') and (ados.Fields.FieldName <> 'UREN') and (ados.Fields.FieldName <> 'UDATE')) then
begin
msql2:=msql2+ ados.Fields.FieldName+',';
msql3:=msql3+':'+ados.Fields.FieldName+',';
end;
end;
msql2:=copy(trim(msql2),0,length(trim(msql2))-1);
msql3:=copy(trim(msql3),0,length(trim(msql3))-1);
msql:=msql1+msql2+') values('+msql3+')';
adod.SQL.Add(msql);
for i:=1 to ados.FieldCount-1 do
begin
if ((copy(ados.Fields.FieldName,0,2) <> 'TMP') and (ados.Fields.FieldName <> 'UREN') and (ados.Fields.FieldName <> 'UDATE')) then
begin
lnparm:=ados.Fields.FieldName ;
adod.Parameters.ParamByName(lnparm).Value:=ados.Fields.Value;
end;
end;
adod.Prepared:=true;
try
adod.ExecSQL;
result:=true;
except
result:=false;
end;
adod.Free;
end;
end;
 
怎麽在這裡發?你很缺少分?或者....
 
考虑弄个虚拟的打印机呢,记录下来内容再转到物理打印机
没做过
提供个思路
 
Thanks!I will see.
Let's go on this problem!ok??
 
ring3搞不定吧,如果想很流畅话,
建议楼主从文件HOOK中想办法。
 
还是在思考与尝试中....
 
考虑弄个虚拟的打印机呢,记录下来内容再转到物理打印机,that's ok!!!!!!!!!!!!
1,2,3,4(局域网的机器)->A(安装虚拟驱动的机器,监视程序)->B(安装真实驱动,打印机的机器),A的内容最好不要在B上,因为你控制不了用户选择打印驱动!!
 
帖子終于在地震中沉下去了。。。阿門。。。
 
搞定,接貼。。
 
多人接受答案了。
 
后退
顶部