日記帳...か?を継承し、より柔軟でパワフルなBlogに変身しました。RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。Liveのソフトウエアでもっとも使われているでしょう。Messengerを導入しています。IDは持ってますが、Hotmailは使ってませんよ。新しくメールアドレスを作る必要がないので、わかってもらいやすいのでおすすめ。Messengerのおもしろい機能というと、表示メッセージの機能。◆3rRY3LJ8tc」としている。当然なんだけど、これに加えて、「キーボード故障中」ということを知らせたい。そんなとき、この表示メッセージ欄に書くといいと。表示メッセージはメイン画面で簡単に変更することができるので便利。//キーボード故障中」とかする人が多いですね。この表示メッセージに対応してないクライアントもあるからですね。気軽に使えるというのがこのいいところです。大切な事は書かない方がいいです。ここを音楽の再生に合わせて変えることができる。Playerを筆頭に多くのソフトウエアが対応してる。ユーザーによる対応も多い。Playingなどのプラグインで対応することができる。仕組みだがどうも知られているらしい。FrameworkからもDllImportすれば使えるようだ。Messenger:あたりを参考にやってみた。ところで調べてみたのだが、この送信モードは三種類あると。Musicは音楽、Gamesはゲーム、Officeはよくわからない。わからないのでOfficeを専ら使ってみるけど、まぁGamesで、「SimCity4」とか表示するのもいいかもしれない。ライブラリを作ってみた。Frameworkから簡単に取り扱うことのできるクラスですね。Messengerに状態を送信するクラスです。<summary>コンストラクタです。Messengerのハンドルを確保します。<summary>送信モードの列挙型です。<summary>音楽モードです。<summary>ゲームモードです。<summary>Officeモードです。<summary>状態を送信します。<summary>状態を解除します。<summary>デストラクタです。}}まぁ具体的な使用例はあまり書かなくてもOKだろう。livehackクラスのコンストラクタでmodeを指定して、インスタンスを作って、それで文字列をsendすればいいと。プログラムを終了する前には必ずremoveするようにしてほしい。一応忘れても大丈夫なように~livehackというデストラクタを用意してある。デストラクタはいつ呼びされるかよくわからない。念のために用意しておいただけです。IDisposableを実装しておいてusing構文を使いましょうとまでは言わないけど、忘れないようにね。そもそも複雑な操作じゃないけど、これならかなり扱いいいですね。Messengerを操作出来る。実際の動作だが、あらかじめ、user32.dllより、FindWindow、SendMessageの2つの関数を読み込んでいる。いうことができるのは.NETの強みではありますよね。それでコンストラクタでFindWindowを用いて、送信先を探す。いい加減だがこれでOK。見つからなかったらNullReferenceExceptionがスローされる。なんでやねんと言われそうだが。実際の送信だが、送信する文字列はこんな具合で書く。Application\0Mode\01\0Format\0Title\0Artist\0Albumここで下線を引いたものは自分で当てはめて欲しいという意味。\0はU+005CとU+0031の二文字のことで、NULL文字ではないので注意!1つ目にアプリケーション名。今回は全部livehackです。3つ目はわかりにくいが、1です。送信するときは1で、消去するときは0です。消去の時は以後の項目は何も書かなくてOKです。\0は残しておかないとなんかうまくいきません。4つ目はフォーマット。実は今回全部ここに押し込めてあります。{1}を指定するのが多い。5つ目はタイトル、6つ目はアーティスト名、7つ目はアルバム名。それぞれFormatの{0},{1},{2}に展開される。{0},{1},{2}を使わないにしても\0は消さずに残しておく。ないとうまくいかない。実は音楽モードで送信もできるけどあまりおすすめしない。{0},{1}を使ったものを作って欲しい。文字列などを納めるdatastruct構造体だが、結構わかりにくい構造ですね。ここで文字列だが、UTF-16の配列としてアンマネージドな領域に送られた。その加減でかならず破棄しないといけない。構造体なのでデストラクタを使うわけにもいかない。それでIDisposableを実装してみたが、SendMessageで送信するとき、refキーワード付きなのでusing構文が使えない。使うところはlivehackクラス内2箇所だけなので、その部分ではtry~finally構文で書いてあげた。構造体をrefで渡すというのはC#では流行らんが、Cではよく使われた技です。構造体の分のメモリをmallocで確保して、ポインタばっかり使うと。C++・Java・C#で言うクラスみたいなもんです。流行らんわなぁ...それでSendMessageで送信すれば反映されると。こんな仕組みでして、一から作ってもすぐできます。わからないCの世界をC#で見るのは非常にわかりにくい。いう風にクラスを作って、それを専ら使うのが便利だとおもいます。(3.37KB)まぁこれを展開して、適当なところに置いて、参照設定にファイルの参照で追加すれば使えます。Documentationも読めると思う。参考になればと思って、適当なサンプルを付けています。IDEを使わずに書いたからめんどくさかった。Studioコマンドプロンプトなどを用いて次のようにする。/r:livehack.dllまぁこんな具合です。DLLも簡単に読み込めていいですね。アーカイブを参照してください。Lab(07/03)バスの経路を切ったり貼ったり周旋屋のをとっつぁんの気ままな日記。Bad↓(07/23)安いのがウリの茨城空港つくば日記(03/07)プロフィールHidemaro(4303)検索キーワードこの検索は2008年5月18日以前の記事は検索できません。アーカイブを参照してください。コピーライトなどこのページではBlognPlusを使用しています有用なスクリプトの提供ありがとうございます。