HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0810
kn24拡張ダイアログについて11未解決


kn24

リンク

2014/8/10(Sun) 12:20:00|NO.63666

初めまして。kn24です。
ダイアログボックスの「はい」「いいえ」のボタンを2つから3つに増やす方法や、
ボタン名を変更する方法がわからないので誰かアドバイスなどをください。



この記事に返信する


GOMEKIT!

リンク

2014/8/10(Sun) 14:54:34|NO.63671

>ダイアログボックスの「はい」「いいえ」のボタンを2つから3つに増やす方法
http://hspnext.com/hspkura/hspkura06.htm#contents06を参照
>ボタン名を変更する方法がわからないので誰かアドバイスなどをください。
Windowsの機能を使っているのでボタン表記の変更は無理



MDN26

リンク

2014/8/10(Sun) 16:16:18|NO.63672

自分で小さいスクリーン作ってonkey命令とか使って消せないようにすればいいと思う。(初心者の俺が
言えることじゃないが)



kn24

リンク

2014/8/10(Sun) 18:45:43|NO.63686

GOMEKIT!さん、ありがとうございます。
>ダイアログボックスの「はい」「いいえ」のボタンを2つから3つに増やす方法
http://hspnext.com/hspkura/hspkura06.htm#contents06を参照
のコードを実行してみたのですが、制限時間なのか、数秒後に消えてしまい役に立ちません。
どのようにすればよいのか教えてもらえると幸いです。



掘木

リンク

2014/8/10(Sun) 19:09:59|NO.63687

本来はそのウェブページの管理者に聞くのが一番ですよ?
パッと見で末恐ろしいコードが書かれてますが・・・。

呼ばれているのはWScript.ShellのPopupメソッドですので、それに関する情報を調べるとこんなのがでるはず。
http://msdn.microsoft.com/ja-jp/library/cc364428.aspx
マイクロソフトのページですね。

この解説の項を見ると、特定の値を送ってやれば、
メッセージ ボックスはユーザーがウィンドウを閉じるまでずっと表示されるように書いてあります。

WScript.ShellのPopupメソッドはダイアログがでてる時点で成功しているはずです。
送る値は思い描いている動作に見合ったものになっていますか?



GOMEKIT!

リンク

2014/8/10(Sun) 19:41:45|NO.63689

>コードを実行してみたのですが、制限時間なのか、数秒後に消えてしまい役に立ちません。
http://chokuto.ifdef.jp/advanced/msgbox.htmlのコードでも出来る。
因みにこのコードは数秒後には消えない。



kn24

リンク

2014/8/10(Sun) 22:12:41|NO.63695

掘木さん、ありがとうございます。
さっそくやってみたのですが、エラーが発生してしまい、使えません。
どのようにしたらよいのか教えてもらえると幸いです。



掘木

リンク

2014/8/10(Sun) 23:15:30|NO.63697

・・・一体どうやったらエラーが出でるんだろう。

>>制限時間なのか、数秒後に消えてしまい役に立ちません。
NO.63686にて参照したコードの部分で実際にダイアログを出す部分である箇所にて

ret = WshShell("Popup",p1,p2,p3,p4)
p2の部分の値はいくらですか?
ここに指定する値は、タイムアウトまでの時間(秒)です。0を入れた場合無制限になると書いてある。
サンプルのソースではnStyle、つまり2になっています。だから2秒後に消える。

・・・一体何を説明したらいいのだ。



kn24

リンク

2014/8/11(Mon) 00:41:59|NO.63699

堀木さん、すみません見落としていました。
ダイアログボックスの「はい」「いいえ」のボタンを2つから3つに増やす方法はわかりましたが、
何度もすみませんがボタン名を変更する方法ってどうやるのでしょうか?
また、ボタンを4つに増やす方法ありますか?

無茶言ってすみません。



掘木

リンク

2014/8/11(Mon) 01:52:30|NO.63700

>ダイアログボックスの「はい」「いいえ」のボタンを2つから3つに増やす方法はわかりましたが、
>何度もすみませんがボタン名を変更する方法ってどうやるのでしょうか?
>また、ボタンを4つに増やす方法ありますか?
それは無茶です。少なくともWScript.ShellのPopupメソッドを使う限りかなり厳しいかと。
(hspで出せるdialogも実体はコイツだろうし・・・。)
なお、NO.63689のGOMEKIT!さんの方法も、呼び方が異なるだけで元は同じだと思われます。

結局のところ、MDN26さんの回答そのまま、ダイアログボックスもどきを自作した方が早いです。
(kn24が浮かべる「ダイアログボックス」ってどんななんだろう。4択?横に長いってこと・・・?)



MDN26

リンク

2014/8/11(Mon) 20:01:15|NO.63717

さっき書いた奴ミスりました。すみません。 「onkey命令とか使って〜」は「onexit命令とか使って〜」でした。



cats

リンク

2014/8/11(Mon) 22:27:41|NO.63728

ボタンを4つにする方法は聞いたことがありません。
モーダルダイアログ(?)だったかを設置するのが良いでしょう。
ボタンの文字列変更については無理やりできました。

// 注意:システム言語が日本語の環境でのみ動作します。 #uselib "user32.dll" #cfunc GetWindowThreadProcessId "GetWindowThreadProcessId" int, int #func FindWindowEx "FindWindowExA" sptr, sptr, sptr, sptr #func SendMessage "SendMessageA" int, int, int, int #func SetTimer "SetTimer" int, int, int, int #func KillTimer "KillTimer" int, int #define WM_TIMER $00000113 #define WM_SETTEXT $0000000C BTN_YES = "Hi." BTN_NO = "Bye." oncmd gosub *ON_TIMER, WM_TIMER SetTimer hwnd, 1, 1, 0 dialog "文字列を変更する。", 2, "HSP" dialog "元の状態に戻る。", 2, "HSP" SetTimer hwnd, 1, 1, 0 dialog "もう一回変更するにはSetTimerを。", 3, "HSP" stop /* 仕組み まずクラス名やプロセスIDなどから自分の持つダイアログを調べます。 そして発見次第変更を適応します。 ボタンを調べる際に、そのボタンのタイトルを使用しているので日本語 環境でのみ使用可能となります。 */ *ON_TIMER ret1_ = GetWindowThreadProcessId( hwnd, 0 ) hwnd_ = 0 repeat FindWindowEx 0, hwnd_, "#32770", 0 hwnd_ = stat if hwnd_ = 0 { break } if GetWindowThreadProcessId( hwnd_, 0) = ret1_ { ; はい について変更 FindWindowEx hwnd_, 0, "Button", "はい(&Y)" SendMessage stat, WM_SETTEXT, strlen(BTN_YES), varptr(BTN_YES) ; いいえ について変更 FindWindowEx hwnd_, 0, "Button", "いいえ(&N)" SendMessage stat, WM_SETTEXT, strlen(BTN_NO), varptr(BTN_NO) ; 今回のみ変更させたい KillTimer hwnd, 1 break } loop return
もっと簡単で確実な方法があるんだろうなあ。



ONION software Copyright 1997-2021(c) All rights reserved.