P/Invoke で Windows API を呼び出す際、引数に構造体を渡すには、割と色々な方法があります。 最近ちょっと混乱したので、改めてまとめてみました。 これまで知らなかった便利な方法も紹介しています。 新機能でも何でもありませんが、よく P/Invoke を使われる方にはご一読頂いて損はない内容だと思います。 ちなみに、本記事では、C# で言う struct と class を総称して「構造体」と呼ぶこととします。 struct と class の区別が必要な場合は「struct」と「class」または「値型」と「参照型」と呼び分けます。 本文中では「struct ≠ 構造体」ということにご留意ください。 なお、本記事の内容は、Windows API の呼び出しに限定した内容になっています。 COM の場合はまた事情が違うのですが、そちらは割愛させて頂きます。 struct と
Note このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。 Microsoft UI オートメーション イベント通知は、スクリーン リーダーやスクリーン拡大鏡などの支援技術にとっての重要な機能です。 これらの UI オートメーション クライアントは、UI で何かが発生したときに UI オートメーション プロバイダーが発生させるイベントを追跡し、その情報を使用してエンド ユーザーに通知します。 これらのイベントにサブスクライブしているクライアントがあるか、それともイベントをリッスンするクライアントが
プッシュ型のアプリケーションと言っていますが、このブログで何回か話している Comet を ASP.NET MVC で実装したというレベルの話です。 Comet に関しては Comet - Wikipedia を参照してください。要するに XHR で作成した HTTP コネクションに対して、情報の準備が完了するまでレスポンスを返さないようにすることで擬似的にプッシュを実現する方法です。 それでは今回作成したアプリケーションの画像を先にぺたり。 よくあるチャットタイプのアプリケーションですが、違うのは Comet を使っているので、誰かが投稿すると即座に接続しているクライアント全員に発言が届けられる点です。 上の画像にある IE9 のネットワークキャプチャ画面にある、いくつかのコネクションを見ると面白いかもしれません。 それでは Comet の実装ですが、基本的な考え方は非同期コントローラを
はじめに 本記事では、『CometとAjaxを利用したチャットサーバの実装』で紹介したCometを利用したWebチャットを、ASP.NET上で実現する方法を説明します。CometというWebアプリケーションのアーキテクチャや、クライアントとサーバーの動作については、前掲の記事を参照してください。 対象読者 本記事は中級以上のWebアプリケーション開発者を対象に、ASP.NETの非同期ハンドラのデザインを説明します。本記事の関心の対象は、ASP.NETの非同期ハンドラというデザインパターンのため、対象読者を必ずしもASP.NETを対象として開発されている方に限定していません。 ただし、開発環境としてWindows XPまたはWindows 2003 Serverと、Visual Studio 2005またはVisual Web Developer 2005 Express Editionの利
プログラム内部の動作をデバッグするなどの目的で活用される逆コンパイラ。.NET Reflectorの有料化で、オープンソースのILSpyが新登場。その利用方法を紹介。 連載目次 .NET開発では、プログラム内部の動作をデバッグするなどの目的で、逆コンパイラ(decompiler)が用いられることがよくある。逆コンパイラとは、.NETアセンブリ(=.EXEファイルや.DLLファイルなど)から、C#やVB(Visual Basic)などのソース・コードを生成できるツールのことである。 有名なツールに、.NET Reflectorがあり、これに機能を追加するアドインも豊富に提供されている(.NET Reflectorについては、「.NET Tools:.NET逆コンパイラとコードを難読化するDotfuscator」を参照してほしい)。.NET Reflector(標準版)は、長らく無償で提供され
更新 : 2007 年 11 月 C# と Java は、同じような方法でデータベース データにアクセスし、いずれもデータベース ドライバを使用して実際のデータベース操作を実行します。さらに、C# と Java はいずれもデータベース接続、データベース接続に対して実行する SQL クエリ、およびクエリの実行結果セットを必要とします。 ADO.NET の詳細については、以下のトピックを参照してください。 ADO.NET データへのアクセス (Visual Studio) サンプル コード (ADO.NET) .NET Framework データベース アクセス クラスの詳細については、次のトピックを参照してください。 System.Data.OracleClient System.Data.Odbc System.Data.OleDb DataSet (ADO.NET) DataSet の使
一般的な開発では滅多に使われることはありませんが、.NET Framework SDKにはILAsmと呼ばれる、中間言語を直接記述できるアセンブラが含まれています。本稿では、高水準言語を使わずに、ILAsmを使ったアセンブリ言語による .NET Frameworkアプリケーション開発を説明します。 はじめに 実践的な開発経験のある.NET Frameworkアプリケーションプログラマであれば、ILDASMを使ってプログラムを逆アセンブルしたコードを見たことがあるでしょう。.NET Frameworkアプリケーション開発は、Visual BasicやC#、C++/CLIなど、多くの言語を使って開発できますが、最終的に生成されるのは標準化されているCIL(Common Intermediate Language)と呼ばれる中間言語です。Microsoft Intermediate Langua
C#の実行環境はコンパイラを含んでいる † C#はライブラリの中にコンパイラを含んでいるので、 ライブラリを適切に呼び出すだけでC#のソースコードを 記述したテキストデータから .exe を作るようなことが できてしまいます。 このページでは、C#のコンパイラ機能を使って、 自作アプリケーション内にC#の実行系を組み込むことが 目的です。 つまり、アプリケーションの動作をカスタマイズするための マクロ言語としてC#をそのまま使おうという話。 C#スクリプトをメモリ上でコンパイルして実行する † 検索サイトで CompileAssemblyFromSource というキーワードを 入れると、使用例がいくつも出てきます。 Google:CompileAssemblyFromSource これらを参考にすると、スクリプトをコンパイルするための基本形は こんな感じになります。 LANG:C# us
Chart コントロール(Microsoft Chart Controls) の外観及び背景色の設定 (4) (1) グラフエリアの外観の設定(エンボスの境界線 フレーム枠 タイトル付きフレーム枠 等) (2) グラフエリアの背景色の設定 (3) プロットエリアの背景色の設定 (4) 外観及び背景関係の設定用のプロシージャ Chart コントロール(Microsoft Chart Controls) での凡例関係の設定 (8) (1) 凡例を非表示にする (2) 独自の凡例を表示 (3) 凡例の表示位置を設定 (4) 凡例のドッキング先を設定 (5) 凡例のテキストの表示スタイルを設定(複数行で表示/1行で表示 等) (6) 凡例の枠の線及び色を設定 (7) 凡例のバックカラーを設定 (8) 凡例の枠に影を付けて立体的に表示 Chart コントロール(Microsoft Chart
単体テストの次は、エンド・ユーザーへの納品時の受け入れテストも自動化したい? それを実現する手法を紹介する。 連載目次 受け入れテスト(=受け入れ検査)の自動化は、ユニット・テスト(=単体検査)の自動化より難易度が高い。 一般的にはこのようにいわれている。 なお受け入れテストとは、エンド・ユーザーが使うのと同じシチュエーションでアプリやシステムをテストすること、つまりシステムの検収のことである。ユニット・テストがメソッドなどの最小の実装単位でその内容をテストするのに対し、受け入れテストではユーザー操作単位でテストするという違いがある。特にアジャイル開発では、小さく機能を追加しながら頻繁にリリースするので、検収の回数も増えてしまい、エンド・ユーザーの負担になってしまうことがある。 このような課題に対処する1つの案として、受け入れテストの自動化の手法が考えられているわけだが、その手法を現実に実
UACが有効の時、アプリケーションを管理者に昇格させて起動するWindows VistaからUAC(ユーザーアカウント制御、User Account Control)が導入されました。これによって、特別な場所へファイルやレジストリを書き込む等の操作を行なうアプリケーションを実行する時、管理者権限に昇格させないと正常に機能しない恐れがあります。ここでは、管理者権限に昇格させてアプリケーションを起動する方法と、作成したアプリケーションが起動される時に自動で管理者権限に昇格されるようにする方法を紹介します。 コンテキストメニューで「管理者として実行」を選択して実行するまずは基本を確認する意味で、.NET Frameworkとは関係ありませんが、アプリケーションを管理者権限に昇格させて起動する方法を2つ説明します。分かっている方は読み飛ばしてください。 アプリケーションの実行ファイルやショートカッ
第4回 デッドロックの回避とスレッド間での同期制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(後編) ―:連載.NETマルチスレッド・プログラミング入門(1/3 ページ) 連載目次 前回では、排他制御を導入することにより、複数スレッドからの同時アクセスによるデータの不整合を発生させないためのプログラミングについて紹介した。しかし、排他制御を行った場合には、今度は「デッドロック」という問題が起こり得る。 本連載の最終回となる今回は、このデッドロックについて、そして前回の冒頭で少し触れた、複数のスレッド間で同期を取りながら処理を進める「同期制御」のためのプログラミングについて解説する。 マルチスレッドで最も注意が必要な「デッドロック」 排他制御を行ううえで最も気を付けなくてはならないことがデッドロックである。デッドロックとは、アプリケーション内部で排他制御などによる競合が起
基本的な注意事項 私的なメモなので、あまり信用しないでください。 実際の動きは自分で確認してください。 基本的に、VS(VB)は2003、.NET Frameworkは1.1、IEは6が対象となっています。 それ以外のバージョンの話題も含まれるかもしれませんが、まあ気にしないでください。 メモというより独り言になっている部分もありますが、今更編集しなおすのも辛いので軽くスルーしてください。 また、同じような内容が繰り返し記述されている可能性もありますが、まとめる気力がないのでスルーしてください。 こんなメモよりもよっぽど有益な情報源 工事中・・・ メモIndex 現在ナッシングです。 ■ エラー発生時のユーザーへのレポート方法 ASP.NET(正確にはWebアプリだけど)で、エラー発生時のユーザーへのレポート方法としてラベルにメッセージを表示させる方法があるが、 HTMLとして画面のどこか
MSDNライブラリにも明記されています。 TextBox.Text プロパティ テキスト ボックスが表示されるとき、このプロパティの内容は HTML エンコードされます。 たとえば、このプロパティを "<b>Test</b>" に設定した場合、太字の "Test" ではなく "<b>Test</b>" がブラウザーに表示されます。 Label.Text プロパティ Text プロパティには HTML を含めることができます。 そうである場合、HTML は未変更でブラウザーに渡されますが、ブラウザーでテキストではなくマークアップとして解釈されることがあります。 ブラウザーで HTML マークアップをプレーン テキストとして表示する場合は、クラス概要の例で示すように HtmlEncode メソッドを使用できます。 データバインド式を書くときなど、Label.TextプロパティはHttpUtil
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く