satocchiaブログ

satocchiaブログ

PR

×

キーワードサーチ

▼キーワード検索

プロフィール

satocchia

satocchia

カレンダー

お気に入りブログ

まだ登録されていません

コメント新着

tomoZo@ Re:Pale Moon日本語化トラブル(06/06) はじめまして。 28.16.0でまたもや提供さ…
satocchia @ Re[1]:Pale Moon日本語化トラブル(06/06) zui_9さんへ 本日、確認しました。ようや…
zui_9 @ Re:Pale Moon日本語化トラブル(06/06) 上記リンク「Githubのプロジェクト」の左…
わたなべ@ Re:powershellコンソール、見づらくありませんか?(08/26) 初めまして、この情報最高です! 背景を白…
y__@ Re:uwscでGUIフォーム(05/12) UWSC 仮掲示板から飛んできました。 HTAで…

フリーページ

2019.05.12
XML
カテゴリ: UWSC
HTAだとセキュリティに引っかかるとのことなので、powershell経由でwindows.formsのwebbrowserコントロールで書いてみました。これなら、HTMLの知識で書けます。


textblock formsource
<h1>お料理申し込み</h1>
メニュー
<select id="sel_menu" name="sel_menu">
  <option selected>和食</option>
  <option>中華</option>
  <option>洋食</option>
</select>

お一人さまご予算
<select id="sel_price" name="sel_price">
  <option selected>1500円未満</option>
  <option >1500円~4999円</option>
  <option >5000円以上</option>
<select/><br/>
人数
<input type="text" id="howmany" name="howmany" value="1" style="width:80px"/><br/>

コース<input type="radio" name="courese" value="lunch" checked>ランチ  <input type="radio" name="courese" value="dinner">ディナー<br/>
特記事項<input type="checkbox" name="special" value="nosmoking">禁煙 <input type="checkbox" name="special" value="child">お子様連れ
endtextblock

msgbox(res)

function    getFormResult(  HTML )
    result    =powershell( replace(pssrc,"dummy",HTML ) )
fend

textblock pssrc

add-type -assembly system.windows.forms
function    mkWFItem( $itemname, $parent, $atrb ){
    $item=iex "new-object system.windows.forms.$itemname"
    if( $parent ){
        $item.parent=$parent
    }
    if(( $atrb ) -and ( $atrb.gettype().name -eq "Hashtable" )){
        $atrb.keys|%{
            if ( $_ -like "add_*" ){
                iex "`$item.$_( `$atrb.`$_ )"
            } else {
                $item.$_=$atrb.$_
            }
        }
    }
    return $item
}
$base=mkWFItem form -a @{
    text="UwscFormDialog"
}
$br=mkWFItem webbrowser -p $base @{
    anchor=[System.Windows.Forms.AnchorStyles]"top" -bor [System.Windows.Forms.AnchorStyles]"right" `
            -bor [System.Windows.Forms.AnchorStyles]"left" -bor [System.Windows.Forms.AnchorStyles]"bottom"
    width=$base.clientsize.width;
    height=$base.clientsize.height - 50;

}
$btn=mkWFItem button -p $base -a @{
    text="ok";
    top=$base.clientsize.height - 30
    left=$base.clientsize.width - 120
    anchor=[System.Windows.Forms.AnchorStyles]"bottom" -bor [System.Windows.Forms.AnchorStyles]"right";
    add_click={
        $br.document.invokescript("setReusult",$null)
        $br.document.getElementById("resdiv").innerText|write-host
        $base.close()
    }
}
$base.add_shown({
   $br.navigate("about:blamk")
   while ($br.ReadyState -ne "complete"){
        [System.Windows.Forms.Application]::DoEvents()
   }
   $HTML=@"
<body><form name='uwscform' id='uwscform'>
dummy
</form>
<script>
function setReusult(){
    var uform=document.getElementById('uwscform')
    var    resdiv=document.getElementById('resdiv')
    if( !resdiv ){
        resdiv=document.createElement('div')
        resdiv.id='resdiv'
        resdiv.style='display:none'
        resdiv.appendChild(document.createTextNode("dmy"))
        document.body.appendChild(resdiv)
    }
    resdiv.innerHTML=''
    var selects=uform.getElementsByTagName( 'select' )
    for( var i=0,len=selects.length; i< len;i++ ){
        var    select=selects[i]
        resdiv.innerHTML+=select.name + '=' + select.options[select.selectedIndex].outerHTML+'<br/>'
    }
    var inputs=uform.getElementsByTagName( 'input' )
    for( var i=0,len=inputs.length; i< len;i++ ){
        var input=inputs[i]
        if ( !input.type ||( input.type.match(/^text$/i) )){
            resdiv.innerHTML+=input.name + '=' + input.value+'<br/>'
            continue;
        }
        if ( input.type.match(/^(radio)|(checkbox)$/i) && input.checked ){
            resdiv.innerHTML+=input.name + '=' + input.value+'<br/>'
            continue;
        }
    }
    var textareas=uform.getElementsByTagName( 'textarea' )
    for( var i=0,len=textareas.length; i< len;i++ ){
        var textarea=textareas[i]
        resdiv.innerHTML+=textarea.name + '=' + textarea.value+'<br/>'
    }
}
</script>
</body>
"@
   $br.document.write($HTML)
})
[void]$base.showdialog()
'@
$encoded=[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes( $PSSRC )) -replace "[\r\n]",''
powershell -sta -encodedcommand $encoded
endtextblock





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2019.05.12 14:46:39
コメント(1) | コメントを書く
[UWSC] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


Re:uwscでGUIフォーム(05/12)  
y__ さん


飛んできて気付いたのですが、これまでもUWSC関連の探し物で何度かお世話になっているブログでした。
動作が遅いとお書きでしたが、さまざまな手段を選択肢として持っているというのは強みだと思います。これしか使えない場合もあるかもしれませんので。
satochaさんが口火を切ってくださったおかげで、さまざまなレスがつきとても勉強になりました。これからも宜しくお願いいたします。 (2019.05.12 22:47:17)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: