Csharp/C Sharp/Development Class/External API
Версия от 15:31, 26 мая 2010; (обсуждение)
Demonstrate compound modifiers and calls to external API
/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
//
// GetUser.cs -- demonstratec compound modifiers and calls to external API
//
// Compile this program with the following command line:
// C:>csc /unsafe GetUser.cs
//
namespace nsUser
{
using System;
using System.Runtime.InteropServices;
public class GetUser
{
[DllImport ("user32.dll")]
static extern public int MessageBox(int hWnd, string msg,
string title, int type);
[DllImport ("advapi32.dll")]
static unsafe extern public bool GetUserName(byte [] User,
long *size);
[DllImport ("advapi32.dll")]
static unsafe extern public bool GetUserNameW(char [] User,
long *size);
static public void Main ()
{
byte [] user = new byte[256];
long size = (long) user.Length;
unsafe
{
if (GetUserName (user, &size) == false)
Console.WriteLine ("Error getting user name");
}
string strUser = "";
foreach (byte ch in user)
{
if (ch == 0)
break;
strUser += (char) ch;
}
MessageBox (0, "The current user is " + strUser, "Howdy", 0);
/*
//********************************************
// The following code uses the wide-character version GetUserNameW()
//
strUser = "";
char [] cUser = new char[256];
size = cUser.Length;
unsafe
{
if (GetUserNameW (cUser, &size) == false)
Console.WriteLine ("Error getting user name");
}
foreach (char ch in user)
{
if (ch == 0)
break;
strUser += ch;
}
MessageBox (0, "The current user is " + strUser, "Howdy", 0);
*/
}
}
}