Thread Rating:
  • 456 Vote(s) - 2.92 Average
  • 1
  • 2
  • 3
  • 4
  • 5
スクリーンショットを取得したい
05-31-2013, 01:01 PM,
#2
RE: スクリーンショットを取得したい
Curlアプリのエラー状況のスクリーンショットに使えるか怪しい感もありますが
試しにCurlで保存するコードを書いてみました。

Code:
|| CurlのグラフィックをPNG形式のファイルに保存するプロシージャ
{define-proc {save-root-graphic g:Graphic}:void
    || GraphicからPixmapを生成
    def pm = {Graphic-to-Pixmap g}

    || ImageDataを生成してPixmapを格納
    let img:ImageData = {ImageData}
    {img.pixmaps.append pm}

    || ファイル保存先のダイアログを表示
    {let file-url:#Url =
        {choose-file
            style = FileDialogStyle.save-as,
            title="Save screen shot",
            filters={{Array-of FileDialogFilter}
                        {FileDialogFilter
                            "PNG",
                            {new
                                {Array-of FileDialogTypeFilter},
                                {FileDialogTypeFilter "png"}
                            }
                        }
                    }
        }
    }

    || ImageDataをPNG形式で指定ファイルパスへ保存  
    {if-non-null file-url then
        {img.save-to-url file-url, "image/png"}
        {popup-message "保存しました"}
    }
}

|| スクリーンショットを取る領域の名前定義
{def main-box-name = "main-box"}

|| 保存ボタン押下イベント
{def on-save-button-event:EventHandler =
    {on Action at b:CommandButton do
        || ボタンから親をたどってスクリーンショットを取る領域のグラフィックを取得
        let grp:Graphic = b
        {while grp.parent != null do
            set grp = grp.parent
            {if grp.name == main-box-name then
                {break}
            }
        }
        || グラフィックを保存
        {save-root-graphic grp}
    }
}

|| 画面表示
{value
    {VBox name = main-box-name,
        halign="center",
        margin=2mm,
        {bold このアプリのスクリーンショットを保存},
        {Fill height = 2mm},
        {CommandButton
            label="スクリーンショット保存",
            on-save-button-event
        }
    }
}

画面がリフレッシュされると直ってしまうエラーの場合は上記の方法だと駄目かもしれないので、
その場合はスクリーンショットを取るActiveXコンポーネントを使った方がよいかもしれないですね。

Windwos標準でもっているActiveX だと、WScript.Shell が使えそうなのですが、これで
OSにALT + PrintScreenキーイベントを送ればクリップボードにスクリーンショットをとれるかとも
思ったのですが、情報抜き取りの悪用を避けるためかPrintScreenキー送信は不可でした・・・

他の方法も探してみます


Messages In This Thread
RE: スクリーンショットを取得したい - by dyoshida - 05-31-2013, 01:01 PM
Forum Jump:


Users browsing this thread:
2 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('906')