|
If you are not absolutely required to use generics, another option would be to create a custom class that has implicit operators to all of the value types you want to support (if you added implicit cast to\from double, then double already can be cast to from int implicitly).
just a snippet example
public class testtype
{
private testtype()
{
}
public Type ValueType { get { return _type; } }
public object Value { get { return _value; } }
private Type _type = typeof(int);
private object _value = int.MinValue;
public static implicit operator testtype(int m)
{
testtype t = new testtype();
t._value = m;
t._type = typeof(int);
return t;
}
public static implicit operator int(testtype m)
{
if (typeof(int).Equals(m._type))
return (int)m._value;
return int.MinValue;
}
}
example usage
testtype v = 1;
double b = v;
Food for thought...
|
|
|
|
|
I am having way to much fun now...
This is the closest I could come up with to what you want and somewhat providing a safe implementation of it. Obviously you would need to implement some checks to avoid crashing if incorrect values are used and I don't know exactly what kind of calculations you are performing but here is what I got.
public override T Calculate<T, P>(params P[] input) where T : IConvertible where P : IConvertible
{
TypeCode mode = Type.GetTypeCode(typeof(P));
switch (mode)
{
case TypeCode.Double:
double[] args = (double[])Convert.ChangeType(input, typeof(double[]));
double r = 0;
r = args[0] + args[1];
return (T)Convert.ChangeType(r, typeof(T));
case TypeCode.Int32:
case TypeCode.Decimal:
default:
break;
}
throw new NotSupportedException("Generic type value [" + typeof(T).ToString() + "] is not supported.");
}
My test usage:
double y = Calculate<int, double>(new double[] { 1.5, 2.25 });
Console.WriteLine(y.ToString());
try
{
Calculate<string, string>(new string[] { "no", "gonna error!" });
}
catch (NotSupportedException ex)
{
System.Diagnostics.Trace.TraceError(ex.Message);
}
The trace output from throwing in a string value
Quote: UnitTest.vshost.exe Error: 0 : Generic type value [System.String] is not supported.
|
|
|
|
|
That's pretty cool - thanks your your support.
That and your first sample helped me to got it solved.
First I used a few reflections for the type passing, but now I think I'm going to make use of your implementation.
Thank you again!
|
|
|
|
|
A former employee in my office wrote a piece of software that involves using COM+ components for Message Queueing and Loosely Coupled Events. There are a couple different pieces that are to be registered by the installer, but the EventClassLogger assembly can not be registered on Windows 7, it does work on Windows XP which is where the program was originally written, I am trying to update it to Visual Studio 2010 and Windows 7. See this post:
Using the COM+ Event System service in the .Net Application.[^]
for more information.
The error I receive is:
Error 4 Cannot register assembly "C:\Delco.Hmi.Logging 2012\Delco.Hmi.Logging\Delco.Hmi.Logging.EventClass\bin\Debug\Delco.Hmi.Logging.EventClassLogger.dll" - access denied. Please make sure you're running the application as administrator. Access to the registry key 'HKEY_CLASSES_ROOT\CLSID\{4E14FBA2-2E22-11D1-9964-00C04FBBB345}' is denied.
I am running Visual Studio 2010 as Administrator. It not only fails when registering from Visual Studio but also when registering when try to install the version compiled on Windows XP. Oddly enough another person in the office created a Windows 7 install disk totally by fluke that will allow me to install the software from the Windows XP compiled version. Seeing how the install disk was made with a third party program I figured it must be making some change to the Operating system that I don't know about it. So what I did was compared registry keys on both systems. On the normal Windows 7 install the registry key in the error above is owned by Trusted Installer, on the install done using the special install disk the owner of that key is Administrators. I tried changing the owner and the permissions but with no luck.
UAC is totally disabled on all of the machines, and I am stumped on what to do to allow this component to register properly.
Does anyone have any suggestions?
Thanks
|
|
|
|
|
I would suggest to enable UAC and try it again.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
I tried this but it failed. Normally enabling UAC should restrict things more not less, but it was worth a try.
Still looking for a solution.
Thanks,
Brett
|
|
|
|
|
Anyone else with suggestions, if I create a Windows install disk with RT 7 Lite then I am able to install my software so it is some kind of Windows setting stopping me.
Thanks
|
|
|
|
|
how can i get primary key of a record on datagridview
modified 29-Jun-12 16:14pm.
|
|
|
|
|
Don't you remember where you put it?
The question doesn't make sense, and it doesn't match the title either.
|
|
|
|
|
I need to check for the Microchip USB to Com Port driver, I am looking over the
System.Management route however this appears to give you the complete list of all the drivers attached at this point I can't get a list of the installed drivers from the
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPSignedDriver");
I have made use of the Managment header with
using System.Managment;
I am in the process of Googling , dinglinging to try and find out why it does not appear properly
Help!!
Note I am using Vis Studio 2008 C# Net 3.5
modified 26-Jun-12 10:11am.
|
|
|
|
|
I've used System.ServiceProcess.ServiceController for this in the past.
For everything it's this:
using System.ServiceProcess;
private static void Devices() {
ServiceController[] scDevices = ServiceController.GetDevices();
Console.WriteLine("Device driver services on the local computer");
foreach (ServiceController scTemp in scDevices) {
Console.WriteLine("{0, -25} {1, -20} {2}",
scTemp.ServiceType, scTemp.ServiceName, scTemp.DisplayName);
}
}
And to hone in on a single target:
private static void SpecificService(String name){
try {
ServiceController sc = new ServiceController(name);
Console.WriteLine("{0, -25} {1, -20} {2}",
sc.ServiceType, sc.ServiceName, sc.DisplayName);
} catch (InvalidOperationException) {
Console.WriteLine(name + " service not found");
}
}
I have the Prolific driver installed, for which SpecificService("ser2pl") gives
KernelDriver ser2pl Prolific Serial port driver
Alan
|
|
|
|
|
Thanks for that I will give it ago! Mmmm is the boss watching it's nearly 5pm & I was in early.....
Glenn
Just tried it and get
Error 1 The type or namespace name 'ServiceProcess' does not exist in the namespace 'System' (are you missing an assembly reference?)
However I have the using System.ServiceProcess; which is not recognised by the intelisense however its late I'm off home more playing tomorrow.
Thanks Glenn!
|
|
|
|
|
Ah, I thought I'd catch you out with that! You'll need to add System.ServiceProcess to the project's references. It should be on the .NET tab of the Add Reference dialog.
Alan.
|
|
|
|
|
Yup you got me! Project -> Add System.ServiceProcess is good however it lists all the drivers time for some searching of the list!
|
|
|
|
|
hi every one
I'm really sorry if my question is quite simple
what I'm trying to reach is keycode.
that is in the code below:
foreach (System.Int32 i in Enum.GetValues(typeof(Keys)))
{
int x = KeyLogger.Methods.GetAsyncKeyState(i);
and then if any key is pressed i want to use MapVirtualKey to map and after all getkeynametext
to access to it's name.
what i'm trying to accessed is the keycode which I access to it's Enumvalues to use it in the code bellow
unit key=MapVirtualKey(m,MAPVK_VK_TO_VSC);
what i need here is M which is a virtualkeycode that i have it's enumvalues in i;
thank you all in advance for helping me.
|
|
|
|
|
as mention in the subject,
im currently trying to do a system that can scan the network and list out all the actives computer within the domain network.
i check some of the sample project in this website,
but the link are dead..
|
|
|
|
|
|
I am developing a specialized search system for SQL server data. Nightly I consolidate information from a number of tables into one “SourcingPool”. I have enabled full-text searching on this table and experimented with freetext, contains, etc. I have the web display and can search for single words.
Now I need a way to take a Google like string and dismember it into search strings I can use in SQL server commands. I would like to be able to handle and, or, not, quoted strings, etc.
Does anyone have example code for this?
|
|
|
|
|
First, how exactly are you performing the search now? Let's see a code snippet.
You might want to read this[^] first.
|
|
|
|
|
At the moment I have the operator input a search string and pass it to a stored procedure in SQL server. The filtering is done with freetext.
select P.co_name
,P.add_city
,P.ProvinceCode
,case when Co.UseCodeAsName = 1
then Co.CountryCode
else Co.CountryName end as CountryName
,isnull(DATEDIFF(month, P.profile_date, getdate()), 999) as proMonths
,P.proServices
,P.proRegions
,P.p_key
,P.co_status as coStatus
,P.PostalCode
,case
when P.PostalCode is null
then null
else sqrt(square(sin((ZZ.LatitudeInRadians-@TestLatRadians)/2.0E)) +
(cos(@TestLatRadians) * cos(ZZ.LatitudeInRadians) * square(sin((ZZ.LongitudeInRadians-@TestLongRadians)/2.0E))) )
end
as dist_base
from dbo.SourcingPool as P
left outer join dbo.defProvince as Pr
on P.ProvinceCode = Pr.ProvinceCode
and P.CountryCode = Pr.CountryCode
left outer join dbo.defCountry as Co
on P.CountryCode = Co.CountryCode
left outer join dbo.defPostalCodes as ZZ
on ZZ.PostalCode = P.PostalCode
where (freetext(P.*, @SearchString) or CHARINDEX(@SearchString, P.proServices) > 0)
|
|
|
|
|
You could consider using Regular Expressions for this kind of text search.
Here[^] is a good msdn article on this approach.
|
|
|
|
|
I need to make a multilingual virtual keyboard. It should have support for accented characters like â, ƒ etc.
Normally we make such characters by pressing alt key, typing a sequence on numpad (e.g. 131) and releasing alt key. It works with manual input, but i am not able to simulate such action from input simulator.
I took logic from http://inputsimulator.codeplex. I have tried SimulateModifiedKeystoke, extended key board patch given by you, tried adding some delay, tried code in http://inputsimulator.codeplex.com/discussions/235928 . But nothing seems to be fixing this.
This is what i am trying :
List<VirtualKeyCode> myList = new List<VirtualKeyCode>();
myList.Add(VirtualKeyCode.NUMPAD1);
myList.Add(VirtualKeyCode.NUMPAD3);
myList.Add(VirtualKeyCode.NUMPAD1);
InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.MENU, myList);
public static void SimulateModifiedKeyStroke(VirtualKeyCode modifierKey, IEnumerable<VirtualKeyCode> keyCodes)
{
SimulateKeyDown(modifierKey);
if (keyCodes != null) keyCodes.ToList().ForEach(x => SimulateKeyPress(x));
SimulateKeyUp(modifierKey);
}
public static void SimulateKeyPress(VirtualKeyCode keyCode)
{
bool isExtendedKey = InputSimulator.IsExtendedKey(keyCode);
uint KEYEVENTF_EXTENDEDKEY = 0x0001;
uint KEYEVENTF_KEYUP = 0x0002;
var down = new INPUT();
down.Type = (UInt32)InputType.KEYBOARD;
down.Data.Keyboard = new KEYBDINPUT();
down.Data.Keyboard.Vk = (UInt16)keyCode;
down.Data.Keyboard.Scan = 0;
down.Data.Keyboard.Flags = 0;
down.Data.Keyboard.Time = 0;
down.Data.Keyboard.dwFlags = KEYEVENTF_EXTENDEDKEY;
down.Data.Keyboard.ExtraInfo = IntPtr.Zero;
if (isExtendedKey)
{
down.Data.Keyboard.Flags = (UInt32)KeyboardFlag.EXTENDEDKEY;
}
var up = new INPUT();
up.Type = (UInt32)InputType.KEYBOARD;
up.Data.Keyboard = new KEYBDINPUT();
up.Data.Keyboard.Vk = (UInt16)keyCode;
up.Data.Keyboard.Scan = 0;
up.Data.Keyboard.Flags = (UInt32)KeyboardFlag.KEYUP;
up.Data.Keyboard.Time = 0;
up.Data.Keyboard.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
up.Data.Keyboard.ExtraInfo = IntPtr.Zero;
if (isExtendedKey)
{
up.Data.Keyboard.Flags = up.Data.Keyboard.Flags | (UInt32)KeyboardFlag.EXTENDEDKEY;
}
INPUT[] inputList = new INPUT[2];
inputList[0] = down;
inputList[1] = up;
var numberOfSuccessfulSimulatedInputs = SendInput(2, inputList, Marshal.SizeOf(typeof(INPUT)));
if (numberOfSuccessfulSimulatedInputs == 0) throw new Exception(string.Format("The key press simulation for {0} was not successful.", keyCode));
}
|
|
|
|
|
revengeoffallen wrote: I have tried SimulateModifiedKeystoke, extended key board patch given by you
To whom are you addressing this? If this is referring to some article here on CodeProject then you should post your query in the forum at the end of the article.
|
|
|
|
|
I am not referring to any specific article on code project. I am referring to virtual key boards and virtual key code logic in general.
|
|
|
|
|
revengeoffallen wrote (in original post): extended key board patch given by you
I was asking who you mean by "you"?
|
|
|
|