• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 274
  • Last Modified:

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(transFile, 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.
0
Hamlet081299
Asked:
Hamlet081299
  • 3
  • 2
  • 2
1 Solution
 
geobulCommented:
Hi,

Shouldn't it be 'outFile'?

with TFileStream.Create(outFile, fmCreate or fmShareCompat) do try

What kind of hook are you using?

Regards, Geo
0
 
MadshiCommented:
You can't write a string like that. This should work:

Write(pchar('TEST')^, 4);

Regards, Madshi.
0
 
Hamlet081299Author Commented:
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..."  ;-)
0
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

 
MadshiCommented:
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.
0
 
geobulCommented:
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
0
 
Hamlet081299Author Commented:
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
0
 
geobulCommented:
Thanks a lot. The pleasure was mine.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now