ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

リッチクライアント画面のスクリーンショット取得方法

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012-4-9 16:41
NAS_Sogabe  新米   投稿数: 18
リッチクライアント画面のスクリーンショットを取得する方法を検討しています。

案としては、.net連携で、クリップボードにアクティブな画面のスクリーンショットを保持して、UniPaaS上でクリップボードの値を取得する・・・
といった感じで考えていますが、なかなかうまくいきません。

どなたか実装経験のある方はいらっしゃいますか?



投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012-4-10 10:23
null  長老   投稿数: 191
少し前の仕事で似たような機能を F10 に割り当てる的な話があって
開いた時間で試しに作ったことはあります。
(結局、その機能は使わないことになったのでお蔵入りですが)

言われている通り、.Net 連携を使用して、
PrintScreen キーを押す動作をエミュレーションし、
クリップボードに貼り付けています。

SendKeys.SendWait("%{PRTSC}");

それを 画像ファイルに変換後、クライアントの
uniRIACache フォルダ辺りに保存して、
uniPaaS 側で表示したり、サーバーへファイル転送したりしています。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012-4-10 10:31
NAS_Sogabe  新米   投稿数: 18
返信ありがとうございます。

まさに同じことを試していました。
クリップボードに保存されているところまでは確認ができましたので、MAGIC上でClipRead()関数でBLOB型に落とせないかと検証していました。

ファイル化してから扱うことで可能なんですね。

最終的には、スクリーンショットをReportsMagicでプレビュー化(印刷)を可能とするように考えています。
取得したスクリーンショットをサーバー側に転送する必要があるので、ファイル化で問題ないように思います。
トラフィックが課題ではありますが・・・
何にせよ、実現できそうです。

ありがとうございました。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-4-10 11:43
null  長老   投稿数: 191
そうそう。書き漏れていました。
ClipRead() はクライアント側で実行してくれるんですが、
内容がCF_UNICODETEXT形式で返るので、
クリップボードからファイルへ変換する処理も
.Net 連携でやるしかない感じでした。

以下、割と適当ですが・・・

public static void PrintScreen(System.String strImage)
{
SendKeys.SendWait("%{PRTSC}");

// クリップボードに格納された画像の取得
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Bitmap))
{
Bitmap bmp = (Bitmap)data.GetData(DataFormats.Bitmap);

// 取得した画像の保存
//bmp.Save(System.Environment.GetEnvironmentVariable("TEMP") + "\\uniRIACache\\printscreen.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Save(strImage, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}

その後、ClientFileToServer() とかでサーバー側に転送って感じで。
投票数:1 平均点:10.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約