ここから本文です
ベランダ菜園とWindows用アプリ作成とExcel用アプリ(アドイン)作成

書庫┠タイマーアパカッ

フリーソフトウェア
タイマー
指定した時間が経過するとお知らせします
自分にとって最小限の機能に限定した、つまり低機能が特徴です
Visual Basic Express 2013 for Windows Desktopで作成
動作確認はWindows8.1
作るときに参考にしたのは
LittleStationery(作者:石渡 匠)さんの「c7」です
http://littlestationery.jp/
記事検索
検索

全2ページ

[1] [2]

[ 次のページ ]

時間になった時にでてくるお知らせウィンドウがアクティブになってしまうことがある不具合の修正した、はず

イメージ 1
タイマー進行中にメモ帳で何かを書いていて時間が来た時に

イメージ 2
お知らせウィンドウがアクティブ状態で表示されて
今まで使っていたアプリ、上の画像ではメモ帳から
フォーカスが移動してしまう不具合があった


イメージ 3
ウィンドウを非アクティブ状態で表示して
他のアプリからフォーカスを奪わないようにした

今までもそうしてきたつもりなんだけどアクティブになる時とならない時があって
原因がわからなかった
起動直後は問題なく動いて、他のアプリを使ったりしてウィンドウが下に隠れて
タスクバーのアイコンをクリックして呼び出してタイマーを実行すると
アクティブ状態で表示される、までは突き止めていたので
表示するときや閉じるときに問題があるんだろうなあとは思っていて
なんとなくコードを眺めていて思いついたことを試したら直ったっぽい?

    Private Sub お知らせウィンドウ表示(title As String, myTime As String)
        '設定でお知らせウィンドウ表示するにチェックが入っていたら実行
        If My.Settings.NoticeWindow Then
            Dim fm3 As Form3
            fm3 = New Form3
           With fm3
                .Location = l   '表示位置
                .BackColor = col '背景色
                .Opacity = My.Settings.NoticeOpacity '透明度
                .Text = myTime & "経ちました" 'タイトルバー
                .LabelNotice.Text = title
                .TopMost = True '最上面表示
                .ShowDialog(Me) 'ダイアログ表示←今回
                ’.ShowDialog() 'ダイアログ表示←前回
            End With
        End If
    End Sub

イメージ 4
Form3がお知らせウィンドウ

非アクティブで表示すること自体は

Public Class Form3

    Protected Overrides ReadOnly Property ShowWithoutActivation() As Boolean
        '非アクティブのままサブ・フォームを表示するには?[2.0のみ、C#、VB] − @IT
        'ほとんど理解できていないんだよなあ
        Get
            Return True
        End Get
    End Property

今ではこれを書いた(コピペ)時よりはちょっとわかる(わかってない)
この時はほんとにコピペしただけだった

ダウンロード

プログレスバーを付けてみた
イメージ 1
タスクバーアイコンにプログレスバーを付けたので
ウィンドウを最小化していたり他のウィンドウの下になっていても
おおよその残り時間がわかるようになった
dllを同梱したのでファイルサイズが大きくなった

ダウンロード先1
ファイル名
32bitWindows用:タイマーアパカッ_1.5.7.0.zip
64bitWindows用:タイマーアパカッ_1.5.7.0_x64.zip


ダウンロード先2(ヤフーボックス)
32bitWindows用

64bitWindows用



ここからメモ
アプリのウィンドウにプログレスバーを追加するのは普通なんだけど
タスクバーアイコンにプログレスバーを表示するのが難しかった
必要になるファイルが
Microsoft.WindowsAPICodePack.dll
Microsoft.WindowsAPICodePack.Shell.dll
この二つ
これをダウンロード?するにはNuGetパーケージマネージャーが必要?
イメージ 2
インストールしたらツール
→NuGetパーケージマネージャー
→パーケージマネージャーコンソール
でウィンドウが開くので
イメージ 3
PM> Install-Package WindowsAPICodePack-Core
でエンターでインストールされる

イメージ 4
プロフェクト→参照の追加
で参照マネージャーが開くので

イメージ 5
更に参照を押して参照するファイルを選択で
どこかにインストールされたMicrosoft.WindowsAPICodePack.Shell.dllを追加
これで使えるようになったので
[VB] Windows API Code Pack を使用して、Windows 7 のタスク バー ボタンに進行状況バー (プログレス バー) を表示する 言語: VB.NET
を見て書いた


参照した所
夕暮ログ Windows7とC#でコモンダイアログを簡単に拡張する

NuGet Gallery | Packages

.NET開発の新標準「NuGet」入門(前編) − @IT

.NET 用パッケージマネージャー NuGet のインストールと使い方 | プログラマーズ雑記帳


開くトラックバック(1)

名前を付けてリストに追加するときの文字列数を52文字までに制限をした
これによって53文字以上だとエラーなっていたのを修正


イメージ 3
長い文字列をテキストボックスに入れてタイマーを開始しようとすると

イメージ 2
エラーが出ていた模様

イメージ 1
テキストボックスにマウスカーソルが来ると
ポップアップで表示するようにしてみた

0000000000111111111122222222223333333333444444444455
という52文字で開始した場合の表示
イメージ 4
64文字の制限というのはこの
トレイアイコン右クリックメニューの項目名でひっかかっていた
残り時間とスペースと()で11文字+52文字で64文字いっぱい

イメージ 5
お知らせウィンドウも長い名前は考えていないのではみ出る

あんまり長い名前は付けたことがなかったので今まで気づかなかった
今回はたまたまツイッターで気になるニコニコ生放送を見つけたので
何のタイマーかわかりやすいようにツイート本文を名前にしたら
長すぎてエラーになって気づいた

Ryo Shimizuさんのツイート
shi3z:というわけで明日のキーノートスピーチ、井田先生の話マジで凄まじいからここだけ本当に必見。明日10時30分くらいからかな ch.nicovideo.jp/akiba-cyberspa… [http://twitter.com/shi3z/status/502697377959251969]


’タスクトレイの右クリックメニューアイテム
    Private trayItem1 As ToolStripItem 

 'タスクトレイの右クリックメニューに追加
            trayItem1 = Me.ContextTrayIcon.Items.Add(myTime1)

'タスクトレイの右クリックメニュー用
            trayItem1.Text = txt & " (" & Me.LabelTimerName1.Text & ")" 
エラーになっていたのは↑ここ
toolstripitemのtext(トレイアイコン右クリックメニューの項目名)が
64文字未満までだった



ファイル名
64bitWindows用タイマーアパカッ_1.4.6.0_x64.zip
32bitWindows用タイマーアパカッ_1.4.6.0.zip

ダウンロード先1

ダウンロード先2
ヤフーボックス

これだと直接ダウンロードできるかな?
32bit
64bit
タスクトレイの右クリックメニューからウィンドウ位置をリセットできるようにした
ウィンドウの状態が最小化、または最大化の時に終了した時はウィンドウの位置の保存をしないようにした
お知らせウィンドウの色をリセットできるようにした

イメージ 1
お知らせウィンドウの色を変えるのは簡単だけど
元の色に戻すのは面倒だったので戻すボタンを付けた


イメージ 2
ウィンドウを最小化した状態で終了すると
次回起動時にウィンドウが表示されなくなる不具合を見つけたので修正
これは最小化ウィンドウの位置をx,yともに-32000と認識して
次回起動時に-32000という画面外に表示されてしまうから
なので終了するときにウィンドウの状態を調べてノーマルの時だけ
保存するようにした
更に何かの拍子にウィンドウの位置がおかしくなってしまった時に
リセットするボタンを付けた
場所はタスクトレイの右クリックメニューのウィンドウ位置のリセット
これを押すと画面の左上に移動する


新しく見つけたけどスキル不足で直せない不具合

ウィンドウを最小化した状態で
タスクトレイの右クリックメニューからタイマーを開始すると
お知らせウィンドウがアクティブ状態で表示されてしまう



ダウンロードファイル名
64bitWindows用 タイマーアパカッ_1.4.5.0_x64.zip
32bitWindows用 タイマーアパカッ_1.4.5.0.zip

ダウンロード先

ダウンロード先2
ヤフーボックス
お知らせウィンドウを表示するようにした
イメージ 1
時間になった時タスクトレイのポップアップや音だけだと
PCの前から席を外した時に見落とすことがあったので
ウィンドウを表示するようにしてみた
お知らせウィンドウは最上面に表示される


設定はその他設定から
イメージ 2


実際の表示
イメージ 3
メインウィンドウが非アクティブだと
そこから呼び出されたお知らせウィンドウも非アクティブになるみたいで
最上面に表示されるけど非アクティブ状態で表示になるので
他の作業をしていても妨げにならないのはよかった
最初は↓このような処理が必要なのかと思っていたけど大丈夫みたい
非アクティブのままサブ・フォームを表示するには?[2.0のみ、C#、VB] − @IT


ダウンロードファイル名
64bitWindows用 タイマーアパカッ_1.4.3.0_x64.zip
32bitWindows用 タイマーアパカッ_1.4.3.0.zip

ダウンロード先

ヤフーボックス

全2ページ

[1] [2]

[ 次のページ ]

本文はここまでですこのページの先頭へ
みんなの更新記事