WPFxUPnP その9

次にデバイスクラスの作成を行います。 UPnPデバイスはIUPnPDeviceControlインターフェースを実装する必要があります。 using UPnPHostLib; /// <summary> /// UPnPライトデバイス /// </summary> [ComVisible(true)] public class DimmableLightDevice : IUPnPDeviceControl { …

WPFxUPnP その8

作成したSwitchPowerサービスのI/Fを実装します。上図のような感じに、イベントで通知し動くようにします。 なお、状態変数の変更イベントを通知する場合、IUPnPEventSourceインターフェースを実装し、値に変化があれば、ID指定で通知を行います。 using Sys…

WPFxUPnP その7

SwitchPowerサービスのインターフェースを作成します。 インターフェースを作成して、SwitchPowerサービス定義のメソッドをわかりやすくします。 using System.Runtime.InteropServices; /// <summary> /// SwitchPowerサービスI/F /// </summary> [ComVisible(true)] public in…

WPFxUPnP その5

下準備最後に、プレゼンテーションで表示するHTMLを作成します。UPnPのプレゼンテーションを利用した操作やイベント受信は後ほど。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="author" content="White Bear"> <meta name="copyright" content="since 2010"> </meta></meta></meta></head></html>

WPFxUPnP その4

SwitchPowerサービスディスクリプタを作成します。 XMLのコメントとか、UPnPと関係ないタグは入れないようにします。 プレゼンテーションでの解析に失敗した記憶が・・・・ <scpd xmlns="urn:schemas-upnp-org:service-1-0"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <serviceStateTable> <stateVariable sendEvents="no"> <name>…</name></statevariable></servicestatetable></scpd>

WPFxUPnP その6

いよいよ、作り込みに入っていきます! まずは、プロジェクトの設定を行います。 次のことを実行してください。 プロジェクトの参照設定にCOMの中から、「UPnP 1.0 Type Library(Device Host)」を加える プロジェクトにフォルダ(web)を作成して、作成したDim…

WPFxUPnP その3

次に、デバイスディスクリプタを作成します。 なお、このXMLファイルは、UTF-8シグネチャなしで保存します。 この形式でないと、UPnPデバイスを登録する際に、XMLファイル内容を読み取って、その内容をUPnPのフレームワークに渡すのですが、失敗します。 と…

WPFxUPnP その2

まずは、デバイスとしてのAP作成。 VisualStudioでWPFアプリケーションを選んで、土台を作成。 こんな感じに作成してみました。ボタンのON/OFFをライトのON/OFFに。 スライダーの値を、ライトの明るさにしてます。 後、ONの時は、円を黄色、OFFの時に灰色に…

WPFxUPnP その1

試しに、WPFxUPnPとして、UPnPライトを作ってみる C#でUPnPデバイスの作成ってなかなか資料がないので、参考になれば良いかな。 ちゃんと、すべてのレイヤーを利用するところまで行くよっ!<コントロール/イベント/プレゼンテーションUPnPの詳細は、本家へ。…

WPFのアプリで、Alt + F4を無効にする

WPF

WPFのアプリで、Alt + F4を無効にする方法。 Alt + F4押下時に発行されるWM_SYSKEYDOWNを拾って、 それを処理しちゃった♪と嘘をつく。 すると、Alt + F4押したのに、反応しないということに! 原理は簡単ですね。 using System.Windows.Interop; const int W…

ちわっす

技術系のメモを書いていこうかと思います。 結構サボり気味かと思うけど、 自分のメモ代わりになればと。