2011年6月29日

枠に囚われたくない、でも枠が表示されない

最近困ること、それはWindows7でのみ発生する現象について客から聞かれること

だっておいらのPCまだXPだもんヽ(`Д´)ノ
そして最近あったものはこんなご連絡

客「なんかさ~表示がなんだけど~」
貧「え~っと、どのように変なんでしょうか?」
客「うん、なんていうの?今までと違うの」
貧「はい、それでどこが違っているのでしょうか?」
客「いや~どこがって言われてもね~、古いパソコンもうないし」
(グダグダと10分ほどカチカチクリック音が鳴り響く)
貧「あの、では違和感を感じる部分だけでも教えていただけないでしょうか?」
客「あ~、この辺かな~(電話越し)」
貧「はい、どのような感じでしょうか」
客「感じって言われても。なんか違和感・・・」
貧「今からお伝えする通りにキーボード操作してください。その画面をメールに添付できるようにしますので」

と。PC分かっている人になら
キャプチャ撮ってメールで送って
5秒で済む話を15分ほど続けられ、
送られてきた現象を要約するとこんな感じ

現象
Windows7(Vista)でチェックボックスに点線(破線)の枠が表示されない

・・・20行ほどの無駄な前振りについてはここで謝ります。
m(_ _)m


さて、この現象ですが、
ざっと調べてみると、WindowsVista/7で発生する
Microsoft的に「仕様」な現象みたい
仕様ですか、なら仕方ないですね。チャンチャン♪

ま、こんな感じ↓
(7を使っている人が帰るのを待って検証した結果)

が、ただまあ、何とかしないといけないわけで
対処法をいろいろ試しました。
参考:VistaでComboBoxにフォーカスを移すためにSetFocusするとコンボの見た目が変わらない。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43887&forum=7

で、C#上で何とかするには以下のロジックをどこでもいいので実行すれば良いみたい

ロジック:
Windows7やVistaでチェックボックスやコンボボックスの枠線が初期表示されない現象をC#で対応する

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, bool pvParam, UInt32 fWinIni);

const uint SPI_SETKEYBOARDCUES = 0x100B;
const uint SPIF_UPDATEINIFILE = 0x0001;
const uint SPIF_SENDWININICHANGE = 0x0002;

int Result = SystemParametersInfo(SPI_SETKEYBOARDCUES, 0, true, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

一番手っ取り早いのは
public partial class Form1 : Form
{
の直後でしょうか

Administrator権限を持っていてUACの制御がちゃんと行えていれば
再起動してもそのまま枠線が表示されるみたいです

単純に
SystemParametersInfoをCALLして
SPI_SETKEYBOARDCUESの制御をお願いしているだけですが・・・

ちゃんと↓の用に枠線が見えるようになりました
(使いたい時に限って遅くまで仕事してるもんだからおいらは終電ギリまで以下略)

2011年6月14日

Androidで動画ストリーミング@前提

Android端末も随分普及して来たようです、
大画面のタブレットもどんどん発売されて物欲刺激されまくりですが
通帳の残高を見ると核兵器以上の抑止力を持っていたりなんかしたり(;-_-) =3

はい。それは置いといて、
せっかくインターネットに自由に繋がる機器があるのだから
自分の見たい動画を好きな場所で見たい。
なんていう思いはないでしょうか?
うん。あるっていう前提で話を進めさせてもらいやす(^_^)v

ノートパソコン持っていればどこでも簡単に見れますが
Androidを使ってパソコンに眠っている動画たちをストリーミングで再生してみましょう
これで深夜に会社でスクリプトを流している間、手持ち無沙汰になることもないです、( ̄▽ ̄)V


さて、そんな動画をどうやって見るのかという点です
ちょっと思いつくパターンを挙げてみましょうか

1.microSDHCにコピーして素直に本体単体で見る

2.YoutubeやDailymotion辺りにアップロードして見る

3.自宅のPCをメディアサーバにして、HTTP経由やVPN経由で見る

4.ストリーミング配信対応の機器を購入して、それに任せて見る

5.クラウド上に配信環境を整えて、そこ経由で見る


うん、こんな感じでしょうか?
一番簡単のは1であることは言うまでもないですが、
それじゃあわざわざブログ書くこともないので却下(*- -)ノヽ△

次に2ですが、テレビ番組とか大人な動画は120%の確率でNG
非公開の自分専用にすればマイナーな番組は大丈夫かもしれませんが
そんなきわどいの紹介する勇気ないので却下(*- -)ノヽ△

で、3ですが、BUFFALOのこんな機種を使えば比較的簡単には構築可能です
PPTPで自宅に繋いでメディアサーバ化したPC経由で再生とか
が、今年の日本は節電ブームのようなので、電気代を考えて却下(*- -)ノヽ△

さて、4です

↑の機種が人気のようですが、まず第一に私は貧乏プログラマです
そんなモノを買う予算など存在しないのです<( ̄^ ̄)>
それに、、、すぐ再生できちゃったらつまんないじゃんってわけで却下
手段のためなら目的は選ばない!がモットーですよъ( ゜ー^)♪
あ、リッチな方や設定が面倒くさい方はどうぞ、使ってみてください

消去法で5のクラウド上に保存して好きな場所で見れるようにしてみようと思います
もち、電波の届く範囲内限定であることは言うまでもないですが

クラウド上と言っても、基本的に無料のものしか紹介しませんので
時間のある方は次回以降のエントリを読み流してみてください

今、いろいろ実験していますので ̄ー ̄)ノ彡

※追記
その1、SugarSyncを使用した手順公開
その2、家庭内無線LANを使用した手順公開