|
Greetings,
I really like the new command line parsing in C# and that is separates paramerters by space, it has been very useful. Of course I have a need to grab the command line as a whole as it was sent to the application and not cutup by it's spaces. Is there any way to do this in C#? The result should be the same as you get from command$ in vb. I would love to change the parameter but it's being sent from another aplication which I cannot change. Thank you in advance for any assistance.
Brett
|
|
|
|
|
This returns everything (including the EXE):
System.Environment.CommandLine
|
|
|
|
|
That's ok, it's easily parsed out. Thank you much!
Brettski
|
|
|
|
|
Hi everyone am working on a big school project and is facing a problem. Would really be greatful for help from you.
First a codesnip:
int diameter = 40;
Graphics g;
g = this.webBrowser1.CreateGraphics();
//This method draws a rectangele around the object that the mousepointer are pointing at
//in the webbrowsercontrol
DrawRoundedRectangle(g,x,y,width,height,diameter);
The problem is:
the line:
g = this.webBrowser1.CreateGraphics();
don´t seem to set the webbrowser to the current graphiscs object or anyway It isn´t
possible to draw something on the webbrowser.
if I instead use the line:
g = this.CreateGraphics();
It write on the form, it seems that isn´t possible to write on a Webbrowsercontrol?? someone who knows? Or can it be that the webbeowsercontrol all the time is updated and therfore my rectangel isn´t displayed??
tompa
|
|
|
|
|
Your best bet is to override the onpaint method of the control and add any extra drawing you want there. Good luck.
|
|
|
|
|
I don't think that will work either, especially if the browser is doing any navigating.
You may need to
1. draw the web browser to an in-memory bitmap (see this post[^] for information on how to do that)
2. Draw your custom stuff onto that in memory bitmap.
3. Draw the bitmap to the screen.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: How 'bout a little guitar now?
The apostle Paul, modernly speaking: Epistles of Paul
Judah Himango
|
|
|
|
|
I'm converting a small app from VB.net to C#. While doing so I've noticed something really annoying with the way C# handles namespaces.
In VB.net if I have this code:
Imports System<br />
Public Class Class1<br />
Dim t As Timers.Timer<br />
End Class
it should be the same as this C# code:
using System;<br />
public class Class1<br />
{<br />
private Timers.Timer t;<br />
}
However, The C# compiler throws an error on the Timers.Timer. Even though I have "Using System" specified C# doesn't see that Timers.Timer is part of the System namespace. If I write it all out as System.Timers.Timer it compiles but completely defeats the purpose of using a namespace. The code in VB has no problem seeing Timers.Timer as part of the system namespace.
Is there a way to fix this issue in C# so that it will understand the namespace? Or, is it just another arguing point for people who want to say VB is better than C#?
Thanks,
|
|
|
|
|
In C# you need to make sure you are referencing the right kind of Timers. System.Windows.Forms.Timers and System.Timers provide functionally different classes of timer logic.
In terms of the namespace, make sure you choose the one that suits your application.
BTW, if it were not for Microsoft... "Basic" in all of its various forms would have died off years ago. Funny how to keep it alive they made it more like C and then C++ like. And now that there is a CLR differences are petty, so choose the language you want but consider history first before attempting to bash C#. Each language has its own merits.
Mike Luster
CTI/IVR/Telephony SME
|
|
|
|
|
I new the exact namespace i was shooting for. I wanted the System.Timers. That's why the System is the only item I'm "Using" in my example code. From my understanding this is the exact reason you put "Using System" in your code so you don't have to write out System. in front of everything. My question is more about the namespace problem than a timer.
Also, I'm not trying to bash C# or VB. All those arguments are old and tired. I was just trying to point out that in VB the namespace worked as expected and in C# it did not. I would still like to know how to fix this in C#.
|
|
|
|
|
That Timer belongs to System.Timers namespace, not System.
In C# it worked as expectedly, mayb in VB, it guessed which class that you want to use, which it shouldn't, strictly speaking.
|
|
|
|
|
Hi
Try this
<code>
using System;
namespace MyNamespace
{
public class Class1
{
private Timers.Timer t;
}
}
</code>
Ahmad Shaban
|
|
|
|
|
This code produces the same issue. Timers is not found.
|
|
|
|
|
Hello,
This is a problem I faced a few months ago. Not with basic, but I came from a C++ background. Your problem is that the namespace Timers is not available to you! This sounds strange because the namespace resides in the System namespace which you imported. C# does make all classes in the imported namespace available, but not nested namespaces. You can use an alias to solve the problem, or completely import the namespace:
using Timers = System.Timers;
using System.Timers;
public class Class1
{
private System.Timers.Timer t;
}
Hope this helps.
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
-- modified at 3:32 Tuesday 21st March, 2006
|
|
|
|
|
|
|
API Help
Posted: 19 Mar 2006 07:25 PM
Hi, I use this --
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "FindWindowA")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "FindWindowExA")]
private static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);
[System.Runtime.InteropServices.DllImport("user32")]
private static extern IntPtr ShowWindow(IntPtr hwnd, int nCmdShow);
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetWindowTextA")]
private static extern bool SetWindowText(IntPtr hWnd, string lpString);
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int EnableWindow(IntPtr hWnd, bool bEnable);
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "GetWindowTextA")]
private static extern int GetWindowText(IntPtr hWnd, string lpString, int nMaxCount);
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
private const int WM_LBUTTONDOWN = 513;
private const int WM_LBUTTONUP = 514;
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;
private const int SW_MINIMIZE = 6;
private const int SW_MAXIMIZE = 3;
private const int SW_SHOWMAXIMIZED = 3;
private const int SW_RESTORE = 9;
public void Changetext()
{
IntPtr Taskbar = FindWindow("Shell_TrayWnd", null);
IntPtr StartButton = FindWindowEx(Taskbar, IntPtr.Zero, "Button", null);
SetWindowText(StartButton, "Blah");
EnableWindow(StartButton, false);
EnableWindow(StartButton, true);
}
To change the text on the start button, and it works fine. But it can only have like 5 letters. could i use SetWindowPos to change the width of the start button, to allow for more letters? I have seen code in other langs that do this, And im pretty sire thats the method they take. If so could I see an example please .
|
|
|
|
|
Hi
I'm very interested in the code in hand here
could you send me the code please
Thanks in advance
Ahmad Shaban
|
|
|
|
|
I put it that way
using System;
using System.Runtime.InteropServices;
namespace ChangeText
{
public class MainCls
{
public MainCls() { }
[DllImport("user32", EntryPoint = "FindWindowA")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32", EntryPoint = "FindWindowExA")]
private static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);
[DllImport("user32")]
private static extern IntPtr ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32", EntryPoint = "SetWindowTextA")]
private static extern bool SetWindowText(IntPtr hWnd, string lpString);
[DllImport("user32")]
private static extern int EnableWindow(IntPtr hWnd, bool bEnable);
[DllImport("user32", EntryPoint = "GetWindowTextA")]
private static extern int GetWindowText(IntPtr hWnd, string lpString, int nMaxCount);
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
private const int WM_LBUTTONDOWN = 513;
private const int WM_LBUTTONUP = 514;
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;
private const int SW_MINIMIZE = 6;
private const int SW_MAXIMIZE = 3;
private const int SW_SHOWMAXIMIZED = 3;
private const int SW_RESTORE = 9;
public void Changetext ( string TextToSet )
{
IntPtr Taskbar = FindWindow("Shell_TrayWnd", null);
IntPtr StartButton = FindWindowEx(Taskbar, IntPtr.Zero, "Button", null);
SetWindowText(StartButton, TextToSet );
EnableWindow(StartButton, false);
EnableWindow(StartButton, true);
}
}
}
But the moment a refresh to the taskbar occur it return to its normal text "Start"
how to make it permanent
Ahmad Shaban
|
|
|
|
|
I just need to know how to change the size of it To keep it there, just set the method and call it on a timer...
|
|
|
|
|
Hi,
I am looking for a statistical random function that would allow me to supply the mean, min and max values. Something like:
Double mean = 3;
Double min = 1;
Double max = 10;
Double d = GenNext ()
Any help would be appreciated.
|
|
|
|
|
I don't know what "mean" would be ... but have you looked at the Random class?
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
Thanks for reply.
Sorry for the confusion but here is the definition. Mean: The average of a set of N numbers.
Yes I have, the best I could come up with is this:
double h;
double avg = 3.0, max = 10.0, min = 1.0;
Random RandomClass = new Random (10);
h = (- System.Math.Log(RandomClass.NextDouble())) * (avg - min);
But this does not help with making sure the value doesn’t go over the max.
|
|
|
|
|
CWIZO wrote: I don't know what "mean" would be ... but have you looked at the Random class?
Mean is the average ((val1 + val2 + .. valN-1 + valN)/N ) value. Random has a designed mean of (MinVal+MaxVal)/2. To do what the OP wants where the mean could be located elsewhere would need a way to define the relative distribution. For the general implementation you'd need a parameter on the line of f(x) = <some function=""> where F(x) is defined over the range min..max and has a global maxima at mean. F(x) would scale the random value given a random value R. you'd return K defined that Integral(f(k), min value,k) = R. Integral f(x) would need scaled to normalize the return. For a specfic distribution you could try hardcoding it instead of taking a function as aparameter. You could try examing (large) 3rd party math libraries, but I suspect this is something that you'll need to write yourself.
All of this is off the top of my head, and I don't know how to do the implementation.
|
|
|
|
|
I'm serializing xml data to files and need to find a way to add an xsi:schemaLocation="path\schema.xsd" atribute to the data being written.
|
|
|
|
|
[System.Xml.Serialization.XmlAttribute<br />
(Namespace="http://www.w3.org/2001/XMLSchema-instance")]<br />
public string schemaLocation = "Namespace path\\SchemaName.xsd";
I can get it in by adding this to the C# file autogenerated by the XSD tool, but this is obviously a suboptimum solution. I know for a fact that when I update the schema and rerun XSD several months later I'll forget I need to modify the file again. Is there a way I can do this from either a wrapper class or the IO class using filestreams and serializers?
|
|
|
|
|