Hamlet081299
asked on
File access in DLL for windows hook
With some help from old answers I have managed to get a couple of windows hooks working (thanks to past contributors!) ... but now when I try to access files ... problems!
I tried something REALLY SIMPLE using TFileStream, like so...
outFile := 'c:\test.out';
with TFileStream.Create(transFi le, fmCreate or fmShareCompat) do try
Write('TEST', 4);
finally
Free;
end;
... but it crashes the application from which the hook event eminated ... No data written.
So I'm assuming there are some things I have to do to be a little more careful when attempting this stuff.
Now here comes the ugly part... Those with a faint heart, go no further ...
I am using Delphi 3 (because of certain BDE compatibility issues within the hooking app)
Wait, it gets worse!
The app being hooked is a 16-bit app.
I'm not sure if these a contributing factors, but heck if I knew why it was happening I'd just fix it and stop bothering you.
I tried something REALLY SIMPLE using TFileStream, like so...
outFile := 'c:\test.out';
with TFileStream.Create(transFi
Write('TEST', 4);
finally
Free;
end;
... but it crashes the application from which the hook event eminated ... No data written.
So I'm assuming there are some things I have to do to be a little more careful when attempting this stuff.
Now here comes the ugly part... Those with a faint heart, go no further ...
I am using Delphi 3 (because of certain BDE compatibility issues within the hooking app)
Wait, it gets worse!
The app being hooked is a 16-bit app.
I'm not sure if these a contributing factors, but heck if I knew why it was happening I'd just fix it and stop bothering you.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
oh shoot ... could be just a nasty cut and paste error ...
Originally I was reading some data from transfile and writing it to outfile. When I had problems I simplified, but completely missed that booboo.
I'll check it out tomorrow --- Geo might have just earned himself the easiest 300pts ever!
And Madshi ... yes you can write a string like that. Delphi easily handles literal constants as PChars. I'm not sure why you would think that wouldn't work.
Ironically when I got the email notification, I thought "Aha, Madshi is onto it, all my problems will be solved..." ;-)
Originally I was reading some data from transfile and writing it to outfile. When I had problems I simplified, but completely missed that booboo.
I'll check it out tomorrow --- Geo might have just earned himself the easiest 300pts ever!
And Madshi ... yes you can write a string like that. Delphi easily handles literal constants as PChars. I'm not sure why you would think that wouldn't work.
Ironically when I got the email notification, I thought "Aha, Madshi is onto it, all my problems will be solved..." ;-)
Ha, you got me!! :-) That really works. I thought it doesn't work because "Write(strVar, Length(strVar))" doesn't work, either. But it seems that once more I underestimated Delphi's intelligence...
Regards, Madshi.
Regards, Madshi.
If it's the problem then you are right - easy. You just pasted the proper piece of code here, short but sufficient. Sometimes such errors are so difficult to find.
About 'Write': I didn't see that! If I had seen it I would have said the same as Madshi did. New things to learn every day.
Regards, Geo
About 'Write': I didn't see that! If I had seen it I would have said the same as Madshi did. New things to learn every day.
Regards, Geo
ASKER
Yeah, it's handy with constants that generally Delphi makes a smart decision about how to treat it.
I just tried it out and found it was just a stupid cut and paste!!!
Thanks Geo
I just tried it out and found it was just a stupid cut and paste!!!
Thanks Geo
Thanks a lot. The pleasure was mine.
Write(pchar('TEST')^, 4);
Regards, Madshi.