|
Hey All,
I am in need of some function or library that will allow me to intercept (or spy on) messages in a third-party application (essentially any application) similar to Spy++. I noticed an application posted here called InterSpy, but it uses hooks and you need to add code to your application to spy on messages. Spy++ obviously doesn't require this since you can spy on any application. Does anyone know how Spy++ works?
Tom
|
|
|
|
|
I think global hooks can be used without injecting any code into the target application. SetWindowsHookEx with dwThreadId set to 0 seems to watch on every thread within the desktop, from what the docs say.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I was thinking the same thing.
A global system hook should catch messages without any code in the target application. That's what a global hook does.
hey
|
|
|
|
|
|
I thought the source for Spy++ was came with the MS Platform SDK. Aren't there other articles here on CP about hooking into other apps. I'd also be looking on MSDN. I'm sure you'll find articles there on doing this stuff.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Take a look at the Winspector program in the free tools section here. Its a home grown version of spy which works a lot better in many ways. The only problem is that the source is not available, but you can get hold of the exe.
Roger Allen
Sonork 100.10016
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003
|
|
|
|
|
how to get HTTP POST data before sending request from multipart/form-data encoded form ?
This kind of forms gives empty post data in this event, and headers parameter contains chaotic part of data sent, like this :
Content-Type: multipart/form-data; boundarrt/form-data; boundary=--------------7d3892
and that's all what is sent.
It must be some bug in IE (i have 5.0), or htmlview, but i couldn't find anything on net about this ?
Anybody has the idea what's wrong ?
Thank you
rrrado
|
|
|
|
|
You can not do this from view....
Pluggable protocol/filter is your best bet.
|
|
|
|
|
But how to make mime filter and attach it to one instance of webbrowser ?
I've never wrote any mime filter or pluggable protocol, but it seems to be only
permanent or tmporary, but both types seems to be global for all instances of IE. I don't want this filter to be called even if user is browsing in IE outside my application.
Thank you !
rrrado
|
|
|
|
|
1) Even if you wanted you can not make app, or mime global for default protocol such as http.
2) Just register temporary proxy app / or filter and you will get access to bindinfo.stgmedData
Brian
|
|
|
|
|
can u post an article on how u solved this problem after u solve this.thx
qrious
|
|
|
|
|
Help wanted!
I need to create a resourceless dialog box. I want it to use a WndProc instead if a DlgProc, and I want to use CreateWindow instead of CreateDialog or variants.
Is there a standard window class which I can use to accomplish this task?
I was thinking of:
CreateWindow(TEXT("DIALOG"), TEXT("HELLO"), WS_VISIBLE, ...)
^^^^^^
The window class
Thanks in advance
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
S van Leent wrote:
Is there a standard window class which I can use to accomplish this task?
No, you have to create your own. The closest thing to this is using a standard/common style bit when creating your own class.
Here's a typical one. And, hInstance should be the same value that's passed to your WinMain () procedure.
TCHAR szClassName[] = _T("Pick Something Unique");
WNDCLASS wc;
...
wc.style = CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINFRAME);
wc.lpszClassName = szClassName;
RegisterClass(&wc);
...
hWnd = CreateWindow(szClassName,
_T("Hey"),
WS_OVERLAPPEDWINDOW,
100, 100,
200, 200,
NULL,
NULL,
hInstance,
NULL);
Jeremy Falcon
|
|
|
|
|
Well then, is there a way to at least create a dialogbox without a resource?
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
Check out CreateDialogIndirect ().
Jeremy Falcon
|
|
|
|
|
Thanks, though I'm using CreateDialogIndirectParam and DialogBoxIndirectParam right now
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
I'm using a richedit control in my mdi program w/controlbars and i'm having issues with the font changing on me.
I'm using the richedit control to display information in a control bar, this control consists of a tab window with 4 tabs, each being a richedit control (i'm trying for something like the message window in visual studio 6.) I'm having issues setting fonts, i'm able to set them initially but they change on me when certain actions happen within the program. I can get the font to change on me when i run the program, do something to make messages appear, click and highlight the message text, and do another task to make more messages appear. If i only click and not highlight text in that richedit control, the font does not change. There are a few other random events that cause this change but i cannot pinpoint the steps that caused it. Is there some way to set a font permanently for the control? What would be the best place to set a font for this control initially so that it's unlikely to be changed?
I'm using Visual Studio 6, with Stingray library.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
are you using SetSelectionCharFormat(CHARFORMAT) or SetFont(&CFont, TRUE)
???
also, I assume you were talking about CRichEditCtrl
hey
|
|
|
|
|
Yeah i was using the SetSelectionCharFormat(). I went over my code and apparently i was missing the SetDefaultCharFormat() and it seems to solve the problem.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
glad to hear you worked it out
hey
|
|
|
|
|
I can not answer your question but I can say that I have spent days trying solve similar problems. Your case complicates this Stingray library from which I have no experience.
One idea could be to try to find all CHARFORMAT PARAFORMAT or CHARFORMAT2 PARAFORMAT2 structures and modify their dwMask member. That would give you some control over what is changed.
jhaga
CodeProject House, Paul Watson wrote:
...and the roar of John Simmons own personal Nascar in the garage. Meg flitting about taking photos.Chris having an heated arguement with Colin Davies and .S.Rod. over egian values. Nish manically typing *censur*. Duncan racing around after his pet *c.* Michael Martin and Bryce loudly yelling *c.* C.G. having a fit as Roger Wright loads up *c.* . Anna waving her *c.* and Deb scoffing chocolates in the corner.
...Good heavens!
|
|
|
|
|
"One idea could be to try to find all CHARFORMAT PARAFORMAT or CHARFORMAT2 PARAFORMAT2 structures and modify their dwMask member. That would give you some control over what is changed."
???, it would only give it control if that CHARFORMAT was being selected into the A CRichEditCtrl.
dwMask should always be filled with all bit flags even if you're not using them,
CHARFORMAT cf;
cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD | CFM_ITALIC | CFM_STRIKEOUT | CFM_UNDERLINE;
or the RTF box will inherit properties from the last CHARFORMAT that was selected into it, or default if none.
having all bitwise flags on dwMask then setting dwEffects to 0 like hmmm...( cf.dwEffects = 0; ) will kill all previous styles of the RTF selected font
This ensures that no other previous styles are lingering.
Alternatively, if you never change the font and are just using the RTF box because it has an autoscroll and CEdit doesn't, you can use SetFont(&CFont, TRUE), then you don't have to worry about all that crap.
hey
|
|
|
|
|
Yes, you are talking about CRichEditCtrl and I am not. Maybe I should start using CRichEditCtrl...
jhaga
CodeProject House, Paul Watson wrote:
...and the roar of John Simmons own personal Nascar in the garage. Meg flitting about taking photos.Chris having an heated arguement with Colin Davies and .S.Rod. over egian values. Nish manically typing *censur*. Duncan racing around after his pet *c.* Michael Martin and Bryce loudly yelling *c.* C.G. having a fit as Roger Wright loads up *c.* . Anna waving her *c.* and Deb scoffing chocolates in the corner.
...Good heavens!
|
|
|
|
|
I'd like to create an installation file for my
application that could install all DLLs required
by my app.
I'he seen that "Depends" tool (Visual Studio Tool)
shows all DLLS used by the application...
but... how can I discriminate DLLs that are alway
installed by the OS and other DLLs (not always installed)??
Thanks a lot !!!
|
|
|
|
|
Anonymous wrote:
but... how can I discriminate DLLs that are alway
installed by the OS and other DLLs (not always installed)??
Check MSDN and/or look at the property page for the DLL in question. If it's a MS DLL, look at the "Product Name" section and if it's an OS DLL you should see something like "Microsoft(R) Windows (R) 2000 Operating System" for its value.
Of course, you'll still have to worry about versioning info - that's where MSDN is extremely useful.
This was tested with Win2K using gdi32.dll btw.
Jeremy Falcon
|
|
|
|