Burn a CD from Silverlight - silverlight

I have a Silverlight application with a large DataGrid. I have added the ability to export the contents of that DataGrid to Excel, PDF, and several other formats. In my export dialog, I have a checkbox that says "Burn to CD". The reason I'm trying to do this is my user base really wants to be able to export files directly to a CD.
My question is, is this even possible with Silverlight? I think I can do this through COM interop which was unveiled with Silverlight 4. But I know that COM interop is limited to Windows, because of this cross-platform support would be nixed. I guess my questions are:
Can I burn to a CD with Silverlight?
Is COM Interop "the way" to accomplish this?
Is there a way to burn to a CD from Silverlight on the Mac?
Thank you!

COM Interop is only possible within Out-Of-Browser mode and with elevated rights. Also COM is Microsoft only so you wont be able to use that with Macintosh.
Maybe you can generate an ISO or ZIP file on the server side, or even on client-side if you'd want and deliver that to the user, that way the user can decide to store it on an USB stick or burn to a CD theirself.

Related

WPF application execution path

I have developed a WPF application and placed the executables on a network path. I have distributed the shortcut to the application to the users. Now, users can launch the WPF application by running the shortcut.
In the WPF application, I like to know from what client's drive the application was executed. In other words, I like to know the letter of the drive where the shortcut was placed. Is it possible to get this information? If yes, how?
BTW, I am aware of "Assembly.GetExecutingAssembly().Location" but this returns the path to application, not the path to shortcut.
Thanks,
To the best of my knowledge there is no way to find this out. What you could do, though, is add a command-line parameter to the shortcut stating the drive.

Create a .dll from a Silverlight Web Application

I programmed a Virtual Keyboard (On Screen Keyboard) as a Silverlight Web Application, now I want to use this Keyboard in an other Silverlight Application (call the Keyboard when clicking a Textbox). I thought I could create a .dll and use this in my other Application.
So is it possible to create a .dll File from a Silverlight Web Application?
Thank you for reading,
Knut Hansen
You simply need to convert it into a Silverlight Class Library. There are some things to look out for, but it isn't too hard.
It is one of the options when you create a new project in Visual Studio.
See Microsoft's documentation for more info:
http://msdn.microsoft.com/en-us/library/cc838164(v=vs.95).aspx#silverlight_class_library_project
also you can think of a web service, in this way your application can be used by anyone else, of course you can specify users of your app. I think web services are more recent and using them is more future-oriented, give it a go!

Are ActiveX applets dead?

Are ActiveX applets as a technology supported by Microsoft dead?
What are the alternatives to ActiveX to create extremely rich internet applications using Microsoft Technologies? (Silverlight does not cut it for me, as it doesnt give me access to serial ports - or does it?)
You can of course still make ActiveX applications, but know that they will only work with Internet Explorer, unless users of other browsers install hosting plugins, that aren't all that good anyway.
In either case, a web application that requires access to a serial port? Are you sure you're not better off with a desktop application instead? A simple refresh and you've cut off that serial port.
Not all applications belong in the browser.
If you want to launch an application via a web browser that can access the serial ports, one option would be to use Java Web Start with JavaFX as the rich interface API, and Java Communications for the serial port access. You could end up with a cross-platform application at the end as well.
Or just write a native application using your favoured Windows toolkit if you absolutely are restricted to using Microsoft tools.
ActiveX as technology is very much alive, and will remain for many years to come. But its usage for Internet is dead. ActiveX is to be only used from within windows stand-alone applications.
ActiveX as of 2015 is a dead technology that even the maker is no longer interested in continuing to use it. Here is something to read.
No, Silverlight is designed from the ground up to be completely sandboxed, no way to bypasss that (thank god).
If you need that kind of access, but are looking for an easy deployment, I would suggest building a Clickonce application.
There are restrictions, because I think by default they are not full trust, but that's the best you will get.
It's also going to be the only easy route if you need printing (unless you are willing to round-trip to a server to generate a PDF file).
If you need direct access to some hardware (like for a POS software with cash drawer, receipt printer etc), you need to go "desktop". Clickonce can give you some deployment options, XBAPs can give you the "browser experience", but you are going to have to make compromises based on what your "hardware access needs" are.
EDIT:
I didn't notice the Silverlight exclusion in the original question. My comment it not really applicable. Sorry!
I don't know that I would call ActiveX dead just yet, but I would be cautious if you are planning to build an application based upon this technology. My recommendation would be to use Silverlight. This provides much of the functionality that is commonly desired in ActiveX controls, but uses the newer .NET technologies.
There is alot of talk about using Silverlight for media playback, but it has many powerful feature that can also be used to create Line-of-Business applications as well. In fact there is a great podcast episode on DotNetRocks that discusses this exact subject.
Here are a few more links that might point you in the right direction:
Microsoft Silverlight Getting Started
Silverlight 2 and a Glimpse of Silverlight 3 by Scott Guthrie
To the best of my knowledge, Silverlight 4 still doesn't give you direct access to serial ports, but it does give you access to any local web cam and microphones now. You could presumably also run Silverlight 4 out-of-browser, which gives you access to COM objects, and you could write a quick-and-dirty COM object which wrapped serial port access. That said, I also agree with what folks said above about not all applications belonging in the browser.

Can Silverlight communicate with a MIDI instrument?

Can Silverlight communicate with a MIDI instrument connected to the machine running the Silverlight application? In- or out-browser.
It appears that this is not possible in Silverlight. To communicate with a MIDI device, you would have to PInvoke methods in winmm.dll, and this (apparently) cannot be done in Silverlight. See:
http://forums.silverlight.net/forums/t/123673.aspx
This could be done easily in a WPF or WinForms application. It could also be done in a browser with XBAP, although you would need elevated permissions to access the winmm API, which would require a certificate. You can also still make ActiveX controls with .Net, but I think you would still need a certificate for this to get the proper permissions (although it might work with just a scary security confirmation dialog).
It's not possible to use .NET code directly in Silverlight because Silverlight has a different core.
All .NET classes that you want to reference in Silverlight need to be recompiled for Silverlight.
It's also not possible to access the underlying hardware directly, so i'm afraid you're stuck with a full-trust XBAP(you need to sign your app and the user will get an popup asking for permission). XBAP gives you all the .NET capabilities while running in the browser. XBAP will run on firefox/internet explorer on any >xp machine with .net 3.0 installed.
Hope this helps.
Silverlight 3 has an extensible multimedia pipeline for audio and video. You can procedurally create your own audio and play it. To implement what you want, you would have to write your own midi synthesizer.

Does Silverlight 3 have access to local file system, Open Excel, and print reports?

I was wondering if Silverlight 3 can be used to create line of business applications where I can use file import/export facilities, read an xls file and open Excel, use a report tool like Crsytal Reports or Reporting Services or.. is WPF needed?
I am new to Silverlight and WPF and want to decide if I can skip learning WPF. I know Silverlight is a subset of WPF but I just want to concentrate in one of the two.
Although Silverlight is sand-boxed and it isn't possible to open and save files to the local file system direcly, it is possible to get a stream to a local file.
There are the OpenFileDialog and SaveFileDialog classes. These classes make it possible to let the user select a file or location. They return only a stream to that file and do not give any information about the filesystem. This way it's possible to import and export to excel for example.
This example should be enough to get you going.
update:
in the meantime I did a small SilverBullet(tm) on the subject on my blog at http://www.timmykokke.com/
Silverlight 3 has quite limited file system access. Even though you can save a local file you cannot open it using the associated application directly from Silverlight. If you want the user to export and open an Excel file from a button click in Silverlight you will have to consider alternatives:
You can open a new browser window pointed at a URL on your webserver that generates an Excel file. If the server sets the correct content type and the client is properly configured the user will be prompted to open the file in Excel. This effectively moves your export code to the server.
You can embed an ActiveX control on the same page as the Silverlight control and using the browser object you can operate this ActiveX control from Silverlight. Given enough rights by the user the ActiveX control can do anything to the local computer including automating Excel.
No, but apparently SL4 does!
Local file access - Silverlight 4
No, but unlike Jimmy my guess is that it won't happen in a future.
If you need local system there are other technologies to use (e.g. local windows service which can communicate with silverlight app).
The reason why silverlight won't have local access in the nearest future is that Microsoft learned it's lesson with ActiveX.
No, as far as I know Silverlight 3 is still as sand-boxed as ever. This is becoming a bottleneck for developers though, so I'm sure it will be addressed in upcoming versions of Silverlight.
From what I know, SL3 doenst support to use COM application such as Word, Excel, etc.. but SL4 does. If your application is just gonna be used internally, WPF will be the best candidate for your project, but if you want it to be used from the external clients as well, then I reckon you can use SL4, then use OUT OF BROWSER, then it'll work really similar with WPF. Plus with SL4, you're able to interact with Excel, Word, etc... to do lots of things.
Cheers,
Brandon

Resources