VB.NETで自作したメッセージボックスからの情報取得法

常に最前面、右下で表示されるメッセージボックスが必要だったため、
調べながらVB.netでメッセージボックスを自作し、INVOKE CODEで表示することに成功しました。

しかし、メッセージボックスからの情報取得が上手く出来ず、詰まっております。
表示されたボタンをクリックしてもウィンドウが閉じません。故に、情報取得が出来ずにおります。
どなたかVB.netに詳しい方、表示されたボタンから情報取得するコードの書き方について、
ご教示していただけませんか。

よろしくお願い致します。
Test_MessageBox.zip (4.3 KB)

こんにちは

Invoke Codeですと、イベントハンドラも記述できませんし、難しいのではないかと思います。
Visual Studioを使ってカスタムアクティビティを作るか、最前面の機能はないと思いますが、UiPath.Forms.Activities で代替する、あるいはPowerShellあたりを使えばできるかも
しれません(未検証)。

@Yoichi さん
ありがとうございます。
Visual StadioはC#の開発になると思います(未経験です)ので、VB.netで開発した添付ファイルのソースからは全くの書き換えになるのでしょうか。

UiPath.Form Activitesでの開発を試みましたが、最前面表示を妥協したとしても、右下からの位置指定が出来なかったので断念をしております(左上からの指定の場合、画面サイズ・解像度によって右下位置指定が困難なため。左側に表示される情報を隠したくなかったため。)

こんにちは

Visual StadioはC#の開発になると思います(未経験です)ので、VB.netで開発した添付ファイルのソースからは全くの書き換えになるのでしょうか。

VB.netでも可能です。ただしFormをGUIを使って作成できるので、そちらを使った方が楽と思います。

右下からの位置指定が出来なかったので断念をしております(左上からの指定の場合、画面サイズ・解像度によって右下位置指定が困難なため。左側に表示される情報を隠したくなかったため。)

rect = System.Windows.Forms.Screen.PrimaryScreen.Bounds

として(rectはSystem.Drawing.Rectanlgle)

rect.Right
rect.Bottom

で画面解像度≒画面右下の座標を取得することができるので、自身が作成したFormのサイズを引き算すれば良いのではないかと思います。

InvokeCodeでボタン押下の情報を取りたいですよね。
役立つかわからないですが、以下で実装したことがあります。

見直したらこんな風に書いてました。

		AddHandler btn_close.Click, _
			Sub(ByVal sender As Object, ByVal e As EventArgs)
				form.Close
				form.Dispose
			End Sub
1 Like

ありがとうございます。

あまり分かっておらず申し訳ございません、一度作成したFormのアクティビティをカスタムアクティビティとしてPublishし、それをパッケージソースにおいて使用するという意味でしょうか?

ありがとうございます。最前面表示さえでできれば、この方向性で行きたいです。
UiPathに用意されているメッセージボックスアクティビティでは”Top Most”機能がありますが、位置調節が出来ず、
Create Formには”Top Most”機能がないですが、位置調節が出来る、
なかなか悩ましい状態です。

ありがとうございます。
ウィンドウが閉じることについて確認できました。

しかしながら、今回のメッセージボックスはYes/Noのどちらかをクリックした情報を取得したいため、どちらのボタンを押してウィンドウを閉じたかについても知りたいと思っています。その点について、現在試行錯誤中ですが、何かヒントがありましたら、ご教示いただけますと助かります。

@shinji さん

頂いたソースを基にInvoke Codeを組み替えてみましたが、
「ByVal」という部分がエラー表示になってしまい、実行が出来ませんでした。

この部分について、何かKnowledgeがあれば、ご教示していただけますと幸いです。

この点は自己解決しました。Formを内部で宣言していなかったためのようです。
現在はボタン2種を表示し、閉じる設定まで持ってこれました。

残りはボタン2種のどちらを押したかを判別できればよいのですが、
そこが成功しておりません。

ボタン2種のどちらを押したかを判別できれば

確かに引数で値を返すと「ラムダ式でエラー」になりますね。
回避策として、アプリケーションリソースを経由する方法があります。正攻法ではないですが。。。

Main.zip (4.2 KB)

ありがとうございます!
このような方法があることを初めて知り、感動しました。

Formの終了に関しては、Wait Element Vanishを使用しておりましたが、
ボタン判別が出来ずに苦戦しておりました。
ありがとうございました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.