UWSC4.6bのpowershell()関数

uwsc 4.6bがリリースされてたんよ
http://www.uwsc.info/download.html

doscmd()のpowershell版なpowershell()が追加されてました
powershell叩ける→.Net叩ける→フォームが簡単に作れる
という短絡的な思考はまぁどなたもする しない

というわけでやってみよう
やってみた

PowerShellForm.uws

exec("<#DBL>" + GET_UWSC_DIR + "uwsc.exe<#DBL> <#DBL>" + GET_CUR_DIR +  "CtrlwinShow.uws<#DBL> PowerShellフォーム")
//thread ShowWindow("PowerShellフォーム")
ret = powershell(ps1, false, false)
msgbox(ret)

textblock ps1
    [Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    #フォーム
    $form = New-Object Windows.Forms.Form
    $form.Text = "PowerShellフォーム"
    $form.FormBorderStyle = [Windows.Forms.FormBorderStyle]::FixedSingle
    $form.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen

    #エディットボックス
    $edit = New-Object Windows.Forms.TextBox
    $edit.MultiLine = $true
    $edit.Size = $form.ClientSize
    $form.Controls.Add($edit)
    #[Windows.Forms.Application]::Run($form)
    #$form.Show()
    $form.ShowDialog() | out-null
    $edit.Text
endtextblock

//procedure ShowWindow(WindowTitle)
//    ctrlwin(getid(WindowTitle, "", -1), show)
//fend

CtrlwinShow.uws

ctrlwin(getid(PARAM_STR[0], "", -1), show)

普通にフォームを表示しようとするとpowershell(ps1, false, true)にしとかないといけなくて
というのも第3引数がfalseだとおそらくフォームごと非表示になるっぽいのね
ただ第3引数がtrueだとPowerShell窓が出てきて邪魔な上に戻り値取れないので困るという

なのでpowershell(ps1, false, false)のあとフォームだけctrlwinでむりやり可視状態にしてやった
threadでやったらpowershell()実行するかしたかくらいでスレッド関数も止まってしまったので
別のuwsをexecしたよ

こいつを実行すると複数行エディットボックス付きのフォームが開いて
フォームを閉じたらエディットボックスへの入力値がそのまま戻り値になるという仕組み
ただ、結構な頻度でフォーム閉じてもuwscに制御戻らないことがある
まぁなんだ、フォーム閉じたらそのままフリーズしちゃうんだ 困ったもんだ

一応イベントハンドラも書けるようなのでまぁ頑張れば色々出来るんじゃなかろうか
ただ、UWSCでやる必要あるんかいなという疑念に囚われて辛い

広告

UWSC4.6bのpowershell()関数」への1件のフィードバック

  1. Google検索から来ました。
    スクリプトファイルが分かれるのはイマイチなので、いろいろ検討したところ、
    Powershell側をスレッドにすればOKなことが分かりました。
    当方の環境は、Win7 x64 UWSC v4.6c
    ご参考まで。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中