|
It's easy to convert the projects. See A Utility to Convert VS.NET 2003 Project Files[^]. It's actually a pretty simple file change to the project.
If new APIs are used you will have to work around them.
Software Design Engineer
Developer Division Sustained Engineering, Microsoft
My Articles
|
|
|
|
|
Do I need to do anything special to handle unicode. (Japanese characters)
Or will regular string variables work for that?
Thanks,
Elena
|
|
|
|
|
Strings in .NET are stored in Unicode. To type Unicode characters, use \uxxxx where xxxx is the hexidecimal Unicode characters. See the TextInfo class for additional information, such as enumerating Unicode characters (since characters may be made-up of multiple codepoints).
Be careful when marshaling strings to unmanaged code. See the DllImportAttribute.CharSet and StructLayoutAttribute.CharSet fields in the .NET Framework SDK documentation. The default is CharSet.Ansi , which will marshal the Unicode string as ANSI (ASCII plus whatever codepage is appropriate).
Software Design Engineer
Developer Division Sustained Engineering, Microsoft
My Articles
|
|
|
|
|
I am trying to capture a bitmap image of a control that is not completely visible because it is on a minimized form or is partially hanging off the screen. Note that this is not a control that is hidden by or behind another control. I do not want to make the control visible or change its location. I would like to just pass the control and a rectangle to a method and have a bitmap of the specified area of the control returned. Is this possible?
Thanks
Rich
|
|
|
|
|
The following should do the screen capture, but if you don't have the control visible you probably won't be able to capture it. Hope this gets you started.
[DllImport("gdi32.dll")]
public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest, int nWidth,
int nHeight, IntPtr hObjSource, int nXSrc, int nYSrc, TernaryRasterOperations dwRop);
public enum TernaryRasterOperations
{
SRCCOPY = 0x00CC0020,
SRCPAINT = 0x00EE0086,
SRCAND = 0x008800C6,
SRCINVERT = 0x00660046,
SRCERASE = 0x00440328,
NOTSRCCOPY = 0x00330008,
NOTSRCERASE = 0x001100A6,
MERGECOPY = 0x00C000CA,
MERGEPAINT = 0x00BB0226,
PATCOPY = 0x00F00021,
PATPAINT = 0x00FB0A09,
PATINVERT = 0x005A0049,
DSTINVERT = 0x00550009,
BLACKNESS = 0x00000042,
WHITENESS = 0x00FF0062,
};
Graphics g1 = this.CreateGraphics();
Image image = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);
Graphics g2 = Graphics.FromImage(image);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, TernaryRasterOperations.SRCCOPY);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
image.Save(@"c:\someimage.jpg", ImageFormat.Jpeg);
- Nick Parker My Blog | My Articles
|
|
|
|
|
In extension to what Nick said, it's really not possible. Windows doesn't draw what isn't seen. What you see on screen is logically 3 dimensional, but is drawn on a 2-dimensional surface. This is why for effecting painting you use the clipping region to avoid having to draw more of a client area than you have to. What doesn't need to be drawn doesn't get drawn.
Now, this will change in "Longhorn" since "Avalon" is a whole new graphics package written from the ground-up and is similar to SVG (scalable vector graphics) that are drawn and managed by a different mechanism. Winodws 2000 and newer (for Windows platforms based on NT technology) also features layered windows that help get around this expensive painting operation (it manages painted surfaces different), but it still doesn't draw off-screen.
You can find a lot more information about this on http://msdn.microsoft.com[^]. There's "tons" of articles on Avalong, and there's information about layered windows that you can use set. Just search for SetLayeredWindowsAttributes for a reference point.
Software Design Engineer
Developer Division Sustained Engineering, Microsoft
My Articles
|
|
|
|
|
Okay gang,
I need your expertise to help me help out a co-worker. Here's the scenario:
1) We have 160 Win2000 DC's in our company and we are preparing to go to Windows 2003, but we need to compare DIT File sizes on a DAILY basis for every server, to monitor AD growth as we update the Schema and conduct daily business.
2) Currently, we do not have any means of checking the DIT file size other than to manually go to each servers NTDS directory and look at the NTDS.dit file and manually record the size in an Excel spreadsheet.
3) My co-worker asked me to analyze the task and come up with a possible solution that could start out small (30 servers in a test environment) then scale out to the enterprise environment.
Based on the above, does anybody have suggestions that may make this task possible? I'm kind of at a loss at the moment, as I'm buried in another project to fix a RUS issue in one of our Exchange Sites.
Any suggestions and/or code help (C# or VB.Net) are greatly appreciated.
Regards,
- - - -
KoalaCowboy
Knowledge Monger
|
|
|
|
|
Its a relatively easy task.
<br />
<br />
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(MACHINE_NAME + PATH);<br />
System.IO.FileInfo[] fi = di.GetFiles("NTDS.dit");<br />
if( fi != null )<br />
return fi[0].Length;<br />
<br />
|
|
|
|
|
Mark,
Thanks! I'll give that a whirl and see where it takes me.
Your help is greatly appreciated. All the programming I know is 'self-taught' or learned through examples provided by people such as yourself.
Hopefully, I haven't picked up too many 'bad habits' along the way.
Regards,
KoalaCowboy
KoalaCowboy
Knowledge Monger
|
|
|
|
|
|
It was interesting, but no. I just want to kill this worker thread..... why??? just DIE...
/\ |_ E X E GG
|
|
|
|
|
How long does it stay in the processes list? Is it because of the garabage collector?
|
|
|
|
|
try "Environment.Exit()" that will kill it
|
|
|
|
|
How come after I run Application.Exit() on my program, it still exists in the Processes tab of the Task Manager?? Shouldn't .Exit() kill all the threads and everything? I've heard Application.Exit() described as dropping a bomb on your program....
/\ |_ E X E GG
|
|
|
|
|
How do you force the System.Windows.Forms.DataGrid's scrollbars to show?
I have a data grid where the number of rows is greater than the control can accomadate and I have no way of reaching the bottom rows without the vertical scrollbar working.
Ryan Ehrenreich
Applied Strategies Technology
|
|
|
|
|
I am very new to C#, I have tried to make this work but it is very difficult learning this new language.
Scenario: Three salespeople work at Sunshine Hot Tubs - Andrea, Brittany, and Eric. Write a program that prompts the user for a saleperson's initial. While the user does not type 'Z', continue by promting for the amount of a sale that salesperson made. Calculate the saleperson's Commission as 10 percent of the sale amount, and add the commission to a running total for that salesperson. After the user types 'Z' for an initial, display each salesperson's total commission earned.
Here's what I have so far: (I have commented out compiler errors)
using System;
namespace TubSales
{//Namespace
class SalesPeople
{//Class
static void Main(string[] args)
{// Main
char response;
//double Comm;
Console.WriteLine("Please enter your first initial, or type Z to to find your total commision.");
response = GetChar();
while (response == 'A' || response == 'a')
{
Console.WriteLine("Enter the amount of sales you had.");
//CalculateSales();
}
while (response == 'B' || response == 'b')
{
Console.WriteLine("Enter the amount of sales you had.");
Console.ReadLine();
}
while (response == 'E' || response == 'e')
{
Console.WriteLine("Enter the amount of sales you had.");
Console.ReadLine();
}
if (response == 'Z' || response == 'z')
{
Console.WriteLine("Andrea's total commision is {0}.");//,Comm);
Console.WriteLine("Brittany's total commision {0}.");//,Comm);
Console.WriteLine("Eric's total commision {0}.");//,Comm);
}
Console.WriteLine("Have a Nice Day!");
}//Main
//public static double CalculateSales()
//{
//double Sales;
//double Commision;
//Commision = .10;
//double answer;
//inputString = Console.ReadLine(Sales);
//return answer;
//Comm = Sales * Commision;
//}
public static char GetChar()
{
string inputString;
char answer;
inputString = Console.ReadLine();
answer = Convert.ToChar(inputString);
return answer;
}
}//Class
}//Namespace
|
|
|
|
|
What were the compiler errors?
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
Not getting the response you want from a question asked in an online forum: How to Ask Questions the Smart Way!
|
|
|
|
|
1. Use of unassigned local variable 'Comm'
2. The name 'inputString' does not exist in the class or namespace 'TubSales.SalesPeople'
3. The name 'Comm' does not exist in the class or namespace 'TubSales.SalesPeople'
4. Unreachable code detected
|
|
|
|
|
1. you have declared a variable called Comm in the Main() method, but you don't assign anything to it. You appear to try to do this in the CalculateSales() method, but this is a different scope and cannot see the Comm in the Main() method. TIP: the curly braces {} are scope delimiters if you declare something inside a set of braces then code outside them cannot see it.
2. In the CalculateSales() method you have not declared a variable called inputString. Change the line to read string inputString = Console.ReadLine(Sales);
3. See also (1) above. You need to create a variable called Comm in the CalculateSales() method. The line should read double Comm = Sales * Commision;
4. Swap the last two lines of the CalculateSales() method. After a return statement no more code can run, it is therefore unreachable.
Does this help?
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
Not getting the response you want from a question asked in an online forum: How to Ask Questions the Smart Way!
|
|
|
|
|
Thank you, That helped alot.
I know this seems very rudemtary but it's like learning spanish in 7 weeks.
|
|
|
|
|
Your welcome.
Also: Es posible aprender un nivel bueno de la idioma española en siete semanas con el curso de Michel Thomas y después de qué, imerción total en la cultura española. (It's been over a year since I did any Spanish so I may have made some mistakes)
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
Not getting the response you want from a question asked in an online forum: How to Ask Questions the Smart Way!
|
|
|
|
|
Es posible aprender un buen nivel de español en siete semanas con el curso de Michel Thomas y despues de el cual, una inmersión total el la cultura española.
|
|
|
|
|
Thanks
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
Not getting the response you want from a question asked in an online forum: How to Ask Questions the Smart Way!
|
|
|
|
|
hi,
Better try to consice your question with main points. Otherwise no one will try to read.
See in C# what every input you are giving through console is treating as string. And it's your headache to convert it into your required form.
You can use Console.Read() insted of Console.Readline().
static void Main(string[] args)
{
char Responce;
Console.WriteLine("Please enter your first initial, or type Z to to find your total commision.");
Responce=Convert.ToChar(Console.Read());
Console.WriteLine(Responce.ToString());
}
**************************
S r e e j i t h N a i r
**************************
|
|
|
|
|
sreejith ss nair wrote:
Better try to consice your question with main points. Otherwise no one will try to read.
By the time you posted this, I'd already answered Larkdog and his problem was solved 11 hours previously.
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
Not getting the response you want from a question asked in an online forum: How to Ask Questions the Smart Way!
|
|
|
|