|
While you can use an easy approach of interop'ing with shell32.dll (in VS.NET, add a reference to your project, click on the COM tab, and find "Microsoft Shell Controls and Automation") and using the Folder.GetDetailsOf method to get a property exposed to a column handler for that type. To get the right Folder , you can do something like this:
ShellClass shell = new ShellClass();
Folder folder = shell.Open("C:\path\My Music");
if (folder != null)
{
FolderItem file = folder.Items(0);
if (file != null)
string artist = folder.GetDetailsOf(file, 4);
} A better implementation is to get the IPropertySetStorage for the "\005SummaryInformation" storage stream, then use the IPropertySet to enumerate music properties (for example).
This requires quite a bit of knowledge about COM, COM interoperability with .NET (which is covered extensively in the .NET Framework SDK), and shell programming. I urge you to read the documentation for the two interfaces I previously mentioned before attempting this.
Why is this a better solution? The column handlers aren't gauranteed to be in a certain order and not every property is exposed through a column handler, so it limits your options. In may cases this may suit your needs, though. If you search for "GetDetailsOf" using the search feature of this site (the text box at the top of every page under the logo) you should be able to find a couple of articles that discuss this approach in more detail.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thank you and I will definitely read more into it
|
|
|
|
|
Can I step into C++ COM object that I call from C# .NET web service in debugger? Both are mine. They're in the same project. It looks like it should be able to but can't load symbols for that interop.mycppobject.dll. Both projects are set to use/generate debug info and PDBs. Even when I put C++ PDB into the C# web service bin folder it still can't load symbols. How to make it to load sybols. Or may be the right question would be: how to make to create symbols for that interop....dll thing?
Help!
Thanks a lot!
|
|
|
|
|
Symbols aren't necessary for the interop assembly because it's only a proxy. An RCW (Runtime Callable Wrapper) proxies calls and marshals data from managed code to a COM component. It's only PDBs for the managed (sans the interop assembly) and native components you need.
To debug both executables you need to attach the debugger to, IIRC, aspnet_wp.exe pre-Win2K3, or inetsrv.exe, IIRC, for Win2K3. The COM library is loaded into the calling process. For Win2K and XP this is the ASP.NET worker process. For Win2K3 and above (most likely) this is IIS itself because it manages the application domains.
You shouldn't move the PDB file, though. The full path is coded into the PE/COFF executable header. This can also be located in your PATH environment variable, but leaving it where it is is often the easiest approach.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I'm on XP....
So. Wait. Debugger can step through from C# web service client into C# web service server (when it's on the same comp) and debug session in C# on the server side, but for it to debug COM objects for that session it needs to attach to the IIS which it already is debugging at that moment? Strange.
Sorry! I'm slow today.
|
|
|
|
|
I'm on XP....
So. Wait. Debugger can step through from C# web service client into C# web service server (when it's on the same comp) and debug session in C# on the server side, but for it to debug COM objects for that session it needs to attach to the IIS which it already is debugging at that moment? Strange.
Sorry! I'm slow today.
|
|
|
|
|
You need to first make sure that the native and managed debuggers are both running. This is an option when you attach your debugger to a process. It is selected, though - IIRC - you can override which debuggers start automatically for your project.
It's all a matter of connecting to the right machine - which sounds like your local machine for both cases - which may require that remote debugging be set up on the remote machine.
Debugging managed code and native code are very different things. In both cases the PE/COFF executables are loaded into the parent process (be that aspnet_wp.exe before Win2K3, and IIS itself beginning with Win2K3 (IIS6). How they are debugged is different.
To get a good feel for what you need to do to debug both projects, I recommend debugging each individually at first. Obviously you've got the managed debugging down, but now trying debugging a COM server (the DLL) separately without running from within an ASP.NET Web Service. You'll need to actually attach to another process that will load the COM server. In your scenario that will be whatever the calling process is that is handling ASP.NET requests and hosting its AppDomain(s).
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
No. I want to debug that COM object FROM within that ASP.NET web service and I can't.
I check the "Processes..." and I see that my debuging session is already debuging aspnet_wp.exe and my C# WS Client executable.
Sorry if I'm beeing totaly off.
|
|
|
|
|
inner wrote:
No. I want to debug that COM object FROM within that ASP.NET web service and I can't.
I realize that that's your goal, but first be able to debug the COM server itself. You must also make sure that both the native and managed debuggers are running. The managed debugger doesn't handle native code.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi,
Can we create a webcontrol like
WebControl ctrl = new WebControl() ;
The above code is in a class that inherits from "System.Web.UI.UserControl"
It gives me error
'System.Web.UI.WebControls.WebControl.WebControl()' is inaccessible due to its protection level
Thanks for your help!
|
|
|
|
|
Well, you got your answer then, didn't you ?
What were you hoping to do with this 'webcontrol' ??
From MSDN:
Serves as the base class that defines the methods, properties and events common to all controls in the System.Web.UI.WebControls namespace.
It's a base class. It's empty contstructor is protected, although it has one that is public:
WebControl Constructor (HtmlTextWriterTag)
Initializes a new instance of the WebControl class using the specified HTML tag.
It took be 5 seconds to find all this out with google.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Thanks for your response.
I found about it on MSDN but I dont want to pass HtmlTextWriterTag.
Will passing this as a parameter and passing nothing make a difference?
|
|
|
|
|
I can only imagine that it would end in disaster. If you're creating your own control, just derive from UserControl, which is what you should do anyhow.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
WebControl 's parameterless constructor is protected , meaning that is only accessable to classes deriving from WebControl , which UserControl does not.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Thanks for response.
That's why I worte like this:
public class MyControl: System.Web.UI.WebControls.WebControl
instead of
public class MyControl: System.Web.UI.UserControl
I was able to get rid of the error. I am not sure if that's the correct solution. By default, ascx control inherits from System.Web.UI.UserControl
|
|
|
|
|
I have an application that works fine on the developer server. This application has infragistics controls. When I move this application as it is to the production server, those infragistics buttons wouldn't respond. I checked the dlls, they are present in bin folder. I have no clue what was wrong. Does anyone have any suggestions to fix this problem?
Thanks.
|
|
|
|
|
I've had to work on a project using those controls. I ripped them out ASAP, they are crap. They also frequently break my exe. I'd recommend contacting them, and asking how to make their stupid buttons work.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Now I got them worked. In the IIS server I have to create a virtual directory ig_common which holds all the javascipts and graphic files for infragistics.
|
|
|
|
|
I am able to load a txt file. The first 5 line of the txt file are always the same. They are:
% PART NO. AZ-2S_SUP_AUTO_CHALK_WP
G90
G92
G93
F8.
I would like a way to automatically delete the first line when I load this file and replace it with the word OPEN. Does anybody have a simple way of doing this?
Please Help me.
Darren
|
|
|
|
|
You'll need to read the rest of the file, then overwrite it so that you replace the first line, as you want.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
I am trying to find code to autofill a dropdownlist as the user types in a Web Form (not a Windows Form) using C#. For example if the user types b the first word in the list that starts with b will come up. When the user types the next letter like r the first word that starts with br will show up. Right now the way it works is when the user types the r it goes to the first word that starts with r losing the b. Thanks for any help on this.
|
|
|
|
|
I found something in VB.Net. You may get some clues from it.
http://www.dotnetjohn.com/articles/articleid132.aspx
|
|
|
|
|
i wrote a simple line of code that retrives a value from a static XML file but my problem that it returns diffrent result every time it runs, the line is:
string asd = VoteData.DocumentElement.ChildNodes[1].ChildNodes[1].InnerText;
maybe that happen coz the file is not completely loaded , i'm using C# but i don't found any method that let me know if the file is completely loaded or not, i know that theres a function in javascript which is : readyState that do the job, but i can't found any in C#, can anyone help ?
thanx in advance.
|
|
|
|
|
If your XML file does not change, then I don't see why this would differ. You should really be using an XPath to find the node you want though, this way is incredibly clunky.
If the document was not fully loaded, it would not be valid XML, and none of this would work.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Hi,
I have 2 questions regarding bitmaps:
1)I have a small bitmap (16/16 pixels) that I'm using in my application.
I need to set its background to transparent.
When I use the code
MyBitmap.MakeTransparent(Color.White);
all the white pixels become blue instead of transparent!!!
Does anyone know whats going on here?
2) Is it possible to save a bitmap as part of the C# project and open it this way instead of installing the bitmap file and opening in the file way:
string bmpPath = @"c:\MyBitmap";
Bitmap MyBitmap= new Bitmap(bmpPath);
Thanks.
avivhal
|
|
|
|