FlashWindowEx関数の利用について
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
maki
投稿数: 33

nullさん
早速のご回答ありがとうございました。
勉強不足でした。ご丁寧に教えて頂きありがとうございました。
本当に助かりました。
以上です。
早速のご回答ありがとうございました。
勉強不足でした。ご丁寧に教えて頂きありがとうございました。
本当に助かりました。
以上です。
投票数:0
平均点:0.00
null
投稿数: 191

> なぜ上記のように「20」なのでしょうか?
FLASHWINFO 構造体のサイズが 20 だからです。
BufSetNum() でも 20 byte までしかセットしてないでしょ?
C での記述例を見れば判りますが cbSize は
sizeof() で FLASHWINFO 構造体のサイズを取得しています。
--
FLASHWINFO info;
info.cbSize = sizeof(info);
--
FLASHWINFO の構造体は以下のようになっていますから、
アライメント(構造体の詰め物) は無しで単純に 4+4+4+4+4 = 20 となります。
typedef struct {
UINT cbSize; ← 4 byte
HWND hwnd; ← 4 byte
DWORD dwFlags; ← 4 byte
UINT uCount; ← 4 byte
DWORD dwTimeout; ← 4 byte
}
FLASHWINFO 構造体のサイズが 20 だからです。
BufSetNum() でも 20 byte までしかセットしてないでしょ?
C での記述例を見れば判りますが cbSize は
sizeof() で FLASHWINFO 構造体のサイズを取得しています。
--
FLASHWINFO info;
info.cbSize = sizeof(info);
--
FLASHWINFO の構造体は以下のようになっていますから、
アライメント(構造体の詰め物) は無しで単純に 4+4+4+4+4 = 20 となります。
typedef struct {
UINT cbSize; ← 4 byte
HWND hwnd; ← 4 byte
DWORD dwFlags; ← 4 byte
UINT uCount; ← 4 byte
DWORD dwTimeout; ← 4 byte
}
投票数:0
平均点:0.00
maki
投稿数: 33

nullさん
・すみません、もう少し教えたくださいますか?
・FLASHWINFO 構造体のサイズは、
BufSetNum('A'VAR,1,20,2,4)
とお教え頂きました。
・なぜ上記のように「20」なのでしょうか?
もしでしたら、ご教授頂ければ幸いでございます。
以上です。
・すみません、もう少し教えたくださいますか?
・FLASHWINFO 構造体のサイズは、
BufSetNum('A'VAR,1,20,2,4)
とお教え頂きました。
・なぜ上記のように「20」なのでしょうか?
もしでしたら、ご教授頂ければ幸いでございます。
以上です。
投票数:0
平均点:0.00
maki
投稿数: 33

nullさん
ありがとうございました。
>BufSetNum('A'VAR,5,CallDLL('USER32.GetAncestor','444',WinHWND(0),2),2,4)
上記のように修正したら、期待通りにタスクバーが点滅しました!
本当に助かりました。ありがとうございました。
以上です。
ありがとうございました。
>BufSetNum('A'VAR,5,CallDLL('USER32.GetAncestor','444',WinHWND(0),2),2,4)
上記のように修正したら、期待通りにタスクバーが点滅しました!
本当に助かりました。ありがとうございました。
以上です。
投票数:0
平均点:0.00
null
投稿数: 191

FLASHWINFO 構造体のサイズと点滅対象のウィンドウ・ハンドルが違います。
WinHWND(0) で取得出来るのは MDI の中のウィンドウハンドルなので親ハンドルを求める必要があります。
BufSetNum('A'VAR,1,20,2,4)
BufSetNum('A'VAR,5,CallDLL('USER32.GetAncestor','444',WinHWND(0),2),2,4)
BufSetNum('A'VAR,9,3,2,4)
BufSetNum('A'VAR,13,5,2,4)
BufSetNum('A'VAR,17,0,2,4)
ちなみに、レジストリの ForegroundLockTimeout がゼロになっている場合は点滅しないはずです。
WinHWND(0) で取得出来るのは MDI の中のウィンドウハンドルなので親ハンドルを求める必要があります。
BufSetNum('A'VAR,1,20,2,4)
BufSetNum('A'VAR,5,CallDLL('USER32.GetAncestor','444',WinHWND(0),2),2,4)
BufSetNum('A'VAR,9,3,2,4)
BufSetNum('A'VAR,13,5,2,4)
BufSetNum('A'VAR,17,0,2,4)
ちなみに、レジストリの ForegroundLockTimeout がゼロになっている場合は点滅しないはずです。
投票数:1
平均点:10.00
maki
投稿数: 33

いつもおせわになっております。
以下何か情報お持ちの方がいらっしゃいましたらよろしくお願いいたします。
【現状】
・uniPaaSアプリケーションのタスクバー・タイトルバーを、
Windows APIのuser32.dllのFlashWindowEx関数を利用して点滅させたい。
・しかしながら、うまくいきません。
【環境】
uniPaaS V1
Windows XP SP3
【開発概略】
<データビュー>
構造体用のBLOB型変数を定義
<ロジックエディタ>
イベント(タイマーイベントで10秒毎、ボタン押下イベント)
1.以下のように、BufSetNum関数で以下のようにFlashWindowEx関数の構造体に値をセット
FLASHWINFO構造体のサイズ…BufSetNum ('A'VAR,1,2048,2,4)
点滅対象のウィンドウ・ハンドル…BufSetNum ('A'VAR,5,WinHWND(0),2,4)
以下の「FLASHWのパターン」…BufSetNum ('A'VAR,9,3,2,4)
点滅する回数…BufSetNum ('A'VAR,13,5,2,4)
点滅する間隔(ミリ秒単位)…BufSetNum ('A'VAR,17,0,2,4)
2.FlashWindowEx関数
・コール UDP @user32.dll.FlashWindowEx
・コール時の受け渡しパラメータ
#1 'T2'
#2 構造体用のBLOB型の変数
【試したこと】
・上記開発概略.2.FlashWindowEx関数の受け渡しパラメータの#1で、
マスク関数、T(=構造体)と組み合わせる全12種類
・BufSetNum関数でセットした構造体を、BufGetNum関数でセットした値は全て取得できました。
【参考】
Mastering uniPaaS.pdf(150p〜152p)の
GetSystemTime 関数を参考例にしています。
以上何卒よろしくお願いいたします。
以下何か情報お持ちの方がいらっしゃいましたらよろしくお願いいたします。
【現状】
・uniPaaSアプリケーションのタスクバー・タイトルバーを、
Windows APIのuser32.dllのFlashWindowEx関数を利用して点滅させたい。
・しかしながら、うまくいきません。
【環境】
uniPaaS V1
Windows XP SP3
【開発概略】
<データビュー>
構造体用のBLOB型変数を定義
<ロジックエディタ>
イベント(タイマーイベントで10秒毎、ボタン押下イベント)
1.以下のように、BufSetNum関数で以下のようにFlashWindowEx関数の構造体に値をセット
FLASHWINFO構造体のサイズ…BufSetNum ('A'VAR,1,2048,2,4)
点滅対象のウィンドウ・ハンドル…BufSetNum ('A'VAR,5,WinHWND(0),2,4)
以下の「FLASHWのパターン」…BufSetNum ('A'VAR,9,3,2,4)
点滅する回数…BufSetNum ('A'VAR,13,5,2,4)
点滅する間隔(ミリ秒単位)…BufSetNum ('A'VAR,17,0,2,4)
2.FlashWindowEx関数
・コール UDP @user32.dll.FlashWindowEx
・コール時の受け渡しパラメータ
#1 'T2'
#2 構造体用のBLOB型の変数
【試したこと】
・上記開発概略.2.FlashWindowEx関数の受け渡しパラメータの#1で、
マスク関数、T(=構造体)と組み合わせる全12種類
・BufSetNum関数でセットした構造体を、BufGetNum関数でセットした値は全て取得できました。
【参考】
Mastering uniPaaS.pdf(150p〜152p)の
GetSystemTime 関数を参考例にしています。
以上何卒よろしくお願いいたします。
投票数:0
平均点:0.00