布団が俺を呼んでいる

丘山大一のぶろぐ

別プロセスの画面キャプチャをしたい

言語はC#。実態(実体)はWinAPI。

別プロセスの画面キャプチャを取得し、画像として保存したい。

今回の対象プロセスはskype(exe名はlync)です。
こんな感じで書きました。

        [System.Runtime.InteropServices.DllImport("User32.dll")]
        private extern static bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);

        [System.Runtime.InteropServices.DllImport("User32.dll")]
        private static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

        private const string FORMAT_TIME = "yyyyMMddhhmmss";

        private void SavePicture()
        {
                    //Skypeのハンドルの取得
                    var pLst = System.Diagnostics.Process.GetProcesses().Where(p => p.ProcessName == "lync").ToArray();
                    var handle = pLst.First().MainWindowHandle;
                    RECT rec = new RECT();
                    var size = GetClientRect(handle, out rec);
                    //画像処理
                    Bitmap img = new Bitmap(rec.Right - rec.Left, rec.Bottom);
                    Graphics memg = Graphics.FromImage(img);
                    IntPtr dc = memg.GetHdc();
                    PrintWindow(handle, dc, 0);
                    memg.ReleaseHdc(dc);
                    memg.Dispose();

                    DateTime dt = DateTime.Now;
                    img.Save($@".\DATA\{dt.ToString(FORMAT_TIME)}.png");
        }

上記の問題点

プロセス名で単純に取得しているため、skype上で別ウィンドウ(例えばIM)を開いたりすると、メインウィンドウではなくそちらがキャプチャされてしまいます。
自分の用途としては許容範囲なのでOKとしました。
※上記処理では、例外処理を省いています。


プログラミングWindows 第6版 上 (Microsoft Press)

新品価格
¥7,560から
(2016/4/7 18:54時点)

コメントを書く

布団が俺を呼んでいる | Windows Phone (Windows Mobile) と DMM Mobile の話

布団が俺を呼んでいる

丘山大一のぶろぐ

Windows Phone (Windows Mobile) と DMM Mobile の話

柔銀行からDMM Mobile へ MNPしました。
対象機種はもちろんNuans Neo。Androidからの乗り換えとなります。
レッツチャレンジ。

MNPの流れ

といっても、DMM Mobile の申し込みの流れはHPに詳しく記載されていますし、格安SIMに詳しい方々が色々と情報を提供してくださっています。
ので、ここでは自分がはまったところ・やって手間がかかったことだけをを記載していきます。

柔銀行へ予約番号請求

マイページからうんたらかんたら、とか色々ありましたが、ぶっちゃけ暗証番号を忘れていたので、直接電話して予約番号を受け取りました。
なかなか繋がらず結構待ちましたが、繋がってしまえば親切に応対してくれました。
予約番号は口頭での控えと、メールで送ってもらいダブルチェック。
……メールが迷惑メール扱いされていたのは何か意味があったんでしょうか……

②dmmでの申し込み時に住所を入力ミスする。

ミスりました。orz

③simが届いてても繋がらない?

夜にsimが届いて、何も考えずに差し替え。
あれこれやっても繋がらないなー、と思っていましたが。
DMMのHPで電話番号切り替えの申し込みをやっていませんでした……。
※マイページから可能。
申し込みさえやれば、不通時間は2~4時間くらい? のようです。
※お昼を挟んで申し込んでしまったので、時間がかかったものと思われます。

④sim差し替え後の動作

さしたsimは、Windows Mobile側で勝手に認識・設定してくれます。
が。
このとき、既定のAPNに設定がされるのですが、そのままではネットワークに繋がりません。
設定 - 携帯ネットワークとsim - sim設定 から、「携帯ネットワーク接続プロファイル」を
「DMM mobile」 → 「DMM Mobile(after 2015/6/16)」にすると繋がりました。


simを変えてみて

心配していた音声通話ですが、問題なく使えました。
問題のはWindows Mobile 側の電話の微妙な使いにくさの方ですねw
まあこの辺りは慣れの問題ですので、徐々になじむでしょう。
ネットワークについてはもうしばらく使ってみないとなんともいえません。
なにか気が付く点があれば、またココに記載します。


DMMマネーカード 2,000円

新品価格
¥1,935から
(2016/3/31 21:02時点)

コメントを書く