4

Windowsフォームを使用するf#スクリプトがあり、コンソールウィンドウ(fsi.exe)を表示せずに実行したいと考えています。それは可能ですか、そしてどのように?以下はスクリプトの例です。コンソールウィンドウのスクリーンショット

#r "mscorlib.dll"
#r "System.dll"

open System.IO
open System.Windows.Forms

let DoUsefulThing() = ()

let form = new Form()
let button = new Button(Text = "Do useful thing")
button.Click.AddHandler(fun _ _ -> DoUsefulThing())

form.Controls.Add(button)
form.ShowDialog()
4

3 に答える 3

10

1つのオプションとして、コンソールウィンドウをPInvokeして非表示にすることができます

#r "mscorlib.dll"
#r "System.dll"

open System.IO
open System.Windows.Forms

module FSI =
    [<System.Runtime.InteropServices.DllImport("user32.dll")>]
    extern bool ShowWindow(nativeint hWnd, int flags)
    let HideConsole() = 
        let proc = System.Diagnostics.Process.GetCurrentProcess()
        ShowWindow(proc.MainWindowHandle, 0)

FSI.HideConsole()

let DoUsefulThing() = ()


let form = new Form()
let button = new Button(Text = "Do useful thing")
button.Click.AddHandler(fun _ _ -> DoUsefulThing())

form.Controls.Add(button)
form.ShowDialog()
于 2012-04-11T07:10:19.097 に答える
5

この種のタスクを使用して、コンソール ウィンドウを表示しないようfscにコンパイルするのは、本当の答えではありません。.exe

fsiあなたがやろうとしていることのために設計されているとは思わない

于 2012-04-11T08:16:09.270 に答える