Let me start by saying that .NET is a very good development environment and believe it is the language of the future. I have been porting a product from VC 6.0 c++ to .NET C# for about 1 year. I have ported tens of thousands of lines of c++. I have TRIED to code 100% managed code so that our product can run in the various security modes (Internet,Intranet,My computer,etc...) . I have come up with a list of Inadequacies that have prevented me from my goal of 100% managed secure code. The reason I feel 100% managed code is important is that it provides the end user with the security that is required in today's networks, and without security our .NET application won't fly in the market place. The Inadequacies are few and I hope Microsoft can address them in the next release (right). Here they are:
1. Win Forms Keyboard events do not include the scan code. I don't know why Microsoft did not include the key scan code in the KeyUp and KeyDown events since they are in the win32 WM_KEYDOWN and WM_KEYUP messages. Our application has a sophisticated keyboard mapper and requires the scan code. I can override the WndProc and get the scan code, but this prevents the application from running in other than the MyComputer security zone properly since security prohibits overriding the WndProc. 2. Win Forms has no way to get the state of the NUM LOCK, CAPS LOCK, and SCROLL LOCK keyboard states. It is true, I can PInvoke the win32 api to get this, but this violates the security laws for everything except the My Computer security zone. 3. There is no c# Win Forms call to sound the alarm or beeper. i.e. MessageBeep(0) It is true, I can PInvoke the win32 api to get this, but this violates the security laws for everything except the My Computer security zone. That's all I have ! It is not much considering the amount of c++ code I have ported ! If anyone can tell me how to solve these issues in managed code that will run in the Internet security zone I would be a very very happy camper ! jeff roberts You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.