|
All right, thanks!
---------------
Tired of Spam? Introducing InboxShield® for Microsoft® Outlook®
http://www.edovia.com
|
|
|
|
|
Dito, the new classes are much sweeter than the old USES_CONVERSION -based macros.
--
Shine, enlighten me - shine
Shine, awaken me - shine
Shine for all your suffering - shine
|
|
|
|
|
strMessage is a BSTR
c_pcSource is a TCHAR*
void SetSource( TCHAR * p_pcSource )
{
c_pcSource = p_pcSource;
}
this:
a_oStream.SetSource( COLE2T( strMessage ) );
will somehow corrupt c_pcSource... it's content will be trash... If I use OLE2T instead, it works... why?
---------------
Tired of Spam? Introducing InboxShield® for Microsoft® Outlook®
http://www.edovia.com
|
|
|
|
|
LukeV wrote:
it's content will be trash... If I use OLE2T instead, it works... why?
Dunno, sounds strange. Maybe a bug in ATL7...
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Topic says it all.. what should be used when passing parameters to a function?
Thanks!
---------------
Tired of Spam? Introducing InboxShield® for Microsoft® Outlook®
http://www.edovia.com
|
|
|
|
|
Normally I use T2Ole, works fine.
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Anders Molin wrote:
Normally I use T2Ole, works fine.
CT2OLE or T2OLE? If it's T2OLE, then you've got me confused!
---------------
Tired of Spam? Introducing InboxShield® for Microsoft® Outlook®
http://www.edovia.com
|
|
|
|
|
CT2OLE
I used to use T2OLE.
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Those do entirely different things. T2OLE converts a TCHAR string to a Unicode string. SysAllocString() allocates a new BSTR on the heap. It's impossible to answer your question without knowing the function in question.
--Mike--
THERE IS NO THERE IS NO BUT THERE IS
MAGIC PIXIE DUST BUSINESS GENIE CODE PROJECT
Homepage | RightClick-Encrypt | 1ClickPicGrabber
"Which comes first, the bug or the stress?" -- Chris Maunder
|
|
|
|
|
CAtlString strPAK("");
CAtlString strName("");
dlg.GetRegInfo( strPAK, strName );
Func1( strName.AllocSysString(), strPAK.AllocSysString() );
...
...
Func1(CComBSTR strName, CComBSTR strPAK)
{
...
}
Does this helps?
---------------
Tired of Spam? Introducing InboxShield® for Microsoft® Outlook®
http://www.edovia.com
|
|
|
|
|
I wrote a COM by using VC++6, implemented IDispatch and IClassFactory. The name is RegUtil.CoRegistry. I have inserted HKCR\RegUtil.CoRegistry\CLSID = {xxx} and HKCR\CLSID\{xxx} = RegUtil.CoRegistry and HKCR\CLSID\{xxx}\InprocServer32 = path to my COM.
But I cannot using CLSIDFromProgID. It cannot find my program id??
But I can use CoGetClassObject.
I don't know what went wrong. At first, I create the project as simple com (IUnknown, IClassFactory), no IDispatch support.
After that I try to put IDispatch support into the project.
Anybody can give me some glint?
|
|
|
|
|
If this article is not suitable to show in this forum, which forum is better?
thanks.
|
|
|
|
|
Can someone please point me towards resources on how to use Microsoft COM objects
from a Java app ?
-=jarl=-
|
|
|
|
|
http://www.nevaobject.com/[^]
Here ya go. It costs money, but I believe it's worth it. You can try some samples if you wish.
--
Shine, enlighten me - shine
Shine, awaken me - shine
Shine for all your suffering - shine
|
|
|
|
|
I have a small testing code in c# for the WM4.7:
<br />
using System;<br />
using Messenger;<br />
<br />
namespace MessengerDemo<br />
{<br />
<br />
class MessengerDemo<br />
{<br />
<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
MsgrObject msgr = new MsgrObject();<br />
MessengerApp mapp = new MessengerApp(); <br />
<br />
<br />
<br />
if(args.Length == 0) <br />
{<br />
foreach(IMsgrService service in msgr.Services) <br />
{<br />
Console.WriteLine(service.ServiceName);<br />
}<br />
} <br />
if(args.Length == 1)<br />
{<br />
if(args[0].Equals("logoff"))<br />
msgr.Logoff();<br />
<br />
if(args[0].Equals("quit"))<br />
mapp.Quit();<br />
}<br />
}<br />
}<br />
}<br />
The logoff method called on the messenger object works fine. The problem is the quit method, which is part of IMessengerApp, IMessengerApp2 and IMessengerApp3. I got no compiling errors with the code above, but if I run the prog with the argument quit, I got this Exeption:
<br />
D:\Projects\Messenger\bin\Debug>messenger quit<br />
<br />
<br />
Unhandled Exception: System.InvalidCastException: QueryInterface for interface Messenger.IMessengerApp3 failed.<br />
at Messenger.MessengerAppClass.Quit()<br />
at MessengerDemo.MessengerDemo.Main(String[] args) in d:\projects\messenger\messenger.cs:line 39<br />
Why it wants to cast it, the ImessengerApp3 should be part of Messenger.MessengerAppClass.... Anybody got an idea?
|
|
|
|
|
Hello everyone.
Out of process servers that expose COM objects, have no registry settings that specify the threading model they use. Suppose we want to find out their component's threading model, what can we do?
I'm specificaly interested in the threading model of the objects that MS Word exposes. Do they belong to an STA or an MTA? Type libraries don't include threading model information, so what can we do? Run some tests?! Or SoftIce on CoInitializeEx? !!!
Jason
|
|
|
|
|
Hi,
I have a few ActiveX controls in a browser, and I want
them to access each other's method( without creating a new instance)
Can someone tell me how can it be done.
Thanks,
Sansky
John 3:16
For God so loved the world,
that he gave his only begotten Son ( Jesus Christ ) ,
that whosoever believeth in him should not perish, but have everlasting life.
|
|
|
|
|
Hi there,
I have an app here that already initializes COM via a call to CoInitializeEx(NULL, COINIT_MULTITHREADED). I have recently added drag and drop support, and am calling AfxOleInit() some time after the call to CoInitializeEx(). This works on my development machine no problem, but on another machine AfxOleInit()'s call to CoInitialize() fails with RPC_E_CHANGED_MODE. I don't understand why it works on my first machine, though I realize the failure on the second machine is due to the fact that it was initialized to MTA and now we are trying to use STA.
Any ideas? Surely you can use COM as well as drag and drop in a single application, right???
Thanks,
swine
[b]yte your digital photos with [ae]phid [p]hotokeeper - www.aephid.com.
|
|
|
|
|
Hi all,
How can I add a toolbar button and a Menu to outlook express (not outlook express 2000)? I am using VC++ 6.0. one more thing is I don't know what is the user's OS and the version of outlook.
I mean my program has to identify the os and outlook version automatically and add the component.
Can anyone help me please?
Thank you in advance.
|
|
|
|
|
|
I mean Outlook Express.
I had gone through the sdk in your site, but I couldn't follow. Can you please expland it further, or can you breifly explain me how can i add a toolbar button and a menu in outlook express.
Infact I tried to hook with windows as what S.Rod explained. I had gone through the PGP source but couldn't understad anything.
can you help me.
|
|
|
|
|
Using my SDK, it is not possible to do anything userinterface like(i.e. dealing with msimn.exe), only serverside stuff, as Outlook Express uses it. So the only thing possible is to rewrite the whole Outlook Express user interface, using all existing mail related stuff thru the SDK. A daunting task!
what you have to do basically is find the Window whose classname = "ThorBrowserWndClass" - Outlook Express 4 main window
"Ath_Note" - each new message you create or read OE is this class
"Outlook Express Browser Class" - main OE window for all ver.
Then you subclass the windows WindowProc. The XXXPluginInfo calls save and store information with regards to your your plugin information - toolbar/menu that is implemented in a dll(__declspec(dllexport)!!).
But yes, this code will only confuse you, unless the implementation is described too. I have tried using some very old code here on CP, that specifically drills down the OE window. Using Spy++ you could see that you need to use FindWindow() and FindWindowEx() API's to find-
Outlook Express Browser Class
|
SizeableRebar
|
RebarWindow32(this is the parent band?)
|
3 ToolbarWindow' s - i.e. OE's menu,toolband/rebarband/statusbar.
But although I can get OE's main band, any addition to the band(as in Nick Hodapp's rebarband code on CP) does not show a new toolbar button or menu next to the last item, as expected.
if you look at the msoe.dll(for OE6 - for 4.x it was called msimnui.dll??), you will see a function called LoadMappedBitmap(). but how to use it? I'm sure additions to toolbar/menu(as in msim) is very possible and works perfectly too. But how??
Hush,hush...
thought I heard you call my name now.
Kula Shaker.
Amit Dey
Latest articles at CP - PocketPC New menu
Office addin
|
|
|
|
|
There is no documented SDK for doing things like in Outlook Express. May be there is no SDK at all.
Outlook Express, like a standard Windows app, has its toolbar and menus hooked by addins. For instance, PGP uses this technique :
__declspec(dllexport) void AttachOutlookExpressPlugin(HWND hwnd)
{
PluginInfo *plugin;
char szWndClass[1024];
GetClassName(hwnd, szWndClass, 1023);
plugin = CreatePluginInfo(hwnd);
if (plugin == NULL)
return;
SetProp(hwnd, "oldproc",
(HANDLE) GetWindowLong(hwnd, GWL_WNDPROC));
if (!strcmp(szWndClass, "ThorBrowserWndClass"))
SetWindowLong(hwnd, GWL_WNDPROC, (DWORD) MainWndProc);
else if (!strcmp(szWndClass, "Outlook Express Browser Class"))
{
plugin->bOE5 = TRUE;
SetWindowLong(hwnd, GWL_WNDPROC, (DWORD) MainWndProc);
}
else if (!strcmp(szWndClass, "ATH_Note"))
SetWindowLong(hwnd, GWL_WNDPROC, (DWORD) UnknownWndProc);
SavePluginInfo(hwnd, plugin);
return;
}
There are articles on Cp about hooking windows based on classnames, etc.
|
|
|
|
|
would you believe outlook express uses COM? But not for any extensilibity like visual additons to menu/toolbar - atleast in whatever undocumented stuff I know.
Hush,hush...
thought I heard you call my name now.
Kula Shaker.
Amit Dey
Latest articles at CP - PocketPC New menu
Office addin
|
|
|
|
|
Amit Dey wrote:
would you believe outlook express uses COM? But not for any extensilibity like visual additons to menu/toolbar
Let me rephrase then.
Outlook express exposes an underlying API known as MAPI to allow someone to send/retrieve emails and stuff. In fact Outlook express is a MAPI client, like Eudora, Outlook, ...
There is no other API. Adding toolbars or menu options is only the result of a general windows hooking technique.
|
|
|
|