タグ

ブックマーク / dobon.net (24)

  • フォームやコントロールの形を変える

    フォームを平方四辺形にする次の例ではフォーム(Form1)の形を平方四辺形にします。ここではフォームのLoadイベントハンドラ内にコードを書いていますが、もちろんフォームのコンストラクタ内などでも構いません。 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'フォームのサイズを適当に変更 Me.SetBounds(Me.Left, Me.Top, 201, 101, _ BoundsSpecified.Size) '多角形の頂点の位置を設定 Dim points() As Point = _ {New Point(0, 0), _ New Point(100, 100), _ New Point(200, 100), _ New

    フォームやコントロールの形を変える
  • サロゲートペアや結合文字が含まれているか調べる

    サロゲートペアや結合文字が含まれているか調べるString型の文字列にサロゲートペアや結合文字が含まれていると、非常に厄介です。これらを考慮しないでコードを書くと、文字列にこれらの文字が入っているときに、不具合が生じるかもしれません。ここでは文字列内にサロゲートペアや結合文字が含まれているかを調べる方法を紹介します。 サロゲートペアが含まれているか調べる通常は、1つのChar値で1つの文字を表現します。ところがサロゲートペア(代用対)は、2つのChar値を使って1つの文字を表現します。サロゲートペアの例としては、魚のホッケ(魚へんに花)(文字コードはU+29E3D)や、牛丼の吉野家の「よし」の字(土に口)(文字コードはU+20BB7)などがあります。ホッケの場合はU+D867とU+DE3D、「よし」の場合はU+D842とU+DFB7の2つのChar値を使って表現します。 サロゲートペアにつ

    サロゲートペアや結合文字が含まれているか調べる
  • アプリケーション(自分自身)を再起動する

    アプリケーション(自分自身)を再起動するここでは、自分自身のWindowsフォームアプリケーションを再起動する(現在実行中のアプリケーションを終了させて、新たに起動する)方法を幾つか紹介します。 .NET Framework 2.0以降で、Application.Restartメソッドを使用する方法.NET Framework 2.0からは、Application.Restartメソッドを使ってアプリケーションを再起動することができます。

    アプリケーション(自分自身)を再起動する
  • SmtpClientクラスを使ってメールを送信する

    注意:ここで紹介しているコードを実際に使用する場合は、必ずSMTPサーバー、送信者、宛先などの設定を適切に変更してください。 ここでは、.NET Framework 2.0からサポートされたSmtpClientクラスを使ってSMTPでメールを送信する基的な方法を紹介します。なお、添付ファイル、HTMLメール、SMTP認証、SSL/TLSなどについては別のページで説明していますので、「インターネット編メニュー」をご覧ください。 .NET Framework 1.1以前でメールを送信する方法は、「SMTPでメールを送信する」をご覧ください。 最も簡単な方法まずは、最も簡単であろう例を示します。 '送信者 Dim senderMail As String = "sender@xxx.xxx" '宛先 Dim recipientMail As String = "recipient@xxx.xx

    SmtpClientクラスを使ってメールを送信する
  • グラデーションをかける

    注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。また、塗りつぶした図形の描画法については、「塗りつぶした図形を描く」をご覧ください。 線形グラデーション線形グラデーションは実に簡単で、LinearGradientBrushオブジェクト(System.Drawing.Drawing2D名前空間)をブラシとして使用するだけです。 次の例ではピクチャボックス(PictureBox1)をグラデーション(縦に白から黒)をかけて塗りつぶしています。ここでは縦にグラデーションをかけているためLinearGradientModeにVerticalを指定していますが、右上から左下へのグラデーションにはBackwardDiagonal、左上から右下へのグラデーションにはForwardDiagonal、左から右へのグラデーションにはHorizontalを

    グラデーションをかける
  • DOBON.NET .NET Tips - パスに関する情報を取得する

    パスからファイル名、拡張子、ディレクトリ名、ルートディレクトリ名等の情報を取得するPathクラスを用いることにより、ファイルのパスに関するさまざまな情報を取得することができます。たとえば、パスからファイル名、拡張子なしのファイル名、拡張子、ディレクトリ名、ルートディレクトリ名の取得や、拡張子を変更したときのパスの取得などができます。 パスからファイル名、拡張子などの情報を取得するまずは、パス文字列からいろいろな情報を取得する例を紹介します。指定するパス文字列のファイル(あるいはフォルダ)は、存在している必要はありません。 'ディレクトリ名の取得 Console.WriteLine( _ System.IO.Path.GetDirectoryName( _ "C:\My Documents\My Pictures\サンプル.jpg")) '結果: C:\My Documents\My Pic

    DOBON.NET .NET Tips - パスに関する情報を取得する
  • 画面をキャプチャする

    画面をキャプチャする画面をキャプチャ(ハードコピー)し、イメージをBitmapオブジェクトとして取得する方法を幾つか紹介します。 .NET Framework 2.0以降で、Graphics.CopyFromScreenメソッドを使用する方法.NET Framework 2.0から追加されたGraphics.CopyFromScreenメソッドを使用すれば、画面上の指定された範囲をキャプチャすることができます。 画面全体をキャプチャしてPictureBox1に表示する例を以下に示します。 'Imports System.Drawing 'Imports System.Windows.Forms 'Bitmapの作成 Dim bmp As New Bitmap(Screen.PrimaryScreen.Bounds.Width, _ Screen.PrimaryScreen.Bounds.H

    画面をキャプチャする
  • リモートデスクトップのクライアントセッションで実行されているか調べる

    リモートデスクトップのクライアントセッションで実行されているか調べるここでは、アプリケーションがRemote Desktop Protocol(RDP)を使用したリモートデスクトップサービス(ターミナルサービス)接続のクライアントセッションで実行されているか調べる方法を幾つか紹介します。 ここで紹介する方法は、基的には、リモートセッションの場合に有効です。コンソールセッション(「/console」や「/admin」をオプションに指定してmstscを起動)の場合は、OS(mstscのバージョン)等によっては、正しく判断できないこともあるようです。(情報が不足していますので、情報をお持ちの方はコメントで報告していただけると助かります。) なおここで紹介している内容は、「Detecting remote desktop connection」を参考にして書かせていただきました。 SystemI

    リモートデスクトップのクライアントセッションで実行されているか調べる
  • 単位を変更して描画する

    ここでは、メートルやインチ単位の長さを指定して描画や印刷を行う方法を紹介します。 PageUnitプロパティを指定する方法一番簡単な方法は、描画先のGraphicsオブジェクトのPageUnitプロパティを変更してから描画するという方法でしょう。 PageUnitプロパティはページ座標で使用する長さの単位を指定するためのプロパティで、ページ変換(ページ座標からデバイス座標への変換)で使用されます。GDI+の座標系について詳しくは、MSDNの「座標系の種類」をご覧ください。 PageUnitプロパティにはGraphicsUnit列挙体の値を指定できます。GraphicsUnit列挙体には、以下のようなメンバーがあります(MSDNからの引用です)。つまり、これらの単位を指定できます。

    単位を変更して描画する
  • アプリケーションの開始時または終了時に行う処理を記述する

    アプリケーションの開始時または終了時に行う処理を記述するここでは、アプリケーション(Windowsフォームアプリケーション)が開始した直後、または終了する直前に何かしたい場合、そのコードをどこに書けばよいかについて説明します。 なおここで紹介する方法は、メインフォームが作成される前、あるいは破棄された後に何か行いたい場合に役に立つ方法です。もしメインフォームがロードされた直後、あるいは閉じられた直後でよいのであれば、LoadイベントやFormClosedイベントを使用する方法で十分です。 エントリポイントメソッドに記述する方法アプリケーションが開始すると、まずエントリポイントメソッド(Mainメソッド)が呼び出されます。そして、エントリポイントメソッドから抜けるとアプリケーションが終了します。つまり、アプリケーションの開始時に行う処理はエントリポイントメソッドの先頭に記述し、アプリケーショ

    アプリケーションの開始時または終了時に行う処理を記述する
  • 配列やコレクションをシャッフルする(ランダムに並び替える)

    配列やコレクションをシャッフルする(ランダムに並び替える)配列をシャッフルし、要素をランダムに並び替える方法を紹介します。ここでは配列を例にしていますが、コレクションでも同じようにできるでしょう。なおここで説明している事柄は、「Coding Horror: Shuffling」を参考にしています。 Fisher-Yatesアルゴリズムまず、Fisher-Yatesアルゴリズムによる方法を紹介します。この方法は非常に高速です。 'シャッフルする配列 Dim ary As Integer() = New Integer() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 'Fisher-Yatesアルゴリズムでシャッフルする Dim rng As New System.Random() Dim n As Integer = ary.Length While n > 1 n -=

    配列やコレクションをシャッフルする(ランダムに並び替える)
  • ログオフやシャットダウンをしようとしている時にイベントを受け取る、またキャンセルする

    ログオフやシャットダウンをしようとしている時にイベントを受け取る、またキャンセルするSystemEvents.SessionEndingイベントにより、ユーザーがシステムからログオフしようとしている、またはシステムをシャットダウンしようとしたことを知ることができます。またこのとき受け取るSessionEndingEventArgs型の引数のCancelプロパティをTrueにすることにより、セッションの終了要求をキャンセルできます。しかしこのときでも絶対にキャンセルされるというわけではありません。 'Imports Microsoft.Win32 'がソースファイルの一番上に書かれているものとする。 'ログオフ、シャットダウンの通知 Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _

    ログオフやシャットダウンをしようとしている時にイベントを受け取る、またキャンセルする
  • 画像を半透明で表示する

    画像を半透明にするには、画像内のすべてのピクセルのアルファ値(透明度)を変更すればいいということになります。一つ一つのピクセルを操作するとなると大変ですので、ここではImageAttributesクラスとColorMatrixクラスを使ってアルファ値を変更して表示することを考えます。 ColorMatrixに関しては「画像のカラーバランスを補正して表示する」で説明していますのでそちらで確認していただくことにして、ここでは画像を透明度0.5で表示する例を示します。 'Imports System.Drawing '描画先とするImageオブジェクトを作成する Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height) 'ImageオブジェクトのGraphicsオブジェクトを作成する Dim g As Graphics = G

    画像を半透明で表示する
  • 特殊ディレクトリのパスを取得する

    特殊ディレクトリのパスを取得するEnvironmentクラスのGetFolderPathメソッドを使うと、デスクトップ、お気に入り、スタートメニュー、システムディレクトリなどなどの特殊ディレクトリの絶対パスを取得することができます。 使い方は簡単で、取得したいディレクトリを表すEnvironment.SpecialFolder列挙体の値を指定するだけです。 'デスクトップ Console.WriteLine( _ System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)) '結果: C:\Documents and Settings\UserName\デスクトップ 'お気に入り Console.WriteLine( _ System.Environment.GetFolderPath(Envir

    特殊ディレクトリのパスを取得する
  • Pingを送信する

    Pingを送信する.NET Framework 2.0以降で、Pingクラスを使用する.NET Framework 2.0からは、Pingクラス(System.Net.NetworkInformation名前空間)が追加され、簡単にPingを送信し、結果を受信することができます。 以下に"www.yahoo.com"にPingを送信し、結果を取得する例を示します。 'Pingオブジェクトの作成 Dim p As New System.Net.NetworkInformation.Ping() '"www.yahoo.com"にPingを送信する Dim reply As System.Net.NetworkInformation.PingReply = p.Send("www.yahoo.com") '結果を取得 If reply.Status = System.Net.NetworkIn

    Pingを送信する
  • UACが有効の時、アプリケーションを管理者に昇格させて起動する

    UACが有効の時、アプリケーションを管理者に昇格させて起動するWindows VistaからUAC(ユーザーアカウント制御、User Account Control)が導入されました。これによって、特別な場所へファイルやレジストリを書き込む等の操作を行なうアプリケーションを実行する時、管理者権限に昇格させないと正常に機能しない恐れがあります。ここでは、管理者権限に昇格させてアプリケーションを起動する方法と、作成したアプリケーションが起動される時に自動で管理者権限に昇格されるようにする方法を紹介します。 コンテキストメニューで「管理者として実行」を選択して実行するまずは基を確認する意味で、.NET Frameworkとは関係ありませんが、アプリケーションを管理者権限に昇格させて起動する方法を2つ説明します。分かっている方は読み飛ばしてください。 アプリケーションの実行ファイルやショートカッ

    UACが有効の時、アプリケーションを管理者に昇格させて起動する
  • MD5やSHA1などでハッシュ値を計算する

    MD5やSHA1などでハッシュ値を計算するここでは、認証やデジタル署名、ファイルが改ざんされていないことの確認などに使用される、MD5(Message Digest 5)やSHA1(Secure Hash Algorithm 1)などのハッシュ値を計算する方法を説明します。 注意:現在では、あるMD5ハッシュ値と同じハッシュ値のデータを作成することが比較的容易にできます。また、SHA1についても脆弱性が指摘されています。電子政府推奨暗号リストにはMD5は入っておらず、SHA1やRIPEMD-160も注釈として「256ビット以上のハッシュ関数を選択することが望ましい」としています。 文字列のMD5ハッシュ値を計算するMD5CryptoServiceProviderクラスを使用すれば、MD5ハッシュ値を計算することができます。 下の例では、文字列のMD5ハッシュ値を計算し、結果を16進数の数字

    MD5やSHA1などでハッシュ値を計算する
  • DataGridViewに列を手動で追加する

    注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 通常は、DataGridViewのDataSourceプロパティにデータソースを設定すると、DataGridViewに自動的に列が追加されます。しかし、指定した列だけを追加したい場合や、勝手に追加されるDataGridViewTextBoxColumnではなく、DataGridViewComboBoxColumnなどを使用したいという場合もあります。このような場合は、DataGridView.AutoGenerateColumnsプロパティをFalseにすることにより、列が自動的に作成されないようにして、手動で列を追加することができます。 手動で列を追加する手順を簡単にまとめると、次のようになります。 DataGridViewのAutoGenerateColumnsプロパティをFal

    DataGridViewに列を手動で追加する
  • ListViewの項目を並び替える

    ListViewの項目を並び替えるListViewの項目が自動的に並び替えられるようにするには、ListView.SortingプロパティをSortOrder.Ascending(昇順)またはSortOrder.Descending(降順)にします。ただしこの方法では、サブアイテムを比較しての並び替えができず、数字、時間の並び替えも正しく行われません。 これらの問題を解決するためには、ListView.ListViewItemSorterプロパティに、並べ方を定義したIComparerインターフェイスを実装したクラスのインスタンスを設定します。なお、IComparerによる並び替えについては、「コレクション(または配列)内の要素を方法を指定して並び替える(または検索する)」でも説明しています。 まずはごく簡単な例を示します。ここではListViewコントロール(ListView1)で列ヘッ

    ListViewの項目を並び替える
  • パフォーマンスカウンタから値を取得する

    パフォーマンスカウンタから値を取得するパフォーマンスカウンタから情報を取得する簡単な方法を紹介します。なおこの方法はWindows NT Server 4.0以上のNT系OSでのみ可能です。 パフォーマンスカウンタから情報を取得するには、PerformanceCounterクラスのRawValueプロパティ、NextValueメソッド、NextSampleメソッドのいずれかを使用します。RawValueプロパティはカウンタの生の値を表し、NextValueメソッドはカウンタの計算値を、NextSampleメソッドは生の値をCounterSample型オブジェクトで返します。(これらの詳しい違いについては、ヘルプ「パフォーマンス カウンタの値の取得」をご覧ください。) なおWindows Vista以降でUACが有効になっている時は、管理者に昇格しないと失敗するかもしれません。この対処法につ

    パフォーマンスカウンタから値を取得する