I just tried it with:
m_ComInitialized = DLLImports.CoInitializeEx(0,
DLLImports.COINIT.COINIT_APARTMENTTHREADED)
Which returns zero (which I believe is S_OK).
BUT: this still results in "CoInitialize has not been called." HRESULT from
the OleSetClipboard. Note: my application is bracketed with <STAThread()> _
and my thread is created like this (ie. I do not specify an apartment model,
as I'm not to sure what it needs to be).
m_Thread = New Thread(New ThreadStart(AddressOf _Start))
If m_Thread Is Nothing Then
Exit Sub
End If
"Ben Rush" <kw*****@yahoo.com> wrote in message
news:eZ**************@TK2MSFTNGP10.phx.gbl...
Robin,
What happens when you do call CoInitialize()? It is my understanding that
it does not in personally-created threads. You may still have to introduce
that thread to a particular apartment first.
"Robin Tucker" <id*************************@reallyidont.com> wrote in
message news:cc******************@news.demon.co.uk... I need to use OleSetClipboard in my VB.NET application. Unfortunately,
when I do the result returned is -2147221008 (CoInitialise has not been
called). As I am using OleSetClipboard from a thread I've created, I was under
the impression that .NET automatically called CoInitialise the first time I
used a COM object in that thread. Is this the case? What other reason can
there be for this problem?
Thanks for any help you can give (here is the code I use to import
OleSetClipboard - note COM.IDataObject is my VB wrapper around
IDataObject)....
Public Declare Auto Function OleSetClipboard Lib "OLE32.DLL" _
(<MarshalAs(UnmanagedType.Interface)> ByVal theDataObject As
COM.IDataObject) As Integer