カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

VisualC#でMDBにアクセス

Windows7 64bit版のVisual C# 2008を使用してAccessのデータベースに
アクセスするアプリケーションを作っていたら以下のようなエラーに遭遇しました。

「’Microsoft.Jet.OLEDB.4.0′ プロバイダはローカルのコンピュータに登録されていません。」
(InvalidOperationException)

これは64bitのPCで開発することに起因するようです。
ビルドする際に32bit(x86)を対象にする必要があります。
以下、その方法です。

構成マネージャ

[ツール]-[オプション]を開きます。

左側のツリー表示に[プロジェクトおよびソリューション]-[全般]を選択します。
右側にある[ビルド構成の詳細を表示]にチェックを入れます。

※左側のツリー表示に[プロジェクトおよびソリューション]がない場合、
[すべての設定を表示]にチェックを入れます。 続きを読む…»

1,015 views

C# WebBrowserのレンダリングモード

Visual C#にてブラウザを使用したアプリケーションを作成したとき、
WEBページを表示すると表示がおかしいと思って、ユーザーエージェントを確認してみると
IE7となっていました。

環境はWindows7でIE9なのになぜだろう?と思いました。
どうやら作成したアプリケーションではレンダリングモードが「7」で実行されているようです。

解決するにはレジストリを編集し、レンダリングモードを変更してやらないといけません。

ユーザーエージェントのレジストリキー

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

レンダリングモードのレジストリキー

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE

ユーザーエージェント、レンダリングモードをIE9にするには、それぞれのレジストリキーに
ユーザーエージェントは「9000」、レンダリングモードは「90000」という値を設定します。
続きを読む…»

7,842 views

登録されているアプリケーションでファイルを実行する

System.Diagnostics.Process.Start("ファイルパス");

自動的に関連付けされているアプリケーションでファイルが開きます。

例)エクスプローラーでフォルダーを開く

System.Diagnostics.Process.Start(@"C:\My Documents");
1,338 views

C#でのEnum(列挙型)

基本となる列挙型

enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

取り出すときはintegerにキャストする

(int)Days.Sun // 0
(int)Days.Wed // 3

続きを読む…»

2,016 views

動画ファイル(.avi)の長さ(総時間)を取得する

Windowsエクスプローラーにてファイルのプロパティの概要タブで確認できる内容を取得する。
AVIやMP3には付加情報(ID3タグ情報)が格納されている。

※この方法は簡易的なものでID3.orgで規定されているフォーマットに沿って読み出すのとは異なり、主要な項目のみ取得するものである。

まず、このプログラムにはShell32.dllを使用します。 続きを読む…»

7,127 views

Visual C# axMediaPlayer

axMediaPlayerコンポーネント

ツールボックス上で右クリック->[アイテムの選択]
COMコンポーネントタブを選択し、一覧の「Windows Media Player」をチェック

プロパティ
settings.mute (boolean) 消音
settings.URL (string) ファイルパス
settings.autoStart (boolean) 起動時、自動再生するか
Ctlcontrols.currentPosition (integer) 再生位置(秒数)
currentMedia.duration 再生中のファイルの総時間
続きを読む…»

1,747 views

ファイルのダウンロード

System.Net.WebClientクラスを使用してファイルをダウンロードします

//参照を追加
using System.Net;

・単純なダウンロード

public static void getFile(string uri, string filename)
{
 WebClient wc = new WebClient();
 wc.DownloadFile(uri, filename);
 wc.Dispose();
}

・バイト配列でダウンロード

public static byte[] getFile(string uri)
{
 byte[] data;

 //WebClientの作成
 WebClient wc = new WebClient();
 //ファイルをダウンロードする
 try
 {
  data = wc.DownloadData(uri);

  //後始末
  wc.Dispose();

  if (data.Length < 2500)
  {
   return null;
  }
 }
 catch
 {
  data = null;
 }

 return data;
}

・バイト配列から書き込み保存

public static void SaveFile(byte[] data, string filename)
{
 FileStream fsTo = new FileStream(filename, FileMode.Create, FileAccess.Write);

 fsTo.Write(data, 0, data.Length);

 fsTo.Close();
}
1,189 views

自身のIPアドレスを取得

using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;


public static int check_ip()
{
  string hostname;     // ホスト名
  IPHostEntry ipentry; // IPエントリ(IPアドレスリスト)
  IPAddress ipaddr;    // IPアドレス
  string ipaddress;    // IPアドレス
  string[] IP_ARRAY;
  int n;

  ipaddress = "0.0.0.0";

  try
  {
    // ホスト名を取得
    hostname = Dns.GetHostName();

    // ホスト名からIPアドレスを取得する
    ipentry = Dns.GetHostEntry(hostname);

    // windows7だと、IPアドレスがインデックス「2」のため
    // ループで取り出す
    for (int i = 0; i < ipentry.AddressList.Length; i++)
    {
      // Regex : 正規表現
      Regex myRegex = new Regex(@"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$");
      // 対象文字列が存在するか?
      if (myRegex.IsMatch(ipentry.AddressList[i].ToString()))
      {
        ipaddr = ipentry.AddressList[i];
        ipaddress = ipaddr.ToString();
        break;
      }
    }
  }
  catch(Exception ex)
  {
    MessageBox.Show(ex.Message);
    Application.Exit();
  }

  // ネットワーク識別子を取得
  IP_ARRAY = ipaddress.Split('.');

  // ネットワーク識別子を返す
  n = int.Parse(IP_ARRAY[2]);

  return n;
}
2,327 views

デフォルトゲートウェイのアドレスを取得する

要参照設定

System.Net.NetworkInformation;

public static void getDefaultGateway()
{
 NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

 foreach (NetworkInterface adapter in adapters)
 {
  IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
  GatewayIPAddressInformationCollection addresses =
   adapterProperties.GatewayAddresses;
  if (addresses.Count > 0)
  {
   foreach (GatewayIPAddressInformation address in addresses)
   {
    Console.WriteLine(address.Address.ToString());
   }
  }
 }
}

adapter.Name
ネットワークアダプタの名前を取得
例)ローカル エリア接続

adapter.Id
ネットワークアダプタのID
例){A32F1F13-1CBD-4300-ADE6-D3AEA1426A52}

adapter.OperationalStatus
ネットワーク接続の現在の操作状態を取得
例)Up

adapter.Speed
ネットワークインターフェイスの速度を取得
例)100000000

adapter.Description
インターフェイスの説明を取得
例)Broadcom NetXtreme 57xx Gigabit Controller – パケット スケジューラ ミニポート

8,062 views

ファイル名を変更

ファイル名を変更するには、DirectoryクラスのMove()メソッドを使用します。

//現在の名前と新しい名前を引数に指定します。
Directory.Move("Test.txt", "Test.bak");

※但し、異なるボリューム間は移動できない

異なるボリューム間で移動したい場合はFileInfoクラスを使用します。

FileInfo fInfo = new FileInfo ("Test.txt");
fInfo.MoveTo("Test.bak");

※但し、移動先に同名のファイルが存在すればエラーが発生

1,244 views