|
The service has to be able to run in a desktop session. In the Services control panel, find the service, open it's properties, and select "Allow this service to interact with the desktop". Alternatively, you can run the service as a specific user, but it will always run as that user and, thus, email will be addressed from him or her.
If you want to send email from a service, I recommend you implement an SMTP client yourself. For the basics, it's really very easy. Just click "Search comments" above and search for "SMTP" or something. I know that I've posted code snippets several times in the past and you can always search google[^] for more.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I use the control to design a window form with the DotNet pattern.I want my form to be the similar to toolbox and solution explorer,which can hide when you push the AutoHide and display when the cursor pass it.And with MagicLibrary I succeed.But I still have a problem.
The toolbox or solution explorer is so agile that an ordinary customer can not be used to it.The key is it is very difficult to put the solution explorer into its original position after a customer pulls it out. So I really want to know how I can make the solution explorer fixed to its initial position.Just like the fields "anchor".
If you know the solution,please mail to me :"w2520n2520@hotmail.com".
Thank you!
Never understand
ridical version!
|
|
|
|
|
What is "MagicLibrary" supplied by codeproject?
Is it something that appeared in an article? If so you should use the forum at the bottom of the article's page.
"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
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
|
|
|
|
|
MagicLibrary is a control upload by Phil Wright.
You can search "Phil Wright" or try the URL "http://www.codeproject.com/cs/miscctrl/magicdocking.asp" to understand it.Thank you for your reply.
Never understand
ridical version!
|
|
|
|
|
ILoveCS wrote:
MagicLibrary is a control upload by Phil Wright
Then I suggest that you ask in the appropriate forum. You'll find it at the bottom of the article's page[^]. I told you this in my previous post to you.
"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
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
|
|
|
|
|
Hi,
I am programming a Web Application using C#. Is there any way I can get Web Client IP address?
CD
|
|
|
|
|
Request.ServerVariables["REMOTE_ADDR"]
check out this page to get a list of all the variables.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
Thank you. It really helps
|
|
|
|
|
Anyone know how I can trap this message?
I've tried trapping it in the WndProc (0x00A2) but it never is generated. The documentation says:
"If a window has captured the mouse, this message is not posted'
does this mean its not going to be generated ?
|
|
|
|
|
Why don't you check for WM_LBUTTONUP (0x0202) instead? The following works for me:
int WM_LBUTTONUP = 0x0202;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_LBUTTONUP)
MessageBox.Show("mouse up");
base.WndProc (ref m);
}
- Nick Parker My Blog | My Articles
|
|
|
|
|
Because I'm attempting to determine when the window has been moved.
I know about OnLocationChanged and WM_MOVE and WM_MOVING, but I need to raise an event when the user is finished moving the window.
|
|
|
|
|
As we've discussed in this forum many times in the past, there really isn't a way. You could implement this by using a timer but that's pretty presumptuous. The user may have just paused while continuing to drag.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I'm aware of how to use arrays similar to the following example.
static void Main()
{
ArrayList list = new ArrayList();
list.Add(45);
list.Add(87);
list.Add(12);
foreach(int num in list)
{
Console.WriteLine(num);
}
}
However, I'm trying to capture data strings from a log server and parse them in memory rather than FileStreaming them to a log.txt file and parsing later.
I can view the ArrayList activity with a listBox and it seems to me it only holds one (1) string at a time. I need a growing list in memory that I can sort and parse. Here's my failing setup so far. Help...... (C#)
str = System.Text.Encoding.ASCII.GetString(data); //data is a Byte[]
Al = new ArrayList(1024);
Al.Add(str);
foreach(string Line in Al)
{
listBox1.Items.Add(Line.ToString());
}
// Knowledge is a one way street, Wisdom is looking both ways before crossing
|
|
|
|
|
You've only added one string to the arrayList, so how many were you hoping would come out ? If there is a seperator in the byte[] that denotes the position of multiple strings, then use the Split function of the string class to turn str into a String[], which you can then foreach into the listbox. Assuming your delimiter is a slash or something, otherwise you may have to parse the byte array instead.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
just bind the arraylist's datasource and dont add/remove items to the listbox itself eg.
listBox1.DataSource = Al;
SHould be all you need. Look at the help too, if you want to customise the display of the listbox (something member (datamember?) property).
top secret xacc-ide 0.0.1
|
|
|
|
|
For those of you wanting to use file system type pattern matching on strings, here is some code for you. For example, you can use *, ?, and # wildcards in your pattern and test a string against it to see if it matches. This is similar to the VB LIKE function.
Ref: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxgrfwildcards.asp
*********Code follows************
///
/// Matches the pattern and string.
///
/// <param name="pText" />The Text string to be matched.
/// <param name="pPattern" />The pattern containing *, ?, and # wildcards.
/// <param name="pIgnoreCase" />True=Ignore Case.
/// <returns>True if the text and pattern match.
public static bool Like(string pText, string pPattern, bool pIgnoreCase)
{
bool retVal = false;
if(pText == null || pPattern == null)
{
return retVal;
}
if(pText.Length == 0 || pPattern.Length == 0)
{
return retVal;
}
if(pPattern == "*" || pPattern == "*.*")
{
retVal = true;
}
else
{ //Replace the pattern matching characters with temp values
//So all other characters can be escaped
pPattern = pPattern.Replace(@"*","\xfc");
pPattern = pPattern.Replace(@"?","\xfd");
pPattern = pPattern.Replace(@"#","\xfe");
//Escape all other characters
pPattern = Regex.Escape(pPattern);
//Replace the temp values with the required regular expressions
pPattern = pPattern.Replace("\xfc",@".*[^.]");
pPattern = pPattern.Replace("\xfd",@".");
pPattern = pPattern.Replace("\xfe",@"[0-9]");
if(pIgnoreCase == false)
{
retVal = Regex.IsMatch(pText, pPattern, RegexOptions.Compiled);
}
else
{
retVal = Regex.IsMatch(pText, pPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
}
}
return retVal;
}
private void TestTheLikeFunction ()
{
bool val;
// should return true
val = (Like(@"workbook.xls",@"*.xls",true));
val = (Like(@"workbook.xls",@"workbook*",true));
val = (Like(@"workbook.xls",@"workbook.*",true));
val = (Like(@"workbook.xls",@"work*.xls",true));
val = (Like(@"workbook.xls",@"work????.*",true));
val = (Like(@"workbook.xls",@"work*.*",true));
val = (Like(@"workbook.xls",@"*orkbook.xls",true));
val = (Like(@"workbook.xls",@"?orkbook.xls",true));
val = (Like(@"workbook.xls",@"?orkb??k.xls",true));
val = (Like(@"abcxls",@"*xls",true));
val = (Like(@"abcxls",@"???xls",true));
val = (Like(@"ab1xls",@"??#xls",true));
val = (Like(@"a12xls",@"?##xls",true));
// should return false
val = (Like(@"abcxls",@"#*",true));
val = (Like(@"abcxls",@"?#?xls",true));
val = (Like(@"abcxls",@"*.xls",true));
val = (Like(@"abcxls",@"*xls?",true));
val = (Like(@"abcxls",@"????xls",true));
val = (Like(@"workbook.xls",@"workbooke.*",true));
val = (Like(@"workbook.xls",@"work*xls",true));
val = (Like(@"workbook.xls",@"work?????.*",true));
val = (Like(@"workbook.xls",@"work???.*",true));
}
RobC
|
|
|
|
|
Rob,
I would recommend that you write up your findings as an article and submit it. The C# forum is to allow people to post questions and answers about the C# language. There are too many threads in this forum, yours will quickly disappear. Good luck.
- Nick Parker My Blog | My Articles
|
|
|
|
|
Hi all. Making my first "big" C# WinForms app. Basically, I have a WinForm (called MainForm) that has a menu, and a tab control docked to take up the full area. Eventually the number of tabs will be dynamic based on how many "workspaces" a user has open but for now is static. Within the first tab page, I am inserting a custom control -- called TypeAContentControl. There may be several of these on different tab pages (depending if the user called for multiple instances). That control actually contains, you guessed it, yet another control, and also contains a treeview and a panel which will house a future control. The control that is housed within TypeAContentControl is called SearchControl. It's pretty basic, contains a radio set, a text box, and a single button (which is at the heart of my question).
I can't seem to figure out how to make this the "default" button. I only need it default while the focus is within other fields of the SearchControl (ie, I want to type in my textbox, or be on my radio buttons and hit Enter to perform an action). The only time I seem to hit the code behind the button is if I tab enough times so that the button has the focus, and then hit spacebar or enter. If I'm on another field within SearchControl, I have to use the keyboard accelerator to hit my button.
I know on a standard WinForm with buttons, I can just set that Form's AcceptButton accordingly, but I do not see that as the solution for this problem.
Anyone have any clues as to what might help me out here? I've been Googling and searching the MSDN for a while now trying to figure this out and just not finding anything helpful. Any help would be appreciated.
Thanks,
-John
|
|
|
|
|
Ok, clarification of some of the above: "I know on a standard WinForm with buttons, I can just set that Form's AcceptButton accordingly, but I do not see that as the solution for this problem." -- I can't even find an "AcceptButton" property except on my *Form*. It appears that the UserControls don't expose any of the behavior needed to make a default button work (someone please tell me I'm wrong =>).
So what I did for now is made a event handler for KeyDown on each of the fields within my SearchControl user control, and any time an Enter is detected, I send the button a PressButton command. This seems to work, however, I would like it to show the button as a default button (extra border basically). Am I going to have to owner draw the button? I'm not opposed to that, it just seems like this is an awful lot of monkeying for something I could do in ATL very easily. Or does someone have the "correct" solution to this whole default button & user control problem? Maybe the solution involves "Man you are totally designing/coding that wrong, go grab this book on WinForm development."
Thanks,
-John
|
|
|
|
|
There's a couple different things you could do. One would be to define those properties on your UserControl derivative, and then when you add that to a Form (it's going to happen eventually) assign Form.AcceptButton to MyUserControl.AcceptButton . You could even use a designer to do this automatically.
Another one - though I'm not sure it'll work - is to extend the Button class and override the CreateParams property like so:
using CP = System.Windows.Forms.CreateParams;
const int BS_DEFPUSHBUTTON = 0x01;
protected override CP CreateParams
{
get
{
CP cp = base.CreateParams;
cp.Style |= BS_DEFPUSHBUTTON;
return cp;
}
} If you wanted, you could encapsulate this behavior into a property that conditionally sets the BS_DEFPUSHBUTTON window style.
The questionable part is whether the Windows Management APIs will really care if this button is not in a Form (a dialog, as it knows it). Good luck!
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thank you for the reply. The first solution sounds extremely elegant, but I'll need to make sure on entry of any UserControl that I reset Form.AcceptButton to be the valid default button for whatever control I'm on. Not a big deal but seems like the maintenance of the field could get buggy in complex situations.
The second solution seems like it will be what I need to try, and the ability to set the style conditionally, although I can't think of an instance where I'll need to use this now, seems like something I should try to add. Either way, thank you for your suggestions, much better than checking for Enter on each keypress of each field.
|
|
|
|
|
Hello!
I want to create an application that can play mp3-files. What's the best way of going?
Is there any class in the framework that i can use?
Thanks!
/Erik
|
|
|
|
|
Your best bet would be to go with DirectX, it has inherent support to play both audio and video.
- Nick Parker My Blog | My Articles
|
|
|
|
|
Hi Erik,
If what you want is basic control over mp3 files (play, stop, pause etc), your best bet would be to use the AudioVideoPlayback component of DirectX.
The DirectX SDK comes with some examples and you should be able to code a simple app to play mp3 files in a few minutes' time.
|
|
|
|
|
Hi all,
as already described in an other thread, I am currently working on drawing PieCharts like this:
http://mitglied.lycos.de/axbycz/charts/chart.jpg
I have a little testapp that writes a bitmap of a PieChart to harddisk, when I press a button.
This works fine for the first time, but if I press the button a second time, I get a System.ArgumentException:
exception.Message is "Invalid parameter used."
HResult -2147024809
COMPlusExceptionCode -532459699
Here's my little application:
http://mitglied.lycos.de/axbycz/charts/Charting.zip
Would be great if someone could have a look at it. I'm think I'm going insane, because I can't find, what the problem is
|
|
|
|
|