- - PR -
タスクバーで点滅させる方法
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-03-22 17:57
いつも参考にさせていただいております。
あるイベントが起きるとタスクバーで点滅させるアプリを作ろうとしているのですが、うまくいきません。FlashWindowExをC#からCALLしようとしています。 どなたかご存知の方いらっしゃいましたら教えていただけないでしょうか。 コード: Win32apiAdapter.cs public class Win32apiAdapter { public struct FLASHWINFO { public uint cbSize; public IntPtr hwnd; public int dwFlags; public int uCount; } public Win32apiAdapter() { } [DllImport("user32.dll",CharSet=CharSet.Ansi)] public static extern int FlashWindowEx(ref FLASHWINFO f); } frm.cs public class frm::Form { public const int FLASHW_STOP = 0x0; public const int FLASHW_CAPTION = 0x1; public const int FLASHW_TRAY = 0x2; public const int FLASHW_ALL = FLASHW_CAPTION | FLASHW_TRAY; public const int FLASHW_TIMER = 0x4; public const int FLASHW_TIMERNOFG = 0xC; ・・・省略 flashInTaskBar(); ・・・省略 public void flashInTaskbar() { Win32apiAdapter.FLASHWINFO f = new Win32apiAdapter.FLASHWINFO(); f.cbSize = (uint)Marshal.SizeOf(f); f.hwnd = this.Handle; f.uCount = 100; f.dwFlags = FLASHW_ALL; Win32apiAdapter.FlashWindowEx(ref f); } } | ||||
|
投稿日時: 2004-03-22 18:53
自己レスです。
FlashWindowだとうまくいきました。 なぜFlashWindowExだとだめなんだろう? | ||||
|
投稿日時: 2004-03-24 15:31
FLASHWINFO構造体の宣言で、フラッシュ間隔を指定するdwTimeoutが抜けているようです。
以下のように修正すれば、FlashWindowExでもできます。 public struct FLASHWINFO { public uint cbSize; public IntPtr hwnd; public int dwFlags; public int uCount; public uint dwTimeout; } | ||||
|
投稿日時: 2004-03-25 18:08
antさん、ありがとうございます。
早速やってみたのですが、 f.dwTimeout=500; としてやってみたのですが、だめでした。 | ||||
|
投稿日時: 2004-03-25 22:27
こんばんは。
実験した環境は Windows 2000 VS .NET 2002 ですが、問題なく動作しています。 ”だめ”というのはフラッシュしないのでしょうか? それとも何かエラーが発生するのでしょうか? | ||||
|
投稿日時: 2004-03-26 13:37
ありがとうございます。 私の環境は WindowsXP Tablet Edition VS.NET 2003 です。タブレットと言うところが怪しいような気がします。 | ||||
|
投稿日時: 2004-03-26 13:38
すみません、書き忘れました。
現象ですが、うんともすんとも言わない、変化無しの状態でした。 もう少し粘ってみます。 | ||||
|
投稿日時: 2004-03-26 18:10
ant様
できました。 Win32apiAdapter.FlashWindowEx(ref f); のrefがなぜか抜けていました。 いろいろありがとうございました。 | ||||
1
