- PR -

タスクバーで点滅させる方法

1
投稿者投稿内容
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 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);
}
}
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2004-03-22 18:53
自己レスです。
FlashWindowだとうまくいきました。
なぜFlashWindowExだとだめなんだろう?
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 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;
}
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2004-03-25 18:08
antさん、ありがとうございます。
早速やってみたのですが、
f.dwTimeout=500;
としてやってみたのですが、だめでした。
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 2004-03-25 22:27
こんばんは。

実験した環境は
Windows 2000
VS .NET 2002
ですが、問題なく動作しています。
”だめ”というのはフラッシュしないのでしょうか?
それとも何かエラーが発生するのでしょうか?
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2004-03-26 13:37
引用:

antさんの書き込み (2004-03-25 22:27) より:
こんばんは。

実験した環境は
Windows 2000
VS .NET 2002
ですが、問題なく動作しています。
”だめ”というのはフラッシュしないのでしょうか?
それとも何かエラーが発生するのでしょうか?



ありがとうございます。
私の環境は
WindowsXP Tablet Edition
VS.NET 2003
です。タブレットと言うところが怪しいような気がします。
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2004-03-26 13:38
すみません、書き忘れました。
現象ですが、うんともすんとも言わない、変化無しの状態でした。
もう少し粘ってみます。
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2004-03-26 18:10
ant様

できました。
Win32apiAdapter.FlashWindowEx(ref f);
のrefがなぜか抜けていました。

いろいろありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)