C# 言語 tips

Copyright(c) 2002 Coop!(コープ).
http://www.ecoop.net/coop/



マネージコードからアンマネージDLLを使う(C#からCで作成されたDLLを使う、など)

例:

  using System.Runtime.InteropServices;

  public class Win32 {
   [DllImport("user32.dll", CharSet=CharSet.Auto)]
   public static extern int MessageBox(int hWnd, String text, 
                     String caption, uint type);
  }

構文:

  using System.Runtime.InteropServices;
  public class {クラス名} {
    //以下プロトタイプ宣言
    [DllImport("dllname",{オブジェクトフィールド})]
    {public | private | protected} static extern {戻り値形式} {関数名}(正確な引数);
//  [DllImport("dllname",{オブジェクトフィールド,[オブジェクトフィールド2],..})]
//  {public | private | protected} static extern {戻り値形式} {関数名2}(正確な引数);
    // :
    // :
    // :
    //ここまで
    void main(){/*定義した関数を実際に利用する*/}
  }

オブジェクトフィールドにはEntryPoint="関数名"などが入る。
*ただし、EntryPointは定義する関数名とDLLのエントリ関数名が同じになる場合は省略 できる。
資料: http://ukamen.hp.infoseek.co.jp/Programming/iniFile/
参照: ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpconcreatingprototypesinmanagedcode.htm


ネットワークを利用する方法

.Net Frameworkが提供するネットワーク用のクラス
WebClient HTTPなどのプロトコルでデータ送受信するクラス。簡単だが非同期処理不可。
WebRequest HTTPなどでデータを要求するためのクラス
WebResponse 要求に対する応答の結果をあらわすクラス。このクラスを使えばデータを取得できる。
TcpClient TCP/IPを利用して通信を行うクラス。簡単だが非同期処理不可。
Socket TCP/IPを利用するための基本クラス。

WebClientを使った例:

using System.Net; //WebClient
using System.IO;  //Stream,StreamReader
using System.Windows.Forms; //MessageBox
namespace std
{
	class c1
	{
		public static void Main()
		{
			WebClient client = new WebClient();
			Stream strm = client.OpenRead("http://www.ecoop.net/");
			StreamReader sr = new StreamReader(strm);
			MessageBox.Show(sr.ReadToEnd());
		}
	}
}

Copyright(c) 2002 Coop!(コープ).
http://www.ecoop.net/coop/