Inserting ActiveX Objects

I have installed Labview 64 bit onto my computer and downloaded the full 4Gb driver compilation. I am trying to use labview to run a motor control for my TPZ001 Thorlabs piezo controller. When I go to "Insert ActiveX Object", in the list of controls MG17Motor is no where to be found. This is the control I need for my motor and from what I gathered from my colleages this control should appear after having installed the Thorlabs ATP config/user CD application. I have also plugged the piezo controller into my computer's USB and got the successfully installed drivers message. Even after the 4Gb driver installation the motor control in activeX cannot be found. Am I overlooking something simple? The driver set installed in \Program Files (x86)\ even though everything is 64 bit, when I tried to change the install directory it said that my choice of \Program Files\ was invalid.
Where awareness goes, energy flows.

nathand wrote:
There's more than one way to use an ActiveX object in LabVIEW.  I may not use the correct ActiveX terminology, but there's a difference between an ActiveX control versus an ActiveX class.  Only ActiveX controls can be inserted on the front panel.  You can get access to an ActiveX class by using the "Automation Open" primitive found in the Connectivity->ActiveX palette.  Create a constant for the Automation Refnum input, then right-click on the constant and choose "Select ActiveX Class..."  See if you can then open your component there.
Hi nathand, can you explain a bit further what you mean?  I have attached my code if you weant to have a look at what it is supposed to do.
Attachments:
READERxp.vi ‏39 KB

Similar Messages

  • Insert ActiveX Object - not in list

    Hi, guys.
    After one time, I'm not able to install by myself ActiveX controls and embed these controls into ActiveX containers yet. I refer to ActiveX controls that can be embedded into ActiveX containers, not those used to instantiate other applications.
    I want a certain ActiveX Control to be displayed in an ActiveX Container on the Front Panel. In this particular case, it's a Mozilla Firefox ActiveX Control. According to http://forums.ni.com/t5/LabVIEW/activex-firefox-and-mozilla/td-p/356235 (see message 5), after getting the component from the link provided and installing it, I should be able to insert onto the empty ActiveX Container by clicking over it and selecting "Insert ActiveX Object...". In this case, "MozillaBrowser class" should appear in the list, but not.
    However, if I place a Property Node or Invoke Node without reference on the Block Diagram, click on it, then "Select Class" -> "ActiveX" -> "Browse", I find the class "MozillaControl 1.0 Type Library Version 1.0", that, among others, it contains the class "IWebBrowser2". This class happens to be called "MOZILLACONTROLLib.IWebBrowser2". But, once I have the Property Node or Invoke Node, I can't create the container from it (create control from its reference) neither place an empty ActiveX container and wire its reference to the Property Node.
    I also tried registering the ActiveX Control, by typing "regsvr32 <control_name.dll>" in the command prompt, but nothing changes.
    But this doesn't happen to me only with this particular ActiveX control. Every time I want to find in the list a certain ActiveX component after installing it, I can't find it, and I end up copying ActiveX container blocks from VI examples I found on the forums... One example is using AcroPDF ActiveX Control.
    Any suggestion? Has anybody faced the same problem?
    Regards,
    Francisco
    Attachments:
    ActiveX Container.png ‏26 KB
    Property Node.png ‏35 KB

    Hello,
    Probably you can
    see the server in the pop-up menu because the server is not in the PC but is in
    the registry. Remove the checkbox “Validate Servers” to see if the Mozilla
    server appears. According to this LV help link...
    http://zone.ni.com/reference/en-XX/help/371361G-01/lvhowto/creating_new_controls_in_a/
    ... looks like the server is not installed in the PC... or it’s not registered.

  • Variant Input Parameters with ActiveX Objects

    I've created an ActiveX library that exports a variety of objects using Visual C++ Version 6.0. I'm testing the methods and properties of these objects using both LabVIEW and Visual Basic clients. The problem I'm facing is that when testing under LabVIEW, I can't access methods that expect a VARIANT input parameter. The declaration in C++ of one object's such method looks like this:
    void CChassis::Configure (VARIANT config, int rate);
    I can create the ActiveX object with both LabVIEW and Visual Basic. I can invoke methods that do not use VARIANT input parameters using both as well; but, when I create a second ActiveX Object (a CConfiguration) and use the LabVIEW Variant operator, my attempt to invoke Configure fails with a "No Such Interface (E_NOINTERFACE)" error. The invocation fails identically if I wire the CConfiguration directly to the Variant input, as well. If I instead create a constant VARIANT as an input parameter, my Configure method gets called, although the method recognizes that I passed an invalid object.
    Using Visual Basic I can invoke the Configure method without problems while encapsulating a CConfiguration object within a Variant.
    So my question is, have I found a LabVIEW error, or is my approach flawed? If my approach is flawed, where have I gone wrong? Thanks in advance! I'm using LabVIEW version 7.0.

    Hi,
    Have you tried to put in plain data or an object reference into your variant parameter?
    I think plain data should work... for object references i don't know.
    Some time ago, i also coded a small activex library, where i passed object references by parameters in delphi. I did not use variant parameters, but the real interfacedeclaration types (like IMyObject**). This worked fine. I also uses "dual" interfaces for the objects, which get passed by parameter. But i don't really know if this is helpfull for vb.
    Finally, you can also use a workaround:
    For each of your Objects, that you want to use from LabView and which you want to pass by a parameter, you
    insert an new Property "int32 Object_Handle".
    When an Object gets created, it ask a "ObjectHandleManager" (gets written by you) to get an own unique Object_Handle which it stores into its property "Object_Handle".
    The ObjectHandleManager generates an new Object Handle and memorizes the Handle assoziated with the calling object's reference.
    Now, at each time, when you want to pass a object reference to a library function of your self, you can pass the Object_handle as an integer value. In the called function, you can ask your ObjectHandleManager for the real ObjectReference.
    But thats not a very comfortable workaround.

  • Getting "Connect Timedout or auth error" when usging UltraVNC ActiveX object in LV 2010

    Hi all,
     I am trying to use a VNC viewer activeX object (from: UltraVNC ActiveX Viewer) in Labview to start a remote desktop / VNC session. The example supplied along with the control is a HTML page with javascript invoking the object.
     Initially, I tried using the object by directly inserting it into an ActiveX container, but it never worked. So, I altered the design and inserted a WebBrowser object in the ActiveX container and used the Navigate2 method to open the local .htm file (that contains the exact same code as shown in example, but with altered Server address to match my local condition). Yet, even this method fails. As soon as the control passes to the Browser:Navigate2 method, I get an error stating  "Connect method failed as it timed out or authentication failure". Just to make sure there is no error with the html file itself, I opened the file in Internet Explorer and it works without issues, after first allowing the ActiveX to run (throws up a banner on top of the page saying "it is unsafe to run the activeX" (IE's security measure).
    Did anyone use this before? I just want the VNC Viewer functionality in Labview, so any alternate suggestions are welcome too.
    Regards,
    Sri Ved

    Tested the solution, but did not work. Attached is the screen shot of the error, if it helps. Also, I ensured all the variables under ActiveX and Scripting are set to "Enable" in IE Security Settings (listed below) in both the Internet and Intranet categories. Is there something obvious that I am missing?
    Regards,
    Sri
    Enabled:
      Allow previously unused ActiveX controls to run without prompt
      Allow Scriptlets
      Automatic prompting for ActiveX controls
      Binary and script behavior
      Display video and animation on a webpage that does not use external media player
      Download signed ActiveX controls (not secure)
      Download unsigned ActiveX controls
      Initialize and script ActiveX contrtols not marked as safe for scripting
      Only allow approved domains to use ActiveX without prompt
      Run ActiveX controls and plug-ins
      Script ActiveX controls marked safe for scripting*
      Scripting:
      Allow programmatic clipboard access
      Allow status bar updates via script
     Allow websites to prompt for information using scripted windows
     Enable XSS Filter
     Scripting of java applets
    Attachments:
    ActiveX_VNC_Error.jpg ‏134 KB

  • ActiveX Object references - casting to a specific instance

    I have some ActiveX controls that are used to interface between a vendors hardware. The activex controls are quite heavy weight in that at any one time there should only be one instance of each of the type of controls within the program.
    What I want to do is keep the activex controls in the top level vi and pass references to sub-vi's in order to do property changes or method calls on the activex objects.
    When I create an activex reference control in a sub vi it doesnt seem to know what methods/propertys are available on that reference. I beleive it needs casting/converting to a reference that will allow LabView to recognize the reference type but im not sure how to do this.
    Thanks
    TMC

    Your automation refnums are probably not linked to the ActiveX control. Try this... select a property node in your main VI's diagram that has the desired ActiveX control attributes displayed and then select Edit>>Create SubVI from the menu. The automation refnum in the subVI will be linked to the ActiveX control and will work the way you want it to. Copy this to your other subVIs and the property nodes will start behaving. The other way to link the automation refnums is to right-click on them and choose select ActiveX class and then browse to your control.
    -Jim

  • How do I get an activeX object reference from a LabVIEW ActiveXContainer ref?

    How do I get an activeX object reference from a LabVIEW ActiveXContainer ref?
    I'm trying to control an ActiveX object (a Web Browser) from another VI and need to get the object reference programmatically. I can get the LabVIEW ActiveXContainer reference, but am lost on how to get the reference for the object _inside_ the container.

    Hi Lee,
    The reference to the container is actually also accessing the object inside the container. Use the Property Node and Invoke Node to access properties and launch methods for the object. I've attached a small example that passes the reference to a SubVI and invokes a method inside the SubVI.
    - Philip Courtois, Thinkbot Solutions
    Attachments:
    WebContainer.zip ‏21 KB

  • How To Insert A object into Conext

    Hi Techies,
    I have 8 tables in my designer
    and I have two contexts at designer level
    And how to insert a object into a context that is not referencing any table.
    For Example I have an object like "rownum" (Which should must be added at Universe level only not at report level). Here this object is not referencing any table and I want this to be used in a query where the remaining objects are coming from the context..
    Thanks in Advance..

          Double-click the Objects and click the TABLES button and select the table you want to associate the object to for the context to work properly (see below).
    Regards,
    Ajay

  • Recent loss of embedded QT movies on many page for IE7 using ActiveX object

    I have many pages that allow you to select from 4 video formats including QT .mov. An example is at http://www.cwdjr.net/video4/cancanL.php . The QT object uses ActiveX when on IE only(I use Windows conditional comments) and an ordinary object for most other browsers. Until sometime very recently all of these pages worked when you select the QT file. Now QT works on none of them. I suspected the problem might be due to a very recent Windows XP update which is a large one including .NET updates and other things(K8951847) X 86. I was able to restore to a day before this update, but this did not solve the problem. Of course some portions of some updates can not be removed be restoring to an earlier time, so the result does not prove the update was not at fault.
    The involved pages are mostly written in php on the server, so you will not be able to see very much by viewing the source code. To make the problem more simple to view, I made a test page for QT only and with the ActiveX object only. Thus this test page can not be viewed on most browsers that do not support ActiveX. The test page is at http://www.cwdjr.info/broadbandMedia/formatsAX/qtmovtest2.php . Since I serve pages as valid xhtml 1.1 using the correct mime type application xhtml+xml, no IE browser can view the page, since no IE browser can support xhtml served properly. Thus I have a php include at the very top for header exchange between the browser and server. If this says the page does not support the mime type for xhtml, then php using regular expressions, etc is used to rewrite the page as html 4.01 strict for the outmoded browser. Thus don't be surprised if you find some pages in xhtml and others in html when you check properties.
    The ActiveX object used for QT on the test page is below:
    QT MOV
    (CLICK ABOVE LINK IF NO PLAYER)
    <object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="400" height="295" codebase="http://www.apple.com/qtactivex/qtplugin.cab">
    <param name="autoplay" value="true" />
    <param name="controller" value="true" />
    <param name="kioskmode" value="true" />
    <param name="src" value="http://www.cwdjr.info/movie/cancan.mov" />
    </object>
    Once the page comes up on IE7, it is rather slow to respond. Then it gives:
    "Web site wants to install the following ActiveX control: 'Quick Time' from 'Apple Inc'".
    If you do try to install, nothing happens. In contrast to my regular pages, I added the code show above just before the start of the object. Clicking this on will bring up the QT video, but of course it is not embedded on the desired page. This may work as a temporary fix for IE. I likely can hide it from other browsers by enclosing it in Microsoft conditional comments.
    I would be interested if anyone else has had such a problem recently or any ideas concerning this strange response on IE7. I am talking about viewing the page on the server. Since this is a php page it can be viewed locally only if you have a server installed on your computer and I do not. The pages with the first url example given above have operated well on IE7, Firefox, Opera, Safari for Windows, Flock, K-Meleon, Google Chrome and SeaMonkey. There are a few players that have some issues with some of the formats, but this and the fact that some players may not be installed is the reason for offering the video in 4 formats. I sometimes offer high broadband versions as well as low broadband versions.
    It seems I spend more time correcting IE issues than for all of the other mentioned browsers combined.

    Thanks for the reference. I use nearly no JS anymore, since it often causes problems with true xhtml served properly even when you use external script files. Often one can use php script on the server and avoid these problems. When one serves as true xhtml using the correct mime type of application/xhtml+xml, the page is parsed with a very strict xml parser rather than a loose-as-a-goose html parser. (If one serves a page written in xhtml code as mime text/html, as is incorrectly done perhaps 99% of the time, you are using only html, not xhtml, and are fooling only yourself. The page is parsed as html instead of xhtml.) The xml parser has to be very strict to account for any possible xml content. Even a single, or even several, errors often will not prevent a html page from showing, but even a single error on an xhtml page served properly will often get an error report from the xml parser rather than a view of the page. One of the most laughable examples of misunderstanding of this issue is the home page of Microsoft. It claims to be xhtml. However it is served as text/html and thus would be better written in html 4.01 in the first place. Moreover, if you validate the page as xhtml at w3c, you find hundreds of xhtml errors. If Microsoft served their home page properly as application/xhtml+xml it of course would not work on any IE browser, at least through IE7, since none of these IE browsers can handle true xhtml. In addition the page likely would not show up on any browser if served as true xhtml until all of the hundreds of xml and other errors on the page were corrected. Instead, one likely would get a very long error report rather than a view of the page.
    Back to JS, document.write will not work in properly served xhtml, because it easily could produce code with XML errors. For instance it might produce code that contains an unclosed tag, which is a major xml error that can cause an xml device to malfunction. The xml parser thus rightly finds document.write as an error and prevents viewing of the page. However one often can generate the same code as document.write would produce on a browser with php on the server. The finished code is what gets downloaded to the browser, so the xml parser can check everything in the finished code rather than quess what a JS document.write might produce. And don't think you can sweep document.write under the rug by using an external JS file. The very strict xml parser finds it.
    Of course embed has never been a w3c tag, but rather is a bad hangover from the browser war era, a gift of Netscape. No page that includes embed can validate as w3c xhtml or xml of any flavor, at least through xhtml 1.1. However the page may work, despite the error, if server as text/html.
    All I know is that something has happened recently that has caused my problem to surface. It likely has to do with some change in the XP OS or IE browser. I have tried viewing several pages written by others that use many types of code for .mov, and all of them I have viewed that use an ActiveX embed for the benefit of IE now have the problem I mentioned. If anyone else with XP and nearly all updates, including the very recent one I mentioned, and the most recent version of QT has had this problem, I could be more confident that the problem comes from an external source. If not, it is still possible the sudden change could be something concerning a specific issue that has developed in my computer.
    Again, thanks for the JS reference. Some of this likely can translate into php so I can compare how the JS and php server script I am using relate.

  • Acrobat 7.0 ActiveX Object example code in Lookout

    Help folks!
    I'm trying to set up the Adobe Acrobat 7.0 Browser Document ActiveX Object under Lookout 6.0 but it doesn't work. My goal is to display a pdf document by lookout.
    What should I set by Property Browser...?
    What should I set by Property Pages...?
    What should I set by Value Property:?
    What means the term "Property" in this kind of objects?
    Is there an example code I can get?
    Any suggestion will be appreciated.
    Thanx.

    I don't know of a FREE ActiveX control for MS Word.  However, if you have MS Word installed on the same computer, you can use MS Internet Explorer ActiveX Control to view Word documents. 
    But before we do that, we have to make sure that MS Word is set to open documents in the "same window."  This basically opens a DOC file in Internet Explorer itself rather than launching a new MS Word window and then opening the DOC file in it.  To set this (if it isn't already):
    1. Launch Windows Explorer. 
    2. From the Tools menu, select "Folder Options"
    3. Click the "File Types" tab. 
    4. From the listing of "Registered File Types," select "Microsoft Word Document," (you can get to it fast by typing "DOC"); click Advanced. 
    5. Click the "Browse in same window" check box -- this toggles whether a Word document is launched outside of Internet Explorer. 
    6. Click OK to close the dialog boxes. 
    NOTE:  if the DOC still opens in a new MS Word window (and not IE), go back and toggle the check-box. 
    In Lookout, use the Lookout Webbrowser control (which is nothing but MS IE Control).  Specify the file path to the DOC file as the URL.  I am attaching a process file which does this using a TextEntry object. 
    Hope this helps.
    -Khalid
    PS:  not sure when this changed but we can't directly attach .L4P files to a post.. what a pain!  Please take a minute to add your weight to this request: 
    http://forums.ni.com/ni/board/message?board.id=130​&message.id=2142
    Message Edited by Khalid on 12-28-2005 02:55 PM
    Attachments:
    doc_process.zip ‏4 KB

  • How to create Activex object for my Visual C++ object

    Hi,
    I am working on development on Acrobat 9.0 SDK. I am facing problem is that I can compiled Visual C++ source code to an api. I can test functions on this api on Acrobat 9.0 windows, but I could not test it on IE web browser, because I don't know how to create Activex object from my Visual C++ source code or its api.
    I read Acrobat 9 SDK document and found under C:\Acrobat 9 SDK\Version 1\PluginSupport\Tools\Visual Studio App Wizard has two files: Acro9PIWizInstaller.msi and setup.exe. I am not very sure those file are the key to help me to create Activex objects for my api.  Are they the one I need to create Activex object? If not, could you please advise me how to create Activex object for my api or C++ codes.
    Thanks a lot for any of your comments or advices.
    Thai

    Hi lrosenth,
    Thanks a lot for your information.
    My question is, on Javascript how do I call a function from .api. Below is my very simple test.
    I got a function on BasicPlugin.cpp under C:\Acrobat 9 SDK\Version 1\PluginSupport\Samples\BasicPlugin. See below.
    I added BasicPlugin.api on C:\Program Files\Adobe\Acrobat 9.0\Acrobat\plug_ins
         ACCB1 int ACCB2 MyPluginCommand() {
              int num = 5;
              return num;
    On my HTML file, I create an <Object> below:
        <OBJECT id="acrobatapp"
                classid="clsid:85DE1C45-2C66-101B-B02E-04021C009402">
        </OBJECT>
        <OBJECT id="acrobatpdf"
                classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"   >
            <Param name="SRC" value="http://www.adobe.com/devnet/acrobat/pdfs/acrobat_digital_signature_appearances_v9.pdf">
       </OBJECT>
    On my Javascript. I call function MyPluginCommand() as below, but it is not working. How do I call function MyPluginCommand() on Javascript?
         var acrobatapp= document.getElementById("acrobatapp");
         var num= acrobatapp.MyPluginCommand();
         alert(num);
    Thanks for your support,
    Thai

  • When using Windows MS Word, you can insert an object such as a video into your document - can anyone tell me how to do that with Pages on an iPad please?  Thanks!

    Hi
    When I was a PC user, I could insert an object such as a video into my MS Word document - and it would appear as an icon, which when clicked, would begin to play the video.
    I find that I cannot insert such videos/movies into my Pages document on my iPad, but maybe I am missing something, being new to the Apple way of doing things?:)  Would appreciate any help, thanks!

    "maybe I am missing something"
    Maybe you are.
    This forum/community is named "AppleWorks" because it is intended to discuss issues and techniques involving the now discontinued Apple productivity application AppleWorks.
    Your question concerns Pages, and specifically, Pages for iOS, the version that runs on iPad (and other iOS devices).
    Admittedly, the Pages for iOS community is difficult to locate. It's rolled in with the other iWork applications in a community named iWork for iOS, where you'll find several people willing and able to answer your question. The link will take you there.
    Regards,
    Barry

  • Alternative for the ActiveX object for the other browsers excluding IE?

    I need open a word document (Doc/Docx) then edit and save   in client side itsetf.forthat i'm using ActiveXObject and javascript.it is working fine with IE but it's not working in other browsers(Chrome,Firefox).
                        var w = new ActiveXObject('Word.Application');
                        w.Visible = true; //set to false to stop the Word document from opening
                        obj = w.Documents.Open("D:\\test.docx");
                        docText = obj.Content;
                        w.Selection.TypeText("Hello world!");
                        w.Documents.Save();
    what is Alternative for the ActiveX object (OR) How can i edit a word document (Doc/Docx) by using client side scripting?    
    Punch bala

    This problem is haaping to you there is reasons are
    1. Old FF , so 1st update your browser
    2.or net speed , beczzz gmail needs high speed .. high means not like 3G ..it should be approximately 25-30kbps . As u wrote this doesn't happen in IE , becz IE is mad for work in low speed also bt it takes time to load .. ones load never refresh without you permition bt FF works fastly so it try to open as it has dwnloded ,, bt half part cant be stable long .so it refreshes..........
    So now update ur browser n use high n stable INTERNET ....

  • Program to Insert BI Objects in a Transport

    Hi Experts,
    I am looking for a function module/program to insert BI Objects in a transport request (i need to include this in another code).
    Thanks in advance for your help.
    Arminder

    No solution, so just closing the thread

  • What's wrong with a "regular" global in this case? AND WIl ActiveX objects stored in functional globals remain valid (when used in an executable)?

    I've written a plugin layer for a LV executable.  When this layer makes a call to the plugins' initialization functions, I want each plugin library to be able to initialize and maintain its own global memory (where things like VISA resource names or ActiveX objects are stored).  However, I've found that I can't manage to keep my global VIs "alive."  I'm inclined to switch to functional globals, but I suspect that this will be a problem for things like ActiveX objects (that in this particular case reference a CAN interface).  I believe that the functional global will indeed store the object from run to run, it's just that I'm somehow disinclined to think that the object will remain valid.  I think you'll have to re-initialize it.  Can anyone speak for or against this hunch?  (If you can't tell, I'm trying to avoid building a whole little test executable just to debug this problem.)
    I suppose the more profound question is "Why don't the globals stay in memory?"  I'm attaching an image of what the application layer that calls the plugins' intializations looks like.  Next I'm attaching an example of an actual initialization routine.  You'll notice that I've even gone so far as to explicitly open the ref to the global VI that I want to keep in memory.  Then I just leave it there dangling - but it still gets dropped!  In my mind I shouldn't even have to do this, since the dynamically-called subVI "MC_CMO Init.vi" actually initializes the globals and runs with AutoDisposeRef = False. 
    Lastly, this is my first-ever attempt at writting plugin software.  So if you look at my code and have any criticisms/pointers, I'll greatly appreciate them.
    Thanks in advance,
    Nick
    "You keep using that word. I do not think it means what you think it means." - Inigo Montoya
    Attachments:
    AppLayer.JPG ‏60 KB
    InitPlugin.JPG ‏103 KB

    I am not sure if I follow you completely on your work-around.
    Everything I have to say on this topic is based on obesrvations and threads I have read on Info-LabVIEW. Therefore it is subject to corecttion by those who know better.
    LV is smart enough to know when "something" that had been opened, can be closed. It is not perfect.
    If for instance you open a VISA refnum and pass the refnum  to a LV2 AS A REFNUM the refnum in the LV2 stay alive as long as the VI's are running.
    If you start another VI that uses the LV2 to fetch the refnum, it should get a valid ref as long as it starts before the first goes idle.
    You then be able to work with refnum usign the VI launched second as long as stays active.
    I often create action engine that can be invoked where required throughout an application. If the action engines get a ref in one state (like init) and use it another, I will generally write a "tester" that calls the action engine action to test the engine. In this case, my "tester" stays live and it keeps the ref's fresh.
    I suspect if you tried to trick LV you could. If you type cast the ref nums to I32 and stored those in a LV2, I could see how LV could loose track of the resource sharing, but that is something I would avoid.
    So I encourage you to do some experimenting with keeping track of who's running when to see if your work-around will work.
    If you think you understand it better than I explained it, please post.
    Trying to help,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Insert revenue object (Products dependency is that true)

    Hi, while inserting Revenue Object in Opportunities POD, is it necessary to relate it with Product object ?
    Do we receive errors and exceptions when we try to insert the List of Revenue directly into CRM On Demand ?
    If so what is the exception and what is the workaround ?

    The answer is, Yes, it is true.
    Opportunity Product Revenue (called different names in WS 1.0 and 2.0, etc) is an item related to both Opportunity and Product.
    The error message would differ depending on version of WS: 1.0 or 2.0, but there is no workaround: you would have to specify the related product - by its name, row Id, or External System Id.

Maybe you are looking for