2021年11月28日日曜日
自動テストの練習8 (Autoit編①)
2021年11月21日日曜日
自動テストの練習7 (UWSC編⑥) Tips
やりたいこと
Print文
PRINT "成功" PRINT "失敗"
ログファイル
// logファイルに書き込む
PROCEDURE WriteLog(str)
// 日付作成
GETTIME()
dateTime = G_TIME_YY + "/" + G_TIME_MM + "/" + G_TIME_DD + "_" + G_TIME_HH + ":" + G_TIME_NN + ":" + G_TIME_SS
// ファイル書き込み
fid = FOPEN("LogFile.txt", F_READ or F_WRITE) // 追記
FPUT(fid , dateTime + "<#TAB>" + str)
FCLOSE(fid )
FEND
スクリーンショット
// スクリーンショット
PROCEDURE MySaveImg()
// 日付作成
GETTIME()
dateTime = "" + G_TIME_YY + G_TIME_MM + G_TIME_DD + "_" + G_TIME_HH + G_TIME_NN + G_TIME_SS + G_TIME_ZZ
filename = "IMG\" + dateTime
// フォルダ作成
Doscmd("mkdir " + "IMG")
// スクリーンショット
SaveImg(filename, "", "", "", "", "", "", 50)
FEND
スリープ
UWSCのヘルプ
コントロールの名称を取得
GID = GETID("ウィンドウタイトル") // ここにコントロールを取得したいウィンドウのタイトルを指定する
GetItemAll(GID)
PROCEDURE GetItemAll(GID)
PRINT "ボタン"
NUM = GETITEM(GID,ITM_BTN)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストボックス、コンボボックス"
NUM = GETITEM(GID,ITM_LIST)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "タブコントロール"
NUM = GETITEM(GID,ITM_TAB)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "メニュー"
NUM = GETITEM(GID,ITM_MENU)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツリービュー"
NUM = GETITEM(GID,ITM_TREEVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストビュー"
NUM = GETITEM(GID,ITM_LSTVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "エディットボックス"
NUM = GETITEM(GID,ITM_EDIT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "スタティックコントロール"
NUM = GETITEM(GID,ITM_STATIC)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ステータスバー"
NUM = GETITEM(GID,ITM_STATUSBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツールバー"
NUM = GETITEM(GID,ITM_TOOLBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのクリック可能なオブジェクト"
NUM = GETITEM(GID,ITM_ACCCLK)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのテキスト"
NUM = GETITEM(GID,ITM_ACCTXT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
FEND
まとめ
2021年11月7日日曜日
自動テストの練習6 (UWSC編⑤) とじる
やりたいこと
UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみるの4回目です。
5回目はとじる(×ボタン)操作を自動化してみます。
最初に設定したテストケースのTC7になります。
| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC7 | 終了 | ×ボタンをおす | 終了する |
ソース
ソースコードはこちらになります。
// TC7 終了
CloseApp()
// 終了
PROCEDURE CloseApp()
WaitWindowText("memotter", "What", 10)
id = GETID("memotter")
//①とじるボタンをクリック
closebtn = CLKITEM(id, "memotter を閉じる")
IF closebtn = TRUE
PRINT "OK とじるボタン押下成功"
ELSE
PRINT "NG とじるボタン押下失敗"
ENDIF
FEND
// ウィンドウの中のテキストが表示されるのを待つ
FUNCTION WaitWindowText(WindowTitle, text, timeOut)
RESULT = FALSE
// ウィンドウが表示されるのをtimeOutの時間まで待つ
FOR i = 0 TO timeOut
//ウィンドウのID取得
id = GETID(WindowTitle)
staticText = GETITEM(id, ITM_STATIC)
IF staticText <> 0
FOR j = 0 TO staticText -1
n = POS(text, ALL_ITEM_LIST[j])
IFB n >= 1
// PRINT text + "が見つかった"
BREAK 2
ELSE
// PRINT text + "が見つからない"
ENDIF
NEXT
ELSE
PRINT "static text なし"
ENDIF
// 1秒待機
SLEEP(1)
NEXT
FEND
----解説
CLKITEM()の第2引数に設定しているとじるボタンのコントロール名は、GetItem()という関数を使って調べました。
GID = GETID("電卓")
GetItemAll(GID)
PROCEDURE GetItemAll(GID)
PRINT "ボタン"
NUM = GETITEM(GID,ITM_BTN)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストボックス、コンボボックス"
NUM = GETITEM(GID,ITM_LIST)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "タブコントロール"
NUM = GETITEM(GID,ITM_TAB)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "メニュー"
NUM = GETITEM(GID,ITM_MENU)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツリービュー"
NUM = GETITEM(GID,ITM_TREEVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストビュー"
NUM = GETITEM(GID,ITM_LSTVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "エディットボックス"
NUM = GETITEM(GID,ITM_EDIT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "スタティックコントロール"
NUM = GETITEM(GID,ITM_STATIC)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ステータスバー"
NUM = GETITEM(GID,ITM_STATUSBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツールバー"
NUM = GETITEM(GID,ITM_TOOLBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのクリック可能なオブジェクト"
NUM = GETITEM(GID,ITM_ACCCLK)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのテキスト"
NUM = GETITEM(GID,ITM_ACCTXT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
FEND
結果
2021年10月31日日曜日
自動テストの練習5 (UWSC編④) 右クリック
やりたいこと
前回の続きになります。
UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみるの4回目です。
4回目は右クリックする操作を自動化してみます。
最初に設定したテストケースのTC5, TC6になります。
| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC5 | Aboutメニュー | 右クリック Aboutメニューを選択 | Aboutダイアログが表示される |
| TC6 | Settingsメニュー | 右クリック Settingsメニューを選択 | Settingsダイアログが表示される |
ソース
ソースコードはこちらになります。
右クリックするところだけのコードになります。
// TC5 About
CheckAbout()
// About
PROCEDURE CheckAbout()
WaitWindowText("memotter", "What", 10)
id = GETID("memotter")
//①右クリック
openbtn = CLKITEM(id, "Open", CLK_RIGHTCLK)
IF openbtn = TRUE
about = CLKITEM(id, "About")
If about = TRUE
PRINT "OK About成功"
PrintAccText(id)
retOkt = CLKITEM(id, "OK")
ELSE
PRINT "NG About失敗"
ENDIF
ELSE
PRINT "右クリック失敗"
ENDIF
FEND
// ②AccTextを全部出す
PROCEDURE PrintAccText(id)
NUM = GETITEM(id, ITM_ACCTXT)
FOR j = 0 TO (NUM-1)
PRINT ALL_ITEM_LIST[j]
NEXT
FEND
// ウィンドウの中のテキストが表示されるのを待つ
FUNCTION WaitWindowText(WindowTitle, text, timeOut)
RESULT = FALSE
// ウィンドウが表示されるのをtimeOutの時間まで待つ
FOR i = 0 TO timeOut
//ウィンドウのID取得
id = GETID(WindowTitle)
staticText = GETITEM(id, ITM_STATIC)
IF staticText <> 0
FOR j = 0 TO staticText -1
n = POS(text, ALL_ITEM_LIST[j])
IFB n >= 1
// PRINT text + "が見つかった"
BREAK 2
ELSE
// PRINT text + "が見つからない"
ENDIF
NEXT
ELSE
PRINT "static text なし"
ENDIF
// 1秒待機
SLEEP(1)
NEXT
FEND
---
解説
結果
自動テストの練習4 (UWSC編③) ボタン押す
やりたいこと
前回の続きになります。
UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみるの3回目です。
ボタンを押す
こちらのUpdateのボタンを押すというテストになります。

| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC3 | Updateボタン | 「あいうえお」を入力する updateボタンを押す | 「あいうえお」が入力される |
| TC4 | Openボタン | Openボタンおす | エディタが起動する |
ソース
ソースコードはこちらになります。
長くなるので、ボタンを押すところだけを切り出したコードになってます。
// TC3 Updateボタンテスト
CheckUpdateButton()
// UpdateButton
PROCEDURE CheckUpdateButton()
WaitWindowText("memotter", "What", 10)
id = GETID("memotter")
// 文字列入力
SENDSTR(id, "あいうえお_CheckUpdateButton", 1, True)
//①Updateボタン押す
ret = CLKITEM(id, "Update")
IF ret = TRUE
PRINT "OK Updateボタン押下成功"
ELSE
PRINT "NG Updateボタン押下失敗"
ENDIF
FEND
// ウィンドウの中のテキストが表示されるのを待つ
FUNCTION WaitWindowText(WindowTitle, text, timeOut)
RESULT = FALSE
// ウィンドウが表示されるのをtimeOutの時間まで待つ
FOR i = 0 TO timeOut
//ウィンドウのID取得
id = GETID(WindowTitle)
staticText = GETITEM(id, ITM_STATIC)
IF staticText <> 0
FOR j = 0 TO staticText -1
n = POS(text, ALL_ITEM_LIST[j])
IFB n >= 1
// PRINT text + "が見つかった"
BREAK 2
ELSE
// PRINT text + "が見つからない"
ENDIF
NEXT
ELSE
PRINT "static text なし"
ENDIF
// 1秒待機
SLEEP(1)
NEXT
FEND
----- 解説
2021年10月17日日曜日
自動テストの練習3 (UWSC編②) 文字入力
やりたいこと
前回の続きになります。
UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみたいというものになります。
UWSC編②では文字を入力するテストケースを実施しみました。
こちらの赤枠に文字列を入力するテストになります。
最初に考えたテストケースのTC2になります。
| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC2 | 文字の入力 | 「あいうえお」を入力する enterを押す | 「あいうえお」が入力される |
ソース
ソースコードはこちらになります。
前回の分に足してるので、ちょっと長いです。
------// TC1 起動チェック
CheckStart()
// TC2 文字の入力
InputString()
// 起動チェック
PROCEDURE CheckStart()
//起動
DOSCMD("C:\test\memotter - ショートカット.lnk")
//チェック
ret = GETID("memotter")
IF ret = TRUE
PRINT "起動OK"
ELSE
PRINT "起動NG"
EXITEXIT
ENDIF
FEND
// 文字列入力
PROCEDURE InputString()
WaitWindowText("memotter", "What", 10)
id = GETID("memotter")
// ⑥
SENDSTR(id, "あいうえお", 1, True)
//enterを送信
//sckey(id, vk_enter)
FEND
// ①ウィンドウの中のテキストが表示されるのを待つ
FUNCTION WaitWindowText(WindowTitle, text, timeOut)
RESULT = FALSE
// ウィンドウが表示されるのをtimeOutの時間まで待つ
FOR i = 0 TO timeOut
//②ウィンドウのID取得
id = GETID(WindowTitle)
// ③
staticText = GETITEM(id, ITM_STATIC)
IF staticText <> 0
FOR j = 0 TO staticText -1
n = POS(text, ALL_ITEM_LIST[j]) // ④
IFB n >= 1
PRINT text + "が見つかった"
BREAK 2 // ⑤
ELSE
PRINT text + "が見つからない"
ENDIF
NEXT
ELSE
PRINT "static text なし"
ENDIF
// 1秒待機
SLEEP(1)
NEXT
FEND
-------解説
①のコード
ウィンドウの中に検索したいテキストが表示されるのを待つ関数を作りました。
UWPアプリは起動時にスプラッシュ画面を表示するのですが、そのスプラッシュが消えて通常の状態になるのを待つ自作関数となります。
UWSCの標準関数GETID()だと、ウィンドウがあるかないかなので、スプラッシュの状態かどうかは判断できませんでした。
また、STATUS()という標準関数で、アクティブかどうかを判断できるのですが、こちらもスプラッシュでもアクティブと判断されるのでだめでした。
ということで、FOR文でループして、ウィンドウの中に、あるテキスト文字があるかどうかを判断する関数を作りました。
②のコード
GETIDをFOR文の中で実施しているのは、スプラッシュとスプラッシュがなくなったウィンドウでIDが違うので、FOR文の中でGETIDしています。
③のコード
GETITEM()はコントロールの内容を取得する標準関数です。
こちらを用いてStaticTextを取得してます。
StaticTextは戻り値として、取得できた文字列の数が入っており、ALL_ITEM_LIST[]に取得できたStaticTextが配列として入ってます。
④のコード
標準関数POS()で文字列が入っているかどうかを判定しています。
この場合"What"という文字列が入っているかどうかを判定してます。
⑤のコード
見つかったらBreakで抜けてます。
Breakの後に数字をいれると、ネストされたfor文の上の2個分抜けることができるので、2を指定してます。
⑥
標準関数のSENDSTR()を使って文字列を入力しています。
結果
苦労した点
Windowsがスプラッシュから切り替わったかどうかを判定するところ(WaitWindowText)が苦労しました。
Status()という標準関数を最初用いていたいのですが、これだとなんだかうまくいかず、苦肉の策でテキストで判定するようにしました。
2021年10月16日土曜日
自動テストの練習2 (UWSC編①) 起動
やりたいこと
こういうUIのツールで、こちらからダウンロードできます。
https://www.vector.co.jp/soft/winnt/util/se115105.html
簡単にキャプチャリプレイツールとして使用することができるツールなのですが、スクリプトを書いて、Windowsのアプリの操作も可能です。
このスクリプトの方で、自動テストに取り組んでみたいと思います。
実施したいテストの内容は、以前の記事をご参照ください。
https://pdfandfont.blogspot.com/2021/10/1.html
ざっくり言うと、UWPアプリの簡単なテストとなります。(スモークテスト?)
アプリの起動
最初のテストケース、起動するところをやってみました。
| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC1 | 起動 | exeを実行する | 起動する |
ソースコードはこちらになります。
// TC1 起動チェック
CheckStart()
// 起動チェック
PROCEDURE CheckStart()
//①起動
DOSCMD("C:\Users\XXX\Desktop\memotter - ショートカット.lnk")
//②起動チェック
ret = Getid("memotter")
IF ret = TRUE
PRINT "起動OK"
ELSE
PRINT "起動NG"
EXITEXIT
ENDIF
FEND
---
結果
まとめ
2021年10月10日日曜日
UWPアプリ コマンドプロンプトから起動2
UWPアプリ コマンドプロンプトから起動
UWPアプリを自動テストする前段階として、
コマンドプロンプトから起動できるようにしておきます。
いろいろなやり方があるみたいなのですが、MSのサイトに記載されている
こちらのやり方でやってみました。
一応起動するようにはなったのですが、起動時に実行されるコードが通常とはちょっとだけ違うところに行くので、こちらの手順はやめることにしました。
ひとまず調べたので忘れないように記録だけしておきます。
---------------------------------------------
MSのサイトはこちら
https://docs.microsoft.com/ja-jp/windows/uwp/xbox-apps/automate-launching-uwp-apps
Step.1 準備
Visual StudioでUWPアプリのプロジェクトを開く。
Package.appxamanifestを開く。
宣言タブを開く。
使用可能な宣言で「プロトコル」を選択して、追加ボタンを押下。
名前を入力する。
Step.2 コマンドプロンプトで実行
start memotter:
のコマンドで起動ができるようになる。
ただし、これだけだとスプラッシュで止まってしまうので、
以下の手順が必要。
Step.3 OnActivatedの実装
App.xaml.csにOnActivated()を追加して、OnLaunched()の中身と似たようなものを追加すると、スプラッシュ以降も実行されるようになります。
このコードは下記のサイトとOnLaunched()の中身を参考にコードを書いてみました。
protected override void OnActivated(IActivatedEventArgs e)
{
base.OnActivated(e); // 先に継承元のメソッドを処理する
string argMessage = string.Empty; // Uriから取り出した文字列を格納する変数
if (e.Kind == ActivationKind.Protocol)
{
// プロトコルによって起動されたときは、e.KindがActivationKind.Protocolになっている。
// このときの引数eはProtocolActivatedEventArgsクラスなので、キャストして使用する
ProtocolActivatedEventArgs eventArgs = e as ProtocolActivatedEventArgs;
// 画面表示前にプロトコルを処理するなら、ここで行う
}
Frame rootFrame = Window.Current.Content as Frame;
// ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、
// ウィンドウがアクティブであることだけを確認してください
if (rootFrame == null)
{
// ナビゲーション コンテキストとして動作するフレームを作成し、最初のページに移動します
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: 以前中断したアプリケーションから状態を読み込みます
}
// フレームを現在のウィンドウに配置します
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), argMessage);
}
// 現在のウィンドウがアクティブであることを確認します
Window.Current.Activate();
}
一応これでコマンドプロンプトからstart XXX:とすると起動ができるようになりました。 ただ、OnLaunched()が通常呼び出されるのに対してOnActivated()が呼び出されるため、 動作が変わるのことが気になってやめることにしました。
2021年10月2日土曜日
自動テストの練習 1
やりたいこと
memotterはこんな画面です。UWPアプリです。
準備
自動テストを行うまえにテストケースを事前に考えておきます。
もう少し機能はあるのですが、面倒なのでひとまずここまでにしました。そのうち追加していこうかと思います。
| ID | TestCaseの説明 | TestCaseの手順 | 出力期待値 |
| TC1 | 起動 | exeを実行する | 起動する |
| TC2 | 文字の入力 | 「あいうえお」を入力する enterを押す | 「あいうえお」が入力される |
| TC3 | Updateボタン | 「あいうえお」を入力する updateボタンを押す | 「あいうえお」が入力される |
| TC4 | Openボタン | Openボタンおす | エディタが起動する |
| TC5 | Aboutメニュー | 右クリック Aboutメニューを選択 | Aboutダイアログが表示される |
| TC6 | Settingsメニュー | 右クリック Settingsメニューを選択 | Settingsダイアログが表示される |
| TC7 | 終了 | ×ボタンをおす | 終了する |
まとめ
Windows 自動化メモ
・全体的に簡単。
・記録が簡単。
・吹き出しも結構いい。
Autoit
・コードを書く必要がある。
・UWSCより軽快?
Appium
・ちょっとかじったところ、難しい。
Power Automate Desktop
・まだ使ったことがない。
2021年8月4日水曜日
memotter UWP版公開
microsoft storeにmemotterのUWP版を登録できました。
https://www.microsoft.com/ja-jp/p/memotter/9nl5xbbr90w0
ご使用いただけると幸いです。
2021年7月22日木曜日
2021年7月18日日曜日
UWP アプリ認定キット 実行のめも
(手順)
1.ソリューションエクスプローラー > プロジェクト名称右クリック > Plublish > アプリパッケージの作成...
2.ラジオボタンで
(一回目)
新しいアプリ名でMicrosoft Storeに
(2回目以降)
xxxによりYYYとしてmicorosoftストアに
3.次へボタン
4.作成ボタン
... ビルドが始まるのでちょっと待つ
5.パッケージの作成が完了しましたダイアログが表示されたら、
Windowsアプリ認定キットを起動する。ボタンを押す。
6.テスト選択ダイアログで、次へボタンを押す。
7.終わるのを待つ。
8.合格が表示されたらOK
---------------------------------------------
(引っかかったところ)
①署名がされてなくて手順1実行後にすぐ終了
→ パッケージマニュフェスト>パッケージ化>証明書の選択>
適当に作成すると解決。
②documentLibraryを使用していたことで、不合格
正確に言うと合格だけど、documentlibraryは使えないよいうような警告が表示された。
→ localのフォルダにファイルを書くことにして解決。
2021年7月11日日曜日
2021年6月24日木曜日
UWPローカライズで苦戦中...
標準の日時書式指定文字列
こちらを参考に日付の書式を"d"に指定しておけば、短い日付のパターンで勝手に各言語にローカライズするのかなと 簡単に考えました。
テストのためにOSの地域と言語やロケールを全部英語に変えてみても、なにも変化せず。
UWPではmanifestで既定の言語が定義されていて、それで常に動くのがデフォルトということがわかりました。
グローバリゼーションとローカライズ
まずはこちらをしっかり読もうと思ってます。
2021年6月12日土曜日
UWP スプラッシュ ペイントで
やりたいこと
UWPで新規プロジェクトを作成して、実行すると大きな×印がでたり、タスクバーのアイコンが×になったりしてます。これはスプラッシュやアイコンの画像が登録していないだけで、登録すると解消されます。
その手順の紹介となります。
参考情報
MSの情報 「スプラッシュ画面の追加」https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/add-a-splash-screen
Step.1 ペイントでスプラッシュに表示される画像作成
ペイントを開き、サイズを400x400ピクセルにします。スプラッシュやアイコンに使いたい色で塗りつぶします。
好きな絵を描きます。
文字を入れる場合は、うまく入りきらないので、サイズを少し大きくしておいて、文字を書いてから400x400のサイズにした方がやりやすいかもしれません。
でであがったら保存します。
Step.2 visual studioに設定
ソリューションエクスプローラー > Pakage.appxmanifestをダブルクリック > ビジュアル資産 > すべてのビジュアル資産を選択 > ソースから先ほど作成した画像を選択 > スプラッシュスクリーンの背景の色を指定 > 生成ボタンを押す。できた
なんとなくそれっぽくなりました。2021年5月30日日曜日
UWP コンテキストメニュー
やりたいこと
UWPのアプリでコンテキストメニューを表示するまでの手順を紹介します。特定のコントロール、例えばボタンとかを右クリックするのではなく、フォームのどこを右クリックしてもメニューが表示されるようにするようにする方法となります。
ちょっと苦労したので、自分用としての意味も含めて記録しておきます。
また、できるようにはなったのですが、本当にこれでよいのかはちょっと怪しいところもあります。
環境
VisualStudio Community 2019 V16.10.0Windows 10 20H2
準備
空白のアプリ(ユニバーサルWindows)を作成しておきます。
Step.1 xamlの編集
ソリューションエクスプローラー > MainPage.xaml をダブルクリック > XAMLのGridの間に以下のコードを追記します。Gridにコンテキストメニューを割り当てるようなことをしてます。
追記するコード
ここから
<MenuFlyoutItem Text="テスト1"/>
<MenuFlyoutItem Text="テスト2"/>
<MenuFlyoutItem Text="テスト3"/>
ここまで
ここまでの手順でコンテキストメニューが表示されてもよいはずなのですが、なぜかコンテキストメニューはまだ表示されません。Step.2 Gridの背景を塗りつぶす
Step 1のコードを以下のように変更します。Gridの背景を白で塗りつぶしているだけです。
←これ
<MenuFlyoutItem Text="テスト1"/>
<MenuFlyoutItem Text="テスト2"/>
<MenuFlyoutItem Text="テスト3"/>
※このStep.2がちょっと怪しい手順となります。結果
コンテキストメニューが表示されます。できた!!








































