|
Hi Dear...
I struck in a problem & I know you can help me..
I've a pro-merchant account in amazon..& I want to upload Inventory to amazon.. but getting problem..File Error..even from site upload...
Can you send me Execl file you used for that uploading...
+ if possible some coding snippet of uploading invenorty. I want to upload through coding.. send me at:
sumit_kapoor1980@hotmail.com
or chat with me at hotmail account or yahoo: sumit_kapoor1980@yahoo.com
I hope you will help me..
Thanks
Have a Nice Life..
Sumit Kapoor.
---Sumit Kapoor---
|
|
|
|
|
I'm having problems when I try to use a flash ActiveX control in a Win32 application (non-MFC)
I don't know why this exception is thrown:
First-chance exception at 0x10058561 in MM.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x10058561 in MM.exe: 0xC0000005: Access violation reading location 0x00000000.
Is something wrong with the code?
#import "c:\winxp\system32\macromed\flash\flash.ocx" named_guids<br />
<br />
...........................<br />
CoInitialize(0);<br />
<br />
IShockwaveFlash* pFlash;<br />
HRESULT hr=CoCreateInstance(CLSID_ShockwaveFlash,NULL,CLSCTX_INPROC_SERVER,IID_IShockwaveFlash,(void**)&pFlash);<br />
pFlash->LoadMovie(0,L"test.swf");
Thanks
Pablo Hernandez Valdes
|
|
|
|
|
Hi Pablo,
Sounds like the CoCreateInstance didn't work. Access violation was probably due to pFlash being NULL (in debug at least).
This is what I used to verify the code worked:
ShockwaveFlashObjects::IShockwaveFlashPtr pFlash = NULL;
try
{
HRESULT hr = pFlash.CreateInstance(__uuidof(ShockwaveFlashObjects::ShockwaveFlash));
if (SUCCEEDED(hr) && pFlash != NULL)
{
pFlash->LoadMovie(0,L"C:\\Inetpub\\wwwroot\\pds\\try1.swf");
}
}
catch(_com_error& e)
{
TRACE1("EXCEPTION: %s", e.Description());
}
NOTE: I've used the smart pointer implementation
Hope this helps,
Andy
|
|
|
|
|
Hello,
Does anyone know how to programmatically register a com component? I have written a simple component (a dll) in assembler and would like to programmatically register it. I'm not sure which windows api functions have to be called from DllRegisterServer and DllUnregisterServer which should be defined in my dll. Any help would be appreciated.
Robert
|
|
|
|
|
You could do the obvious and go for some form of shell excecute on regsvr32.exe /s mylib.dll should do the trick, where /s is for silent. /u to unregister. If you get the process handle when you do it, and wait on it you should be able to detect any errors as well.
"Je pense, donc je mange." - Rene Descartes 1689 - Just before his mother put his tea on the table.
Shameless Plug - Distributed Database Transactions in .NET using COM+
|
|
|
|
|
I don't have a problem using regsvr32.exe. What I am trying to do is write the two functions DllRegisterServer and DllUnregisterServer in my dll. These two functions will be called by regsvr32.exe. However I'm not sure just what should go into these two functions.
|
|
|
|
|
In the function DllRegisterServer (which is the function called by regsvr32.exe) you need to create registry entries for each of your "creatable" interfaces (those that you use IClassFactory to create). To do this you need to have the following string values:
* A string representation of the CLSID of the Interface (in the form {000209FF-0000-0000-C000-000000000046})
* A "Friendly" name for the interface
* A version independent program identifier i.e. Word.Application
* A version dependent program identifier i.e. Word.Application.11
* The file pathname of your DLL (you can get this by calling GetModuleFileName Win32 API)
All the enries that you need to create in the registry should be under HKEY_CLASSES_ROOT. In the following I have used "YOURCLSID" for the CLSID of your interface, "FRIENDLY" for the friendly name, "VIPROGID" for the Version Independant ProgID, "VDPROGID" for the Version Dependant ProgID and "PATHNAME" as the path to your DLL:
First create the key using the API call RegCreateKeyEx:
HKEY_CLASSES_ROOT\CLSID\YOURCLSID Default:= FRIENDLY
and then add the following values using the API RegSetValueEx:
HKEY_CLASSES_ROOT\CLSID\YOURCLSID\InProcServer Value := PATHNAME
HKEY_CLASSES_ROOT\CLSID\YOURCLSID\ProgID Value := VDPROGID
HKEY_CLASSES_ROOT\CLSID\YOURCLSID\VersionIndependentProgID Value := VIPROGID
Next create the following key:
HKEY_CLASSES_ROOT\VIPROGID Default := FRIENDLY
and add the following values:
HKEY_CLASSES_ROOT\VIPROGID\CLSID Value := YOURCLSID
HKEY_CLASSES_ROOT\VIPROGID\CurVer Value:= VDPROGID
Next create the following key:
HKEY_CLASSES_ROOT\VDPROGID Default := FRIENDLY
and add the following value:
HKEY_CLASSES_ROOT\VDPROGID\CLSID Value := YOURCLSID
DllUnregisterServer merely involves removing all the keys and values created above.
Hope this helps
|
|
|
|
|
Thanks for the detailed response!
|
|
|
|
|
Hello, I’m trying to call a managed COM object from an unmanaged c++ program. I get this one link error. Any ideas?
Compiling...
asam.cpp
Linking...
Creating library Debug/MyCPrj.lib and object Debug/MyCPrj.exp
asam.obj : error LNK2019: unresolved external symbol "void __stdcall _com_issue_errorex(long,struct IUnknown *,struct _GUID const &)" (?_com_issue_errorex@@YGXJPAUIUnknown@@ABU_GUID@@@Z) referenced in function "public: long __thiscall IClassfincom::print(void)" (?print@IClassfincom@@QAEJXZ)
Debug/MyCPrj.dll : fatal error LNK1120: 1 unresolved externals
The same c++ program, works well in a standalone c++ project.
The listing:
#include "stdafx.h"
#include "asam.h"
#pragma warning (disable: 4278)
#import <mscorlib.tlb> raw_interfaces_only
#import "D:\Documents and Settings\Sam\My Documents\Visual Studio Projects\finalCOM\finalCOM\bin\Debug\finalCOM.tlb" no_namespace named_guids
extern void sammain(void)
{
IClassfincom *cpi = NULL;
// Initialize COM and create an instance of the InterfaceImplementation class:
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_Classfincom,
NULL,
CLSCTX_INPROC_SERVER,
IID_IClassfincom,
reinterpret_cast<void**>(&cpi));
if (FAILED(hr))
{
printf("Couldn't create the instance!... 0x%x\n", hr);
}
else
{
cpi->print();
cpi->Release();
cpi = NULL;
}
// Be a good citizen and clean up COM:
CoUninitialize();
}
|
|
|
|
|
Hi! my name is jinsoo. i am korean
after installing xp service pack 1 and latest windows update.
i cannot register activeX control on registry.
when in 2003. this job was good in windows 2000.
so though using regsvr32.exe not vc++ tool .the result was the same.
the error message is 0x80070715.
though i find the error message in msdn. i can not find that.
my system is windows xp.
tool is VC++(Serviced pack 6.0).
i hope you help me to solve this problem.
nice to meet u
nice to meet u
|
|
|
|
|
Hi Jinsoo,
Can you give more information? Is this your ActiveX object? Is it MFC/ATL ??
When I have issues like this then try debugging the registration of the control, for an ATL example:
Put a breakpoint in your DllRegisterServer function.
- Goto Project/Settings Menu in Visual Studio
- Click the Debug tab on the right-hand side.
- Type in "C:\WINDOWS\system32\regsvr32.exe" into the "Executable for debug session" text box
- Put the full path of the debug binary into the "Program Arguments" text box
Now run the debugger, you will get a dialog box asking if you want to continue (it is just informing you that regsvr32.exe you are running has no debug info.) Click OK and you should soon be put into the DllRegisterServer function, now just drill down until you come across the error.
Cheers,
Andy
|
|
|
|
|
Hi,
Could anybody explain why in QueryInterface()we use static_cast for casting pointers to interfaces to be returned by the functions, but inside the function in order to call AddRef() we call reintepret_cast like this:
reinterpret_cast<iunknown*>(*ppv)->AddRef();?
Why not just using static_cast as well?
Any input would be of great value and much appreciated.
Thanks.
skruss
|
|
|
|
|
if you find these words like static_cast,reintepret_cast and dynamic_cast
on msdn you will find the answer.
nice to meet u
|
|
|
|
|
Thanks very much. I looked their and found it very helpful indeed.
Nice to meet you too.
skruss
|
|
|
|
|
skruss wrote:
Why not just using static_cast as well?
It's a matter of taste really. They exist so that you can tell the compiler what it is that you want to accomplish. That way, the compiler can issue warnings/errors if what you want to do is illegal.
Of course, dynamic_cast is slightly different from the other casting operators in that it actually does the cast in runtime (it returns 0 if A is not assignable to B - B* b = dynamic_cast<A*>
reinterpret_cast should be avoided unless you really need it. Why? Because it basically tells the compiler to cast whatever into whatever. The compiler can thus not issue any warnings/errors.
--
Booohoo!
|
|
|
|
|
hi, i want to learn COM from vb. does anyone know any usefull document that teach COM or COM+ from the beginner. some document that i had could not make the beginner like me to understand. please provide me any tips or trick to solve that problem.
Roath Kanel
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
I'm trying to use the conversion macros (OLE2A, OLE2CA, etc) and I know I need to add the USES_CONVERSION macro, but where do I put it? I put it in my header file and I keep getting compiler errors that a bunch of the variables it declares are missing their type-specifiers and such. Am I doing something wrong? Thanks.
Also, this is off topic from the subject, but is there anything like CString for ATL?
- Aaron
|
|
|
|
|
Aaron,
In answer to the question of CString functionality for ATL, try looking at this (http://www.codeguru.com/Cpp/COM-Tech/atl/atl/article.php/c67/) I've used this in the past and worked a treat
- Andy
|
|
|
|
|
monrobot13 wrote:
I'm trying to use the conversion macros (OLE2A, OLE2CA, etc) and I know I need to add the USES_CONVERSION macro, but where do I put it? I put it in my header file and I keep getting compiler errors that a bunch of the variables it declares are missing their type-specifiers and such. Am I doing something wrong? Thanks.
You place the USES_CONVERSION macro inside every function definition that will use conversion macros.
For further reading I suggest Chris Maunder's article about "Unicode, MCBS and Generic text mappings" at http://www.codeproject.com/cpp/unicode.asp
monrobot13 wrote:
Also, this is off topic from the subject, but is there anything like CString for ATL?
If you want something that comes with the ATL library I can't think of anything besides the CComBSTR, but I guess that is not what you are looking for.
--
Roger
|
|
|
|
|
If you're using ATL 7.1 (VC++.NET 2003), then ATL has a common CString it shares with MFC.
If you're using earlier versions (eg 3, from VC++6), then you can use WTL3.1 or 7.x which has a CString class also, somewhat lighter than using MFC in your app!
Steve S
Developer for hire
|
|
|
|
|
I'm still using the VC6, but it's good to know the alternatives.
--
Roger
|
|
|
|
|
Thanks for all the replies everyone. I forgot I posted this question here.
- Aaron
|
|
|
|
|
Hi
I am using a COM component to upload files to website. I am writing all the files to a folder using "Binary Access Write" (VB) method.
I am facing a problem. When a large file is being uploaded, no other file can be uploaded. The page times out.
I want to make my site able to upload files simultaneously.
Please give me advice on how to solve the problem.
Thanks in advance.
Mandar Date,
Software Engineer
|
|
|
|
|
Two questions:
One, can interface methods have default parameters? i.e.
HRESULT MyMethod ([in] int size = 0) Two, can a class that implements an interface have a constructor with paramaters?
Thanks!
- Aaron
|
|
|
|
|
monrobot13 wrote:
Two questions:
One, can interface methods have default parameters? i.e.
HRESULT MyMethod ([in] int size = 0)
Yes. Have a look at the MIDL keywords 'optional' and defaultvalue' in MSDN.
Two, can a class that implements an interface have a constructor with paramaters?
Regarding the C++ synthax and if you mean whether it will compile or not, the answer is yes.
I don't see the use of it though. When the ClassFactory creates the object the default constructor will get called. It should be possible to modify the ClassFactory to call a constructor with parameters, but I don't know how much work that would be. I have a feeling that it would be much work for nothing since the same constructor will be called every time the object is created. Even if you take the long way of reading the registry by yourself to get the CLSID, calling CoGetClassObject and creating the object through the IClassFactory::CreateInstance method, there is no way you can pass parameters that can determine which constructor to call from the ClassFactory. Not through the COM-interfaces anyway. Technically you could have information elsewhere, e.g. in the registry, but I consider that an unstable solution and NOT recommendable.
Consider who is responsible for that kind of information; if it's you, you can reproduce that information in your default constructor and if your user is responsible you have no control of the information and that would require a lot of error checking and fault tolerant code. And if it doesn't work, you would still be the one the user blames.
--
Roger
|
|
|
|