Obtaining activex reference from activex container

I have a VI with an embedded MediaPlayer activex object inside an activex container.  Additionally, I have a seperately run VI which I want to be able to control the MediaPlayer obejct in the first VI.  These VIs are opened seperately, so I cannot pass information directly from one to another (i.e., I can't directly pass the MediaPlayer activex reference to the second VI directly).  Therefore, the second VI obtains a reference to the activex container object by searching the first VI's controls and filtering by label.  I can typecast the control reference to the level of activex container, but from there I have no way of obtaining a reference to the object embedded in it.  Is there are way to do this?  The "To more specific class" function does not accept activex references for typecasting, and the automation open does not accept activex container references.  I've searched through the forums, and while there is plenty on activex references and containers, there doesn't seem to be anything that addresses my issue.

I'm not 100% about whether this will work, but give it a try. Once you have a reference to the container, use the 'Value' property. This will give you a variant. From here you can use Variant to Data, connect a MediaPlayer constant reference to the type input and you should get the correct reference out.
Also, you could simply get a reference to the VI with the ActiveX control and use the method 'Control Value: Get[Variant]' to get the value of the control instead of getting a list of all the controls and searching for the one you want.

Similar Messages

  • If an applicatio​n includes ActiveX references from Excel, should MS Office be installed on the run-time PC?

    There are many threads regarding usage of MS office with LV, but I was not able to find the answer to the following question. I hope somebody can help or point me to a useful thread.
    I have an excel template file and would like to create new reports each time from it. There are a couple of solutions for this problem which are fine. But, at the end, I am going to build an application and install it on an industrial PC which does not have MS office installed. The question is if the application works on the target machine as well.
    I am specifically pointing to the solution in here which uses ActiveX reference to Excel._Application. Any chance that this solution or any similar one works on my target PC?
    If you wonder why I want excel reports on a machine that does not have MS Office, I should say that the reports are just stored somewhere on the disk to be transferred later to headquarters let say!
    Developing machine: Win7, LV8.6 Pro + Report generation toolkit
    Target machine: WinXP SP3, LV run-time engine
    Thanks in advance!
    Soroush
    Solved!
    Go to Solution.

    You need to have Office installed on the computer that is running the LabVIEW application. It is the Office applications that provide ActiveX functionality to the Report Generation Toolkit. Without them, LabVIEW has nothing to interface to.
    http://digital.ni.com/public.nsf/allkb/02E339E2648​4F30186256E920061FBD9
    Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
    If you don't hate time zones, you're not a real programmer.
    "You are what you don't automate"
    Inplaceness is synonymous with insidiousness

  • Passing an ActiveX reference from TestStand to Labview

    How can I pass and ActiveX reference (for a dll) created and used in a TestStand sequence (under Locals) to a VI running within that sequence so that I can then call the same instance of the dll from Labview?
    (I know this isn't the best approach to programming but I'm more interested in proving the point than anything else)
    Cheers
    Dan

    Here's what I think you are tyring to do. Within your sequence, instantiate an object from an ActiveX DLL, storing a reference to it within a TS variable. Then, within a VI called by this sequence, call a method of the intantiated object.
    To do this, when specifying your module on your LV step you must check the Sequence Context ActiveX Pointer check box. In the called VI you must have the a Sequence Context control on your front panel and have it wired to your connector pane along with a TestData cluster control and a LV Error Out cluster control.
    Within the VI you use an invoke node to invoke the AsPropertyObject method on the SequenceContext (Make sure you use the ActiveX close function on this new reference when you are done with it.). Use another invoke node to call GetValInterface method on the sequence context property object reference (you could probably also use the GetValIDispatch method. See the help). For this invoke node you will want to use a lookupstring that reference the variable, relative to yo sequence context, in which you stored the refernce to the instantiated object in your sequence file. This will return a variant reference. You must convert this reference to a LV reference using the "To G Data" function in the ActiveX palette. The "To G Data" function requires a type input. You will need an ActiveX Automation Refnum control as the input to this (see ActiveX control palette). You will need to right click on this automation refnum control and browse the ActiveX automation server until you find the DLL ActiveX server from which you instantiated your object within your sequence. Once selected, also select the object that you instantiated. The "To G Data" function will then give you a reference to you object on which you can happily used in your desired manner. Make sure to close this reference with an ActiveX Automation close function when you are done with it.
    I would definitely clean this up with a subVI to perhaps generalize the solution.

  • 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

  • No events from CWDataSocket. Viewing from ActiveX Container Tool

    Using Labview 6.1 on Windows 2000. Exploring ways our C++ program can get and set values into a VI. Was looking at the CWDataSocket ActiveX Control in the VC++ ActiveX Test Container Tool and was trying to get it to fire events.
    I set both a VI control and The URL in CWDataSocket Control to "dstp://localhost/clay". The DataSocketServer window received my connection, but when I changed the variable in the VI, I couldn't see any events (Expecting OnUpdatedData()).
    I'd like the events to fire so I don't have to poll.
    The VI control was set to "Publish", and for accessMode on my CWDataSocket I tried both the read and the readAutoUpdate settings.
    Ultimately I would like to map many variables from a C++ stru
    cture in a shared memory (Map File) to values of controls in VI. If there is a better way to do this than datasockets (like DDE) I am very open to suggestions.
    Thank you very much for your time and help.

    Interesting question Clay!
    I have never done it from outisde of LabVIEW but ActiveX maybe the ticket.
    LabVIEW serves upits front panel controls and indicators. You may be able to get at them as variants by reading from;
    LabVIEW>>>FrontPanel>>>Controls
    will return an array of ActiveX references to all of the Controls and indicators.
    Read the "Label" Property of of each of these refferences to get the name of each control. Search through this list for the control or indicator you wnat to access. Then you can use the property node called "Value" to get the value you are after as a variant.
    I have never done this thing myself in C++ but I was able you look at the VBA examples to use navigate PowerPoint from LabVIEW, so in theory you should be able to do the
    same thing backwards.
    Just my thought, hope it helps,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Getting a VI reference from specific application instance via ActiveX

    I have a DLL that a C program calls to pass data into my application.  For performance sake, we had to use ActiveX to get the data into my application.  I Open an ActiveX reference to my application and then open a VI reference to a Packet Stack and throw the data right into a queue.  If I am developing, I change an INI setting to use the LabVIEW ActiveX server.  This worked fine in 7.1 with the EXE and LabVIEW.
    I recently upgraded the project to 8.5.  The EXE still works with no issues, but in LabVIEW, the DLL always opens up the VI in the Main Application Instance.  If I start my program in the Main Application Instance, then everything works fine.  The problem is if I launch my program froms its project.  Then my program is running in the My Application Instance, and when the DLL calls the Packet stack, the packets don't get put into the queues in My Application.
    I saw this thread where Ben used VI server to find out what project a VI belonged to.  This started me looking into using a similar method, but it seems I have to traverse the entire project to get to the VI to open a reference to it.  What I would prefer to do is look in two places, Main Application and My Application for the VI and determine its run state.  I was hoping there was some way in the VI name for open VI reference that I can specify the instance.
    Please note that I am using ActiveX, not TCP/IP VI Server, so I do not believe the method outlined here can be used.
    Thank you for any assistance.

    I think this should help. I have never used the ActiveX interface but this is what I think that you want.
    Off course you need to translate this into C but that shouldn't be the problem
    Ton
    Message Edited by TonP on 02-18-2008 07:16 PM
    Message Edited by TonP on 02-18-2008 07:16 PM
    Free Code Capture Tool! Version 2.1.3 with comments, web-upload, back-save and snippets!
    Nederlandse LabVIEW user groep www.lvug.nl
    My LabVIEW Ideas
    LabVIEW, programming like it should be!
    Attachments:
    GetVIFromActiveX1.png ‏5 KB

  • Get Sequence context from ActiveX reference

    Hello,
    I am passing to MFC DLL ActiveX reference to freshly created new execution. In examples it is shown how to pass "ThisContext" to DLL (struct IDispatch *seqContextDisp) but i need something like :
    - create new execution, save ActiveX reference in local variable
    - pass reference to DLL
    - in DLL get from reference sequence context and perform some operations (get/set vaiables, etc.)
    Thanks.

    I'm not sure I fully understand the question but I'll take a stab at it anyways. First if you want to have seq context of the new execution; review my sample seq file I sent along. In this seq file you can pass seq context of the new execution to a dll in either seq/execution.
    If this is a simple "C" type question the prototype/code would look something like the .cpp file I attached.
    My stuff may have a couple different parameters!
    If I misunderstoo the question you might want to send me what you got so far... It might be eaiser for me to see what you are tyring to do and I can finish an example for you.
    [email protected]
    Attachments:
    Sequence_File2.seq ‏16 KB
    handleexports.cpp ‏9 KB

  • Closing ActiveX references correctly in Simple UI

    Hi,
    I am currently trying to modify the Simple UI provided with Teststand 2013 in order to access global station variables through LabVIEW.  As a simple test, I am trying to access the LastUserName value.  When I run the VI for the first time after opening LabVIEW, I get no error messages and the program runs as required.  Stopping the VI execution returns no errors, but when I try to run the VI and run the Teststand sequence again, the execution stalls and I get a waiting status.  I must then close the VI execution by killing all Teststand threads  I believe the PropertyObjects are not released properly and I find the event structure quite puzzling to deal with.
    My attempt at closing the references within the while loop looks like this : 
    The rest of the program is exactly as provided with Teststand 2013.
    Any input on how to properly close the ActiveX references and retrieving station globals within LabVIEW would be much apreciated.
    Thank you for your help,
    Christian
    Solved!
    Go to Solution.

    First of all, I would like to thank you for your answer.
    I understand that repeatedly opening a reference inside the while loop does not represent a viable solution.  This morning I found a very handy reference that explains how to pass data from the Teststand API through custom UI user messages.  This allows a more elegant and robust way of handling data that is retrieved from Teststand.  I'll use a custom event call back that will trigger on any custom message.
    Here are the references ( which are IMO clear enough for someone with very little LabVIEW experience) : 
    http://www.ni.com/white-paper/4532/en/
    https://decibel.ni.com/content/docs/DOC-21047
    So far, I have been able to create a dummy Teststand sequence that sends a custom UI message containing the string ''Hello, world!''. The UI can accordingly retrieve the string and display it in a dialog box.
    I still have to find a way to pass the data from the subVI to my UI.  I am investigating the use of global variables, but there may be a better solution that I am not aware of.  Any input on how to pass information between two active VIs would be much appreciated!
    Christian

  • How do I obtain the coordinates from an active X IMAQ container from use in another part of a vi?

    Is their a simple way to read the screen coordinates from the IMAQ Active X container produced by the example NI code IMAQ_vi.llb so I can use them in another part of a program?
    Many thanks
    Nick

    What is confusing me is the ActiveX reference. Are you using a non-standard display, or are you assuming it is ActiveX? The standard display (WindDraw) is not ActiveX as far as I know.
    To get a cursor coordinate within the WindDraw window, use IMAQ WindLastEvent. You can input that you are looking for mouse clicks. The output will tell you where the last mouse click was.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Is it possible to seperate an ActiveX control from the GUI thread?

    I have an activeX control (*ocx) that we use for communicating with external instruments. We are running into some difficulty because if the communication with the instrument is held up it can take up to 30 seconds to timeout and our LabVIEW user interface is frozen in the mean time. The VI that contains the control itself does not have to be visible and all the subVIs that use the ActiveX reference have been set to run in the "instrument" execution system thread, but the GUI still freezes. Its my theory that since the ActiveX control itself is in a container and part of a front panel, all refernces to it must be executed in the GUI thread. I just wanted to confirm that this was the case. Also if anyb
    ody would like to suggest any work arounds, feel free. The only idea I've had so far was to move all use of the ActiveX control to external code, which is not a very attractive solution for us.

    ....Also if anybody would like to suggest any work arounds,
    > feel free. The only idea I've had so far was to move all use of the
    > ActiveX control to external code, which is not a very attractive
    > solution for us.
    ActiveX controls are loaded into the UI thread and all interactions with
    them, property nodes, and invoke nodes, have to take place in the UI
    thread/main thread of LV. So, setting the VIs to run in the
    instrumentation or other execution systems, doesn't do much good since
    each call to the property or invoke will just have to switch back.
    What other choices do you have? If the control doesn't have a UI
    anyway, it would improve matters if the control were simply an
    automation server. The automation server can be set to run in a single
    thr
    eaded apartment, or a MT apartment. Changing it to MT means that you
    will have to deal with protecting the code from being called from
    different threads, and having those calls interleaving and competing
    with one another. When you change it to be MT, it can tie up other
    threads in LV and leave the UI thread alone. Another alternative is to
    change the ActiveX control to spin up its own thread and have a method
    that initiates, and one that reads the results or returns the status.
    Greg McKaskle

  • Excel Get ActiveX References​.vi and closing references -- grrr

    I'm new to ActiveX stuff, but eager to learn! 
    The "grrr" in my Subject line is a reference to how I feel about LabVIEW's documentation from time to time.  I'm a dinosaur who came from text-based programming, and did a fair amount of C coding, so sometimes with LabVIEW I'm left with this awful feeling in the pit of my stomach like, "Good grief!  How much memory must LabVIEW be hogging up in the background when I use this vi?" or "What happens to those variables (wires) in that subVI when it completes but doesn't close?  What are their statuses when I come back in the next time?" or "What if I put a lot of elements into that array the first time and then started from element zero the second time and just put in a few?  What has happened with the memroy that was allocated when there were a lot of elements?"
    Today I'm stewing about this "Excel Get ActiveX References.vi," and what happens to the "ActiveX references" it generates each time I call the subVI in which "Excel Get ActiveX References.vi" lives.  I think that at least one of the "ActiveX references" it generates when I call it is of the type Excel._Application.  Then there appears to be an Excel._Workbook, and others.  You see, I've used "Excel Easy Report.vi" to put some data into an Excel spreadsheet, and I want to tell Excel to do a "Save" on the open spreadsheet.  I think ActiveX is the (a) right way to do that, so I'm wading into the ActiveX fray...  But this "Excel Get ActiveX References.vi" says in its help file, "Do not close ActiveX references opened with the Excel Get ActiveX References VI. References must remain open until the report is closed. Otherwise the error 3001 will occur."  Well, these Excel workbooks that get created by my VI could well stay open until after my LabVIEW VI terminates!
    So (finally), here are some of my quesitons:
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existance.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    Well, thanks for reading my novel.  I don't know what can be done with LabVIEW documentation to make it more satisfying to folks like me, but perhaps someone can weigh in on all my ActiveX questions here.
    Thank you in advance,
    Steve Brady
    Solved!
    Go to Solution.

    You need to close EVERY ActiveX reference you open.  If you don't you'll end up with some Excel processes running even after LabVIEW exits.  You can see them in Task Manager.
    I, personally, don't like the LabVIEW Report Generation Tool Kit for working with Excel.  I don't think it's flexible enough.  I have a growing library of VIs that I've written that open, manipulate, and close Excel.  Some references I pass from VI to VI and some I close right after I use them.  It all depends on what I'm doing.  If I want to enter read or write data from/to a certain range I'll get the range reference, read or write the data, then close it right away because I have no use for it any more.  On the other hand, when I open Excel or a Workbook I keep the reference until I'm done, which could be later in the program.
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existence.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    1)  No, LabVIEW will NOT close those references.  You need to make sure that happens.
    2)  You can save the references in a functional global or use a class but if you're not going to save them close them as soon as you're done with them.
    3)  Your user should not be able to close your LabVIEW application without it going through the shutdown routine you've created for your program.  The ABORT button should never be exposed to the user and you should capture and discard the panel close event so your program ALWAYS shuts down is an orderly fashion.  If you don't you will have fragments of Excel hanging around in your operating system and will have to kill those processes using Task Manager.  That should only be a problem during development, not once deployed.
    I used to program in C and Assembly many moons ago.  You should have seen my first LabVIEW code.  I go back and look at it just so I can see how far I've come in the last 12 years.  I feel your pain.
    Kelly Bersch
    Certified LabVIEW Developer
    Kudos are always welcome

  • How to know what ActiveX references are still open

    Okay, so I'm about the millionth person to post about this topic, but I feel like I know what I should be doing, but have hit a wall.  I have read through pretty much everything I could find in the forums about references and ActiveX.
    I am communicating with Excel via ActiveX, and everything works seemlessly, until I realized that if the user closes the Excel sheet (via an "exit" button on my FP), the "EXCEL.exe" process is still running.  I've read enough to know that this probably points to a reference that I have not closed.
    Problem is, I have poured over my code, and as far as I can tell, I have closed every reference, in the opposite order it was opened (as I read to do in a post earlier).
    Aside from casting references to int's to see what is still considered "active" (as I mentioned earlier, all the ones I can find are closed, so this doesn't help me), is there a way to determine which ActiveX references are still open?
    Even a way outside of LV?  A Microsoft utility even or ...well anything!  This is very annoying, and I know it should be quick and easy, I just have to know what is remaining open.
    Or, am I missing something else that might be keeping EXCEL.exe running?  (yes, I have an application quit and close the application reference)
    Thanks for any help

    Hi Will,
    As you said it yourself closing the same number of references as you open and using Application Quit should be enough to close down Excel.exe.
    Did you run your code in highlight execution to see how the behavior of your program changes when you hit the "Exit" button on your Front Panel?
    If you can post the minimum amount of code that reproduces the error, I will be more than happy to take a look at it.
    Best regards,
    Message Edited by Kalin T on 12-07-2006 03:11 PM
    Kalin T.
    National Instruments
    Attachments:
    activex_excel.jpg ‏16 KB

  • How do you pass an ActiveX Variant from an external application to LabVIEW?

    Background: I created a LabVIEW ActiveX server. I can access it with my external application (Matlab). I have a control variable in my LabVIEW executable. I want to use Active X to set the value of my control variable from my external application.
    Documentation: The only reference in the documentation for this task is in the Using ActiveX with LabVIEW in the LabVIEW 2009 help. It simply says "Use the variant control and indicator to pass data to or from ActiveX controls." I also went through all the ActiveX examples in the example finder and did not find any vis that passed variables using ActiveX.
    Questions:
    What should my control variable look like in LabVIEW? Should it be a refnum, a variant, or a data type? Does it have to be wired to a vi connector?
    Do I need to do any magic on this variable, such as change its properties?
    How do I pass the value from my external application to the variable in my LabVIEW executable?
    Thank you.

    Hello Lyn,
     The control variable should be a refnum and it would have to be wired to Automation Open with the correct reference.
    Here are some great examples of using ActiveX Server in LabVIEW
    LabVIEW Executable Used as ActiveX Server in LabVIEW
    http://decibel.ni.com/content/docs/DOC-9647
     Calling ActiveX Code from LabVIEW
     http://decibel.ni.com/content/docs/DOC-9073
    Andy Chang
    National Instruments
    LabVIEW Control Design and Simulation

  • Problems reading RefNum output parameter from ActiveX

    I'm running LabVIEW as a ActiveX server and access it from Python. Now I have encountered a problem when trying to read an output control that is a RefNum (actually a strict type def that I think is based on a DataLogRefNum containing a Enum). I get the following error message: "pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352571), 2)"
    Has anyone experience of reading RefNums controls using ActiveX?
    From Python? C++? VB? ...?
    Thanks!
    Ola

    Hello Ola!
    Do you still have the problem?
    Cheers
    Ashwani S.
    Applications Engineer
    National Instruments Sweden

  • Update ActiveX References Error

    There MUST be a simple way to update ActiveX References when a third party library has been updated to a new version.
    I had made up several VI's that passed the ActiveX Class Refnum around.  This refnum was generated by right-clicking on a standard Automation Refnum and selecting the third party Class - (called DebenuPDFLibraryAX0913.IPDFLibrary).
    I then upgraded this Third party software and changed the Refnum to the new version (DebenuPDFLibraryAX0915.IPDFLibrary) and it broke all the links with the existing VI's - fair enough.
    So I tried just using the generic Automation Refnum to pass the reference around, but that doesn't recognise any of the Methods/Properties of the Class in each VI.
    It seems I'm caught in a Catch-22.  If I use the specific ActiveX Class version to pass around all my VI's then when I upgrade the software I have to change ALL the Automation Refnums to the new Class Value.  If I try and make it generic it doesn't recognise anything in the Class.
    How on earth can I just upgrade one VI with the new ActiveX class and have this new reference work for all the VI's I created in my "LabVIEW library".
    The links below were in 2002 and 2006 and seem to suggest that one has to MANUALLY go around updating ALL Refnum's.  I really hope there is a better way of doing this now.
    http://forums.ni.com/t5/LabVIEW/How-do-I-update-my-ActiveX-controls-without-breaking-existing/m-p/53...
    http://forums.ni.com/t5/LabVIEW/How-do-I-quickly-update-the-ActiveX-automation-references-in-my/m-p/...
    Chris

    Hi ChrisReed,
    Unfortunately there is not a simple way to update the ActiveX References.  Since you are updating the library, every reference would also need to be updated manually.  There is not a tool to do this currently, but it may be worth creating a post on the LabVIEW Idea Exchange!  We are always looking for new ideas to make LabVIEW an even better experience for our users.  I have linked the Idea Exchange below:
    LabVIEW Idea Exchange
    | Zach J. | Applications Engineer | National Instruments |

Maybe you are looking for