VBでOutlookのデスクトップ通知機能を制作する方法

このQ&Aのポイント
  • VBでOutlookのデスクトップ通知機能を制作するためには、4つの要件があります。
  • 現在、Form1を使用して通知を表示していますが、フォーカスの移動やボタンの作成に問題があります。
  • 解決策やアドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

VBで、Outlookのデスクトップ通知と同等の機能を制作しようとして

VBで、Outlookのデスクトップ通知と同等の機能を制作しようとしています。 現時点で、デスクトップ通知で行いたいことが4点あります。   1.表示位置を指定できること。   2.複数表示を可能にすること。   3.表示する時に、フォーカスを移動させないこと。   4.ボタンを作成できること。 現時点では、Formを作成し、Form1.show()で起動していますが、3のフォーカスが移動してしまうため、うまく実現することができませんでした。また、ツールチッップにて作成を行いましたが、ボタンを配備することができないために断念しました。 実現するための、方法やご意見頂けると幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

開いたフォームをアクティブにしないにはWindows APIのShowWindowを使用すれば良いと思います。 VB6 Private Declare Function ShowWindow Lib "user32" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long VB.NET Private Declare Function ShowWindow Lib "user32" _ (ByVal hwnd As IntPtr, ByVal nCmdShow As Long) As Long 詳細はヘルプを見ていただくとして第一引数に対象のウインドウハンドル、第二引数にウインドウの状態を指定します。 第二引数に 8 を指定すると対象のウインドウをアクティブにしないで開くことが出来ます。 以下、簡単なサンプル(VB.NET) プロジェクトにForm1とForm2を追加してForm1にButton1を追加します。 '--Form1 Public Class Form1  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   Dim frm As New Form2   frm.ShowNoActivate()  End Sub End Class '--Form2 Public Class Form2  Private Declare Function ShowWindow Lib "user32" _   (ByVal hwnd As IntPtr, ByVal nCmdShow As Long) As Long  Private Const SW_SHOWNA As Integer = 8  Public Sub ShowNoActivate()   Dim ret As Long   ret = ShowWindow(Me.Handle, SW_SHOWNA)  End Sub End Class ボタンを押す度、新しいウインドウ(Form2)が非アクティブで開きます。

sche_911
質問者

お礼

なるほど!とても参考になりました。 欲しかった回答が、そのまま頂けました。 ありがとうございました。

関連するQ&A

  • vb.netのエラー処理についてのご質問です。

    vb.netのエラー処理についてのご質問です。 初めまして。 vb.netでformアプリケーションを作成しているのですが、いつの頃からかform内でエラーが起こると、エラーを吐いて止まるのではなく、エラーを起こすとそのFormをShowしている所まで移動し飛びその後formが表示されます。 どうにかエラーを起こすと止まるようにしたいのですが、何の設定を変更すれば行けるでしょうか? なお、使用しているのはvisualstudio2012です。 ヨロシクお願いします!

  • Outlook2003でデスクトップ通知をずっと表示させたい

    Outlook2003のデスクトップ通知機能を使っていますが、最大でも30秒経つと消えてしまいます。 以前のバージョンのように、何かボタンをクリックしたり、閉じるボタンをクリックするまで、ずっと表示を出しておくことはできないのでしょうか? 宜しくお願いします。

  • VB6→VB2005移行におけるpopupmenu機能について

    すみません、VB&VB.net初心者です。 VB系の経験が無いのですが、仕事で現行VB6のソースをVB2005版にポーティングすることになり、色々調べながら進めてますが、壁にあたっております。。 現在は、以下の処理で困っています。 <やりたいこと> Form2上で右クリック押下時にポップアップメニュー (別フォーム(Form1)で作成:“右クリックは無効です”)を表示 <VB6ソース> If Button = vbRightButton Then Form2.PopupMenu Form1.mnuPop End If VisualStudio2005のアップグレードウィザードを使用したところ、 「PopupMenuアップグレードされませんでした」となりました。 ヘルプや検索等調べたところ、ContextmenuまたはContextmenustripを使いましょう、 ということのようなのですが、別フォームを呼び出す例が見当たりません。 (書いてあるけどピンとこなく気付かないのかも知れませんが。。) 実現方法をご存じの方おりましたら、ご教授よろしくお願いいたします。

  • VBでの質問です

    VBでの質問です Form1と2があるとします Form1とあるボタンを押すとForm2が開きFormが閉じるようにしたいのですがうまくいきません。どうしてでしょうか? Form1のコードで Form2.show Me.Close() と記述しましたがどこが違うのでしょうか。

  • VBでのプログラムについて

    VBで、プログラムを作る際に、form1に、label(普通の注意書き:同意するのラジオボタンにチェックを入れないと移動できないなど)を貼り付け、ラジオボタン(同意するかしないか)を選択できるようにし、ボタン(ラジオボタンのうち、同意するにチェック時のみ表示)をし、ボタンをクリックするとform2に移動できるようなプログラムの書き方がわかりません。どなたかわかる方いませんか? お早めに教えてください。

  • vb.netでのプログラミング

    vb.netでフォーム間のやりとりがうまくいきません。 以下のような機能を実現させるにはどうしたらよいでしょうか? form1のボタンAを押したときにform2のボタンをDISABLEにする。 よろしくお願いします。

  • デスクトップ通知

    jqueryを使用し、デスクトップ通知を作成しております。 流れとしましては、 管理画面があり、 その中で、ある入力フォームを保存すると管理画面を開いてるユーザーにデスクトップ通知を実装したいのですが、 自分自身でフォームを入力した場合は通知されるのですが、他のユーザーへの通知方法がわからず困っています。 実装方法を教えていただけないでしょうか。 参考は下記 http://am-yu.net/2014/07/08/web-notification/ 使用している部分。 function viewNotification(){ var notification = new Notification('タイマー終了しました', { body: 'クリックしてください', icon: 'green64_i.png' }); notification.onclick = function(){ window.focus(); }; } $(function(){ switch(Notification.permission){ case 'denied': $('#cd_txt').html('ブラウザ設定でデスクトップ通知の許可を有効化するようお願いします'); break; case 'default': var $button = $('<input type="button" value="デスクトップ通知を有効にする">') $button.click(function(){ Notification.requestPermission(function(permission){ $('#btn_start').attr('disabled', false); }); }); $('#cd_txt').append($button); break; default: $('#btn_start').attr('disabled', false); } }); formはphpで作っています。 よろしくお願いいたします。

  • VBにて、非アクティブでフォームを表示する方法

    長文で大変申し訳ございません。 form1でボタンを押してしばらくするとform2が表示されるようなツールを作っています。 form1のボタンを押した後の「しばらく」というのは1~60分の間でランダムで、 表示されるform2の数も決まっていない状態です。 よって、他の作業をしながらform2が表示されるのを待つということを想定しています。 ですので、いちいちform2が表示されるたびにフォーカスがform2にとられて 作業が中断するのはNGなので、form2は非アクティブ状態で表示したいと考えています。 (メッセンジャーでよくある右下のポップアップのようなイメージです) が、現在上手くいっておりません。 他で「ShowWindow(Me.Handle, 4)」とやっていたのをみて、showに書いてみましたが、 上手くいきませんでした。 どこでアクティブになるのかみたところ、newの直後で既にforcusedがtrueになっており、 これが原因ではないかと思っております。 以下のサンプルを見てみましたが、これは事前に表示するフォームをnewしており、 同じようにはできないのが現状です。 http://www.codeproject.com/KB/miscctrl/taskbarnotifier.aspx formをnewする時に非アクティブにする方法はあるのでしょうか。 また代替案等ございましたら、ご教授の程、宜しくお願いいたします。 (VB2010, FW2.0:元々2008で作っていたものであるため)

  • VB.NET2008を使用しています。

    VB.NET2008を使用しています。 ----- HTML ----- <input type="submit" name="Enter" value="ボタン"> ----- END ------ ----- 構成@VB ----- Form1 Button1 <- これをクリックしてWebBrowserのボタンを押したことにする WebBrowser1 ----- END ----- 上のようなボタン(HTMLのもの)を VB.NETのButton1を押すとWebBrowser1に表示されているWEBページのボタンを 押したようにしたいのですがどのようにすれば実現できますか? よろしくお願いします。

  • 【VB.NET2003】フォーム1を閉じてフォーム2を表示させたい

    プログラミング初心者でVB.NET2003使用です。 検索したところ、それらしいものがあったのでチャレンジしましたがダメだった(ちょっと違う?)ので質問させていただきます。 http://oshiete1.goo.ne.jp/qa1757174.html 《やりたい事》 Form1に配置したボタン1をクリックするとForm1を閉じてForm2を表示 Form2に配置したボタンAをクリックするとForm2を閉じてForm1を表示する。 これをやりたいのですが、なかなかうまく行きません。 ボタン1をクリックしてForm1を閉じないでForm2をShowかShowDialogでモードレス表示 ボタンAをクリックしてForm2をCloseさせてForm1を表示させる事(元々閉じていないので)は出来ます。 可能ならばどちらかを必ず閉じる方法でやりたいと思います。 可能でしょうか? 解決策やヒント、良いサイトがありましたら回答をお願いします。

専門家に質問してみよう