By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,227 Members | 1,373 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,227 IT Pros & Developers. It's quick & easy.

How can I trap an API call by windows

P: n/a
Hi everyone,
I just wanted to know how my program can trap a particular API
call by windows. (The idea is that I want to hook all the open text
boxes and keep hooking new ones as and when they are created).

So for this i want to trap the CreateWindow or CreateWindowEx API
as that I can keep track of the handles etc. I have an idea that
this can be done by mapping the entry points of kernel32.dll,
gdi32.dll etc, just like how SoftIce does, but Im not very sure about
this.

Any suggestions or help would be greatly appreciated.

Thanks in advance,
Ali.
Nov 14 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Ali Akbar wrote:
Hi everyone,
I just wanted to know how my program can trap a particular API
call by windows.


Then you probably wanted a Windows programming group. This group is for
discussion of the C language as defined by the international C standard,
which has nothing to say about Windows or trapping APIs (whatever that
means).

-Kevin
--
My email address is valid, but changes periodically.
To contact me please use the address from a recent posting.
Nov 14 '05 #2

P: n/a
"Ali Akbar" <al******@yahoo.com> wrote in message
news:bd**************************@posting.google.c om...
Hi everyone,
I just wanted to know how my program can trap a particular API
call by windows. (The idea is that I want to hook all the open text
boxes and keep hooking new ones as and when they are created).

So for this i want to trap the CreateWindow or CreateWindowEx API
as that I can keep track of the handles etc. I have an idea that
this can be done by mapping the entry points of kernel32.dll,
gdi32.dll etc, just like how SoftIce does, but Im not very sure about
this.

Any suggestions or help would be greatly appreciated.

Thanks in advance,
Ali.


Hello,

Although this is not a "C" question, you can still search for "Detours" by
Microsoft or "API Hooking" on google.

--
Elias
Nov 14 '05 #3

P: n/a
Ali Akbar wrote:
Hi everyone,
I just wanted to know how my program can trap a particular API
call by windows. (The idea is that I want to hook all the open text
boxes and keep hooking new ones as and when they are created). So for this i want to trap the CreateWindow or CreateWindowEx API
as that I can keep track of the handles etc. I have an idea that
this can be done by mapping the entry points of kernel32.dll,
gdi32.dll etc, just like how SoftIce does, but Im not very sure about
this.


The only way that I can think of that is on topic here is to do
something like:

#define CreateWindow myCreateWindow

in the program you want to trap, and then separately write a
myCreateWindow function that does whatever you want to do
before or after calling the real CreateWindow function.

That may or may not satisfy your question.

Another way, though getting off of standard C, is to go through
the system library with a binary editor and change all
strings that say CreateWindow into something like XCreatWindow
(It must be the same length to edit in the compiled form.)

Then you can write a function called CreateWindow that will
then call XCreatWindow.

hope this helps,

-- glen

Nov 14 '05 #4

P: n/a
glen herrmannsfeldt <ga*@ugcs.caltech.edu> writes:
[...]
Another way, though getting off of standard C, is to go through
the system library with a binary editor and change all
strings that say CreateWindow into something like XCreatWindow
(It must be the same length to edit in the compiled form.)

Then you can write a function called CreateWindow that will
then call XCreatWindow.


Of course, this may not work if the system library format includes
some kind of index or hash table.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://www.sdsc.edu/~kst>
Schroedinger does Shakespeare: "To be *and* not to be"
(Note new e-mail address)
Nov 14 '05 #5

P: n/a
Kevin Goodsell <us*********************@neverbox.com> wrote in
news:r2****************@newsread2.news.pas.earthli nk.net on Wed 17 Dec
2003 01:00:23a:
Ali Akbar wrote:
Hi everyone,
I just wanted to know how my program can trap a particular API
call by windows.


Then you probably wanted a Windows programming group. This group is for
discussion of the C language as defined by the international C standard,
which has nothing to say about Windows or trapping APIs (whatever that
means).

-Kevin


<OT>
From what I understand, it means catching a call to an API (the hooks an
OS provides to application programs) so you can execute your code in
response to that call before the OS has a chance to do anything.

It is, of course, offtopic here.
</OT>

Nov 14 '05 #6

P: n/a
al******@yahoo.com (Ali Akbar) writes:
I just wanted to know how my program can trap a particular API
call by windows. (The idea is that I want to hook all the open text
boxes and keep hooking new ones as and when they are created).


Your question is outside the domain of comp.lang.c, which discusses
only the standard C programming language, including the standard C
library. This is a remarkably narrow topic compared to what many
people expect.

For your convenience, the list below contains topics that are not
on-topic for comp.lang.c, and suggests newsgroups for you to
explore if you have questions about these topics. Please do
observe proper netiquette before posting to any of these
newsgroups. In particular, you should read the group's charter
and FAQ, if any. If those fail to answer your question then you
should browse through at least two weeks of recent articles to
make sure that your question has not already been answered.

* OS-specific questions, such as how to clear the screen,
access the network, list the files in a directory, or read
"piped" output from a subprocess. These questions should be
directed to OS-specific newsgroups, such as
comp.os.ms-windows.programmer.misc, comp.unix.programmer, or
comp.os.linux.development.apps.

* Compiler-specific questions. Ask about these in
compiler-specific newsgroups, such as gnu.gcc.help or
comp.os.ms-windows.programmer.misc.

* Processor-specific questions, such as questions about
assembly and machine code. x86 questions are appropriate in
comp.lang.asm.x86, embedded system processor questions may
be appropriate in comp.arch.embedded.

* ABI-specific questions, such as how to interface assembly
code to C. These questions are both processor- and
OS-specific and should typically be asked in OS-specific
newsgroups.

* Algorithms, except questions about C implementations of
algorithms. "How do I implement algorithm X in C?" is not a
question about a C implementation of an algorithm, it is a
request for source code. Newsgroups comp.programming and
comp.theory may be appropriate.

* Making C interoperate with other languages. C has no
facilities for such interoperation. These questions should
be directed to system- or compiler-specific newsgroups. C++
has features for interoperating with C, so consider
comp.lang.c++ for such questions.

* The C standard, as opposed to standard C. Questions about
the C standard are best asked in comp.std.c.

* C++. Please do not post or cross-post questions about C++
to comp.lang.c. Ask C++ questions in C++ newsgroups, such
as comp.lang.c++ or comp.lang.c++.moderated.

news.groups.questions is a good place to ask about the appropriate
newsgroup for a given topic.
--
"When I have to rely on inadequacy, I prefer it to be my own."
--Richard Heathfield
Nov 14 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.