How to write Windows 7 gadget in C#? - c#

How can I use C# to write a gadget in Windows 7?
Is it possible?

http://www.codeproject.com/KB/gadgets/CPRepWindowsGadget.aspx
And a search on codeproject shows even more: http://www.codeproject.com/search.aspx?q=gadget&sbo=kw

Is Sidebar gadgets what you are looking for?
Have a look at this Silverlight trick!

Assuming that "Windows Sidebar Gadgets" are being talked about, this is not possible to do directly. However there are some work-abouts (none of which are supported by Microsoft):
Use Silverlight. However, as I recall, the background can't be "painted transparent" and this will not work with a 64-bit IE (the IE running gadgets isn't always 32-bit by default) as there is no 64-bit Silverlight. This is the same problem plaguing sidebar gadgets that use Flash. (Like Pandora, one could require avid users to launch the 32-bit version of sidebar.exe).
Wrap the gadget window. I started work on a project like this that allowed WPF (in a separate process) to "overlay" the gadget window -- started via COM. Avoids 32/64-bit issues (actually, doesn't matter since it's in a separate process and is CLR, not Silverlight). Some issues with default gadget border, sizing, properties, etc. Concept work only.
Use an embedded HTA to launch a 32-bit IE and grab that handle (can then use/embedd Silverlight if launched the 32-bit version). I didn't have success with this, but it "should work".
Use a converter like Script# -- write in C#, "compile" to JavaScript.
Happy coding.

Related

Accessing other processes in Win8 Metro-style app

I am trying to build a Windows 8 "metro-style" app that will operate as a "app killer". For those of you who have used Win8 (Tech Preview) you'll notice that once you open a metro-style app you cannot close it (without going into Task Manager and ending the process).
My challenge is that I cannot access 'System.Diagnostics.Process' from my metro-style app, nor do I know if there is an comparable alternative within the WinRT. I also thought of building a separate app that hosts a service for my metro app to interface with, but I'd like to do this with a single app.
Fundamentally, I am looking for a pattern for building Metro-style apps that leverage .NET 4.0 components, specifically to be able to enumerate and kill other processes running on the PC.
CLARIFICATION: I am less concerned with this specific application than I am with access that type of .NET functionality within a Metro-style app
Thanks
To your specific question, this functionality is not available. Apps are not allowed to interact or interfere with other apps.
To answer your more general question, the APIs available to Metro style applications is limited compared to what is available to desktop applications. C# has a subset of the .Net library available, much like Silverlight does. The same is true for C++ where a subset of the desktop Win32/COM APIs are available.
From what I understand (watching Build2011 videos) a Metro App won't be able to do that...
Interaction between processes is severally limited to specific Contracts (the charms on the right: Search, Send-to).
Think Phone, not Desktop.
You might be able to build a non-Metro Win8 app though.
Don't waste too much time on this. I expect that in a beta a close option (perhaps even a charm) will be included. Until then use a keyboard Alt-F4 or the Task Manager
C++:
Window::Current->CoreWindow->Close();
or
Window::Current->Close();
I haven't explored the difference between these two (more precisely, I don't know how CoreWindow differs from Current. I could assume though...
I'm using an Oracle VBox with Win8 on my Win7 machine to develop a C++ Metro App using VS 11. I used both of the above methods. I verified in Task Manager the app was not running on both Win8 and the Simulator.

Howto integrate Gadgets in my .NET application

As there are those gadgets available for the Windows Vista Sidebar and for Windows 7, I'd really like to know if you can integrate those into your .NET app. I want a similar feature and possibly use already existing gadgets into my app.
Can it be done?
This is likely possible but is not going to be very easy. You're application will need to do everything that the OS would normally do to host them, including parsing the gadget manifests, setting up a web container for each to run in, calling each gadget's event handlers correctly, etc.
Basically, everything that a gadget is supposed to do to integrate with the OS, you'll need to support. See http://msdn.microsoft.com/en-us/library/aa965850%28v=VS.85%29.aspx
This is not a project for the faint of heart but would be pretty cool if you can get it to work.
Have fun!
BTW, there is a W3C draft standard for widgets but it's not really practical yet. See http://www.w3.org/TR/widgets/1

How to make DeskBands work on Windows 7 x64?

I'm going to create an application (C#), which has its DeskBand on the Windows TaskBar. I've found one complete example program, which does this, but I didn't manage to successfully install (add to Toolbars menu on the taskbar) it. I think, it's because my Windows is x64, there are no other visible reasons...
So, my question is how to create and add a deskband to Windows 7 x64 taskbar?
According to Microsoft, Deskbands are not recommended for Windows 7, although they still work. Also keep in mind that Microsoft requires that Deskbands support Aero on Windows 7 via IDeskband2 Interface, rather than IDeskband. Also, Micorosft has officially said that IDeskBand2 may be altered or unavailable in subsequent versions of the operating system or product.
Finally, be very careful about creating shell extensions in managed code.

How can I make .NET C# ActiveX plugin work on Mac Safari?

So I've created a plugin for windows working in IE Chrome etc (there is an eazy way to make active x plugin work on Netscape based browsers under windows) how to port it to mac?
if you use silverlight you can code C# and it will work on mac/safari and mac/firefox
read here: http://silverlight.net/
Switch to a Java applet. You won't be able to make an ActiveX control work on anything other than Windows.
ActiveX is a Microsoft Windows technology. Even if there were a Safari plugin for it, you would be using APIs which don't exist on the Mac OS, virtually guaranteeing that problems would occur (if it would even run at all). If you want to have a cross-platform browser plugin, use Java applets or another similar technology.

Building C#/.NET Apps that Use Windows 7 TaskBar Features

The new Windows 7 taskbar features, like jump lists, previews, etc. are really cool, and I want to allow my C# applications to use them. I have two questions:
First of all, how can I use these functions (in general)? I found two articles by Microsoft about this, but I'm not really sure what to do. Could you provide links to a library, as well as some sample code?
Next, let's say that I figure out how to use these Taskbar functions. My question is, is there some built-in way of checking whether the OS is Windows 7, and thus enabling the taskbar functions? If I didn't have this logic in my app, would it have problems if it was run on a non-Win7 machine?
Thanks!
In the first article you link to there is a sample library that you can download that makes use of the new Windows 7 features.
This article shows how to check the version of Windows your application is running on.
As always, if you call an API that isn't in existence, then yes, your app will experience some turbulence. Remember, it's (almost) always better to check for a condition and act accordingly once (as in application startup) than to try something over and over in code and catch exceptions.
Windows API Code Pack for .NET Framework is your one stop shop for a ton of .NET API for Windows programming, including Taskbar. This library gives you a complete API set to work with Windows 7 Taskbar and then some. It also includes samples for WPF, and Winform.
Another good source for Windows 7 content is the Windows Team Blog

Categories

Resources