|
The following used just fine before I reinstalled VC++.. I am not sure what I forgot to install or set:
Set FSO = CreateObject("Scripting.FileSystemObject")
But now this line generates:
ActiveX component can't create object: 'Scripting.FileSystemObject'
Does anyone know what's wrong?
Vitaly Belman
|
|
|
|
|
Hi!
I want to remotely close an app. What I already tried was to use SendMessage() with messages like WM_CLOSE, WM_QUIT, WM_ENDSESSION and so on. I want to close the filesharing program "KaZaA". But for some reason it does not like the messages
WM_CLOSE: Kazaa simply minimizes itself
WM_QUIT: Nothing happens
WM_ENDSESSION: Kazaa quits, but it crashes
Is there another SMOOTH way to close an app so that it still will be able to finish some tasks before quitting?
thanks in advance
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Try using Spy focused on Kazaa to see the messages it receives on closing.
rechi
|
|
|
|
|
Seems like Kazaa processes WM_DESTROY and WM_NCDESTROY, but it doesn't help work if I send them via SendMessage()
modified 12-Sep-18 21:01pm.
|
|
|
|
|
This might be a little tricky, but you could try to simulate the user clicking "Close" in the trayicon menu
Cheers, Marc Click to see my *real* signature
|
|
|
|
|
I already thought about this option, but have no clue how to do that
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
try sending WM_SYSCOMMAND, wParam=SC_CLOSE, lParam=0
|
|
|
|
|
This minimizes the window into the tray
modified 12-Sep-18 21:01pm.
|
|
|
|
|
okay, then send a close request to the mainframe (the parent window which is creating the systray icon and main dialogs).
If Kazza is an MFC application I would send a WM_COMMAND with wParam=ID_APP_EXIT. Or try spying which messages Kazza is sending to itself when terminating.
PS: are you doing a new P2P worm?
|
|
|
|
|
*lol*, no
I'm coding a plugin for a Half-Life/CounterStrike server joining tool, which terminates filesharing programs in order to prevent lags when joining a server.
Back to topic:
It seems line Kazaa sends WM_COMMAND with following values:
wParam 00008066
lParam 00000000
maybe this works
SendMessage(wndKazaa, WM_COMMAND, ???, 0);
with what do I replace the three questionmarks?
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Use the aforementioned Spy++ utility to see what message(s) get sent to it when it is closed from the context menu.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
Anyone has any sample code for inserting an image into a BLOB field of a DB2 table using VC++ 6.0?
Please help.
|
|
|
|
|
I use this:
STDMETHODIMP CMediaServer::GetUrnList(BSTR *pRetval)
{
char *sz=global_heart.m_pDataBase->GetUrnList();
if (sz)
{
*pRetval=_bstr_t(sz);
delete [] sz;
}
return S_OK;
}
to obtain a string from an interface, and this:
BSTR x;
((IMediaServer *)ptr)->GetUrnList(&x);
_bstr_t xx(x, FALSE);
CString szMan;
szMan.Format("%s", xx);
AfxMessageBox(szMan);
to test the stuff. The string in the message box is something unreadable, so i'm asking: where is the mistake?
rechi
|
|
|
|
|
Bogdan Rechi wrote:
szMan.Format("%s", xx);
The mistake is there
Format takes variable number of args and so xx would not be converted to char*.
The correct way is
CString szMan;
const char* chxx = xx;
szMan.Format("%s", chxx);
|
|
|
|
|
Anonymous wrote:
<br />
CString szMan; <br />
const char* chxx = xx;<br />
szMan.Format("%s", chxx);<br />
That code is attempting to cast a BSTR/_bstr_t to a const char * , which is a no-no.
And, if all you need to so is display the contents of the BSTR as an ASCIIZ string, you can change %s to a %S (uppercase) and it will treat the parameter as a wide string, which is what a BSTR contains:
<br />
szMan.Format( _T( "%S" ), x );
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
This solution suffer from the same problem than the original code that you try to correct...
Conversions operators are not called for function which variables arguments and the whole object is push on the stack.
_bstr_t is not a BSTR. It's an object that contains a pointer to a sub-object that will hold the BSTR and the converted string (if it was asked).
Philippe Mori
|
|
|
|
|
> This solution suffer from the same problem than the original
> code that you try to correct...
If you are referring to my typo, then yes. If you are saying that I cannot use a BSTR like that, then no.
> Conversions operators are not called for function which variables
> arguments and the whole object is push on the stack
That is why the format specifiers tell _stprintf/CString::Format(...) how to treat the parameter:
>> szMan.Format( _T( "%S" ), x );
Under an ANSI build, the "%S" (remember: UPPERCASE) tells CString::Format(...) to treat the passed parameter as a WIDE STRING, which is what x (a BSTR ) really is: A BSTR is a specially allocated _wchar_t string with a length value (a DWORD ) 4-bytes before the pointer value.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
Hmmm... I am under the impression that when the temporary bstr_t object is destroyed, it deallocates the BSTR it wrapped...? That would cause the BSTR you return to be invalid. Try looking at the contents (not value) of *pRetval in the debugger right when you get to the delete [] sz line.
You should just be using SysAllocString(...) directly, similar to:
<br />
#include <AFXPriv.h>
<br />
USES_CONVERSION;<br />
<br />
*pRetval = ::SysAllocString( A2CW( sz ) );<br />
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
No! The BSTR object is valid. _bstr_t in this case is just attaching itself to the object without handling the memory allocation/deallocation process.
Thanx to both of you for the efforts and time spent.
rechi
|
|
|
|
|
Be VERY CAREFUL here (look into what I say before answering): (Assuming VC++ 6.0 here) When your code assigns the _bstr_t object to the dreferenced BSTR pointer, all you are doing is calling _bstr_t::operator wchar_t*(...) , NOT a BSTR -specific operator, which would correctly COPY the BSTR . When the temporary object goes out of scope, the contained BSTR gets SysFreeString(...) -ed, so you have just returned an already-freed BSTR to the caller! Sooner or later, code like that is gonna break down.
Again: do not use a shotgun to kill a fly: correctly use SysAllocString(...) directly to allocate the BSTR that is going to be returned to the caller.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
[Get Check Favorites 1.4 Now!]
|
|
|
|
|
I have a COM object that starts Microsoft Word and opens a word document. The user can make any modifications to the docunment. I added a special button that is going to be used to save the document and exit Microsoft Word. Unfortunately, I am not sure how to capture the event to know the button has been hit. I have looked through the posts and articles and there is a lot of information if you are an ATL server. But this is an MFC-based COM object and is not an ATL server. Does anyone know what do I need to do, in plain english, to determine when my button has been hit. Am I going to have to make it an ATL server to get the event and if so, how do I do that?
PLEASE HELP!!!!!
|
|
|
|
|
you've asked this question at least three times in the past 24 hours. if you haven't received an answer, it's probably because nobody here knows.
-c
Cheap oil. It's worth it!
|
|
|
|
|
Way to go dude, I must admit you have to be the biggest jackass I have noticed on this messageboard. If you don't have a reply that is helpful, don't leave any reply at all!
|
|
|
|
|
you didn't really give us much to work with so, what do you expect?
but:
did you try Q183599 in the MSDN "HOWTO: Catch Microsoft Word97 Application Events Using VC++" ?
did you look at: "Automation And Eventing With Microsoft Word" http://www.codeguru.com/atl/wordauto.shtml ?
did you look at: http://www.codeproject.com/com/word_ole_bm.asp ?
how about : http://msdn.microsoft.com/library/en-us/dnguion/html/drgui102599.asp ?
Cheap oil. It's worth it!
|
|
|
|
|
Yes, I have looked at all of these examples and they do not necessarily match the scenario I have now. I am using Automation to call MS Word, next I open a document, then I dynamically add a button to the Word toolbar using the commandbars functions. But none of the above examples will work, since they all use ATL and my application does not. All I am looking for is some knowledge as to how I can capture the event that the button that I dynamically created, not one that is on a dialog box or so forth, was pushed. If it was going to cause this much controversy, I would not have put my post out here. I noticed another person's post, Al_ something or other, having a similar problems. So it isn't just me having problems...
By the way, thank you for the advice but it didn't help...
|
|
|
|