|
I don't see any info on PostMesage in the MSDN, where can I find some info on that?
(edit - nevermind I found the page in the msdn)
|
|
|
|
|
sorry, right function name is : PostMessage (return at once) or SendMessage (return after executing).
includeh10
|
|
|
|
|
I'm afraid you're out of luck. This control is not a standard edit box and seems not to be using the "caption" as the displayed message (which is how edit boxes behave). Maybe there's some custom message than can be used to set this control's content, but unless you've got additional info this is like looking for a needle in a haystack.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Yea, that is kinda what I was thinking too. but there has to be a away, I must be able to make the computer do as I wish, hehe. So I guess I email the programmers of the program and see if they will help me any.
Thanks for all your help, and if any more information about this can help me, please let me know.
Quinn
|
|
|
|
|
Hey everyone. I'm trying to get the CInternetSession class do asynchronous fetching of web pages and I'm having some troubles. I have my class derived from CInternetSession (cleverly named "IgnorantInetSession" since it should essentially ignore results) and I keep getting assertion errors when the object is initialized. The class declaration is:
class CIgnorantInetSession : public CInternetSession
{
public:
CIgnorantInetSession(LPCTSTR pstrAgent = NULL,
DWORD dwContext = 1,
DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,
LPCTSTR pstrProxyName = NULL,
LPCTSTR pstrProxyBypass = NULL,
DWORD dwFlags = 0);
virtual ~CIgnorantInetSession();
void CIgnorantInetSession::OnStatusCallback(DWORD_PTR dwContext,
DWORD dwInternetStatus, LPVOID lpvStatusInformation,
DWORD dwStatusInformationLength);
};
In the constructor, I call EnableStatusCallback(TRUE); - this throws the asssertion problem. The function implementing the callback looks like so:
void CIgnorantInetSession::OnStatusCallback(DWORD_PTR dwContext,
DWORD dwInternetStatus, LPVOID lpvStatusInformation,
DWORD dwStatusInformationLength)
{
CInternetSession::OnStatusCallback(dwContext, dwInternetStatus,
lpvStatusInformation, dwStatusInformationLength);
}
Does anyone know what's going on here? Thanks!
Luke Reeves (LukeyBoy)
luke@oceanlake.com
|
|
|
|
|
Accoring to MSDN, to handle any operations asynchronously, three conditions must be set: - In the constructor, dwFlags must include
INTERNET_FLAG_ASYNC .
- In the constructor,
dwContext must be set to one.
- You must establish a call back function by calling
EnableStatusCall() . /ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Yeah, I do exactly that. The call to the constructor is:
CIgnorantInetSession session(0, 1, PRE_CONFIG_INTERNET_ACCESS, 0, 0, INTERNET_FLAG_ASYNC);
session.EnableStatusCallback(TRUE);
It should work just fine, but it still doesn't.
|
|
|
|
|
Where does it assert?
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
|
That's not helpful. Please post the exact condition that asserted. My INET.CPP line 415 is the arglist of the constructor.
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Debug Assertion Failed is the message, then a generic RTFM blurb. The actual assert statement is:
ASSERT((dwFlags & INTERNET_FLAG_ASYNC) == 0);
|
|
|
|
|
I recall this annoying problem - caused by bogus MS doc. Hang on a sec while I find my fix...
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Can you try using INTERNET_OPEN_TYPE_PROXY instead of INTERNET_FLAG_ASYNC ?
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
This[^] is the query similar to yours. I wish MS would fix their online docs.
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Still no go. Now I get an assert error in inet.cpp, 645 (when I enable the callback). The line is:
ASSERT(!m_bCallbackEnabled);
|
|
|
|
|
Ugh. I'm going to dig some more...
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Here's[^] an alternate approach. I'm still looking for the fix...
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Apparently asynch support in CInternetSession has gone away. See this MSDN link[^].
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Humor me one more time. Can you try this:
CMyInternetSession::CMyInternetSession()
: CInternetSession
("FooBar", 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)
{
EnableStatusCallback (TRUE);
} /ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Seems to work for me! My callback gets called.
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
You're gonna hate me... but it still doesn't work . Several callback events get fired correctly, but then an assertion fails again that looks like:
ASSERT(m_bCallbackEnabled != NULL);
And the bigger problem is that the call now isn't asynchronous - it blocks the whole process until the callback events. Ouch. If I can't figure this out I'm never gonna touch MSVC again!!! Just kidding.
|
|
|
|
|
I fear I was too quick to claim success.
Callbacks are indeed supported, but apparently MS never got around to making CInternetSession asynch. I suppose the only way to do asynch downloads (using CInternetSession ) is by using threads. But this CP article[^] may shed more light than I was able to provide.
Good luck!
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
That's probably the easiest way in the end. Thanks for all the help Ravi!
|
|
|
|
|
I need to encode a .exe file in order to put its content into some XML's CDATA. Is there any code here on CP handling such task?
rechi
|
|
|
|
|
If you're not searching for any particular encoding mechanism, one of the simplest is to substitute every byte by its representantion in hexadecimal. Doing such a coder/encoder is trivial.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|