1

(コンソール アプリケーションのように) GUI ウィンドウを表示せずに C# フォーム アプリケーションを実行する方法はありますか。webkit.net コントロールにロードされた Web ページのスクリーンショットを撮ろうとしています。

すべて正常に動作し、スクリーンショットを取得できますが、ウィンドウを表示せずにアプリケーションを実行する方法があれば、それをスクリプトに含めて Web ページのキャプチャを自動化する方がはるかにクリーンです。

私は試しました: form. hide() メソッドですが、何も非表示にしない方法もあります。

4

4 に答える 4

6

アプリケーション内で、新しい WinForms アプリケーションを作成するときに、Form1.cs とデザイナー ファイルを削除します。

次に、Program.cs のメイン メソッド内に次のコードを記述します。

  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());

これらの行を削除し、代わりに必要なものを入れてください。内部に何らかのループを追加してプログラムを実行し続けたい場合は、 Main メソッドが決して返らないようにしてください。

NotifyIconプログラムがタスク バーの通知領域内に通知アイコンを表示するように を作成することも検討できます。このようにして、通知アイコンにメニューを追加して、ユーザーが何らかの方法でアプリケーションを操作したり閉じたりできるようにすることができます。

于 2012-02-23T12:59:21.477 に答える
2

私は webkit.net API に精通していませんが、Windows フォーム コントロールを提供するとおっしゃいました。コントロールをビットマップに描画するSystem.Windows.Forms.Control.DrawToBitmapがあります。また、コントロールをフォームに配置する必要はありません。

Øyvind Knobloch-Bråthen のアプローチを使用すると、サンプルMainメソッドは次のようになります。

static void Main()
{
    // Leave these lines here!
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // change this in order to use the webkit control
    Control ctrl = new Button { Width = 100, Height = 23, Text = "abc" };

    using (Bitmap bitmap = new Bitmap(ctrl.Width, ctrl.Height, PixelFormat.Format32bppRgb))
    {
        ctrl.DrawToBitmap(bitmap, new Rectangle(0, 0, ctrl.Width, ctrl.Height));
        bitmap.Save("test.png");
    }
}

ボタンを使用したことに注意してください。webkit.net コントロールをペイントするように変更する必要があります。

于 2012-02-23T13:31:44.253 に答える
1

ここでやりたいことはAPIでサポートされていないかもしれないと思います。私の提案は、WinFormsコントロールを必要とせずにスクリーンショットを作成する方法をWebKitライブラリで検索することです。

この方法でソリューションにたどり着きたい場合はApplication.Run(new Form1());、「Program.cs」で次のように置き換えてみてください。

using (Form1 form = new Form1())
{
  form1.webKit1.DoScreenshot() // Just guessing on the API here
}

これが実際に機能することを保証することはできません。または、webkit.netの新しい将来のバージョンで機能し続けること

于 2012-02-23T13:14:56.070 に答える
0

ウィンドウが画面に表示されていない場合(開いていない、非表示になっている、画面外に開いている場合)、ユーザーに表示されないまま、独自のアプリケーションでサードパーティのコントロールから画面を取得できる可能性はほとんどありません。または他の何かのすぐ後ろでさえ)それからそれは単にレンダリングされません。

Webkitにオフスクリーンビットマップにレンダリングするための特定のメカニズムがある場合は、それを使用して、コントロールを表示せずに必要な画像を生成できる場合があります。または、@ Stephanが指摘しているように、DrawToBitmapが機能する場合があります。それを超えて、隠されたデスクトップや他のハッカーでアプリケーションを実行するという複雑な領域に入る可能性があります。

于 2012-05-15T21:58:00.767 に答える