[ExtractStream] Released: TyTool alpha #1.
Don Starr
don at s...
Mon, 27 May 2002 12:26:15 -0700
The EM_REPLACESEL message really uses -1 as the LPARAM (forgot about
the sign extension when pushing an 8- or 16-bit immediate operand). So
the whole function is just a printf() to the end of a window's text.
In this case, the window is the edit control that appears to be used
for message output (I don't know, since I've never run the app).
BTW: who needs stinkin' debug symbols :)
-----Original Message-----
From: Don Starr [mailto:don@s...]
Sent: Monday, May 27, 2002 12:05 PM
To: ExtractStream@yahoogroups.com
Subject: RE: [ExtractStream] Released: TyTool alpha #1.
It's a call to wvsprintf (in USER32.DLL) from TyTool.exe offset
0x00405168. It's the SECOND call from this location in TyTool. The
first call passes "Ready...<cr><lf>" as the format string. The second
call passes NULL as the format string.
. . . time passes . . .
After a little more investigation, it appears there's a function like
the following:
void func( HWND wnd, const char *fmtString, ... )
{
char buffer[1024];
int len = SendMessage( wnd, WM_GETTEXTLENGTH, WPARAM(0),
LPARAM(0) );
va_list args;
va_start( args, fmtString );
wvsprintf( buffer, fmtString, args );
SendMessage( wnd, EM_SETSEL, WPARAM(len), LPARAM(0xFF) );
SendMessage( wnd, EM_REPLACESEL, 0, buffer );
va_end( args );
}
This function is called twice. In both cases, the HWND is an edit
control in the "Tivo Client" dialog. The first call passes
"Ready...<cr><lf>" in <fmtString>. The second call passes NULL,
blowing up wvsprintf().
The edit control is the read-only, multiline control with ID 1005.
-Don