Csharp/C Sharp/Development Class/External API

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Demonstrate compound modifiers and calls to external API

<source lang="csharp"> /* 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);
           */
       }
   }

}

      </source>