HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0916
GrapeColorスタートメニューについて7解決


GrapeColor

リンク

2011/9/16(Fri) 23:34:53|NO.41410

スタートメニューが開いているかどうかHSPで調べる方法はありませんか?
もしくは強制的にスタートメニューを閉じる方法はありませんか?
(明日の文化祭に間に合わせたいので)迅速な回答お待ちしております。



この記事に返信する


なたで

リンク

2011/9/17(Sat) 00:44:01|NO.41412

スタートメニューが開いているかどうか調べる方法です。
ウィンドウやボタンなど、基本的にハンドルで管理されています。
それを見つけてから、ハンドルを用いて色々操作したりします。


#include "user32.as" FindWindow "DV2ControlHost", 0 startmenu = stat repeat wait 10 color 255,255,255 boxf color pos 0,0 IsWindowVisible startmenu if(stat==0) { mes "開いていません。" }else { mes "開いています。" } loop



inovia

リンク

2011/9/17(Sat) 01:31:27|NO.41414

なたでさんのサンプルが私の環境で動かなかったので、別の方法でやってみました。
スタートメニューの開閉を1秒おきにします。
メッセージはSpy++で捕まえたものをそのまま張り付けてあります。


#include "user32.as" #define WM_SYSCOMMAND 0x0112 #define WM_USER 0x0400 FindWindow "shell_traywnd", 0 hTraywnd = stat repeat // 開く sendmsg hTraywnd, WM_SYSCOMMAND, 0xF130 wait 100 // 1秒待つ // 閉じる sendmsg hTraywnd, WM_USER+12,0,0 wait 100 // 1秒待つ loop



Cookies

リンク

2011/9/17(Sat) 09:17:16|NO.41415

「スタートメニュー クラス」でググった結果、「BaseBar」というのが見つかったので、
それをなたでさんのスクリに入れてみました。

#include "user32.as" FindWindow "BaseBar", 0 startmenu = stat repeat wait 10 color 255,255,255 boxf color pos 0,0 IsWindowVisible startmenu if(stat==0) { mes "開いていません。" }else { mes "開いています。" } loop
これで私の環境では動きました。



Lisa

リンク

2011/9/17(Sat) 10:22:02|NO.41416

あたしの環境では
なたでさんとinoviaさんのが動作しましたが、
Cookiesさんのは動作しませんでした。

Windows7 Home Premium SP1, HSP3.3RC1



Cookies

リンク

2011/9/17(Sat) 10:34:31|NO.41417

そうですか。
私はWinVistaなんですよ。
多分スタートメニューのクラス名が変わってるんですね。
OSごとに分岐するしかないのかな。

私はinoviaさんのは動きましたが、なたでさんのは動きませんでした。

"Shell_TrayWnd"はタスクバーのクラス名なんですね。
調べたところ、Win2000では"BaseBar"、XPは"DV2ControlHost"だそうで。
Vistaは2000側なんですかね。。



Cookies

リンク

2011/9/17(Sat) 10:44:55|NO.41418

その二つに分かれているようです。
XPと7は"DV2ControlHost"、
Vista,2000,Me,95のIE4シェル統合,98などは"BaseBar"だそうで。
(95のIE4なしは、ただのポップアップメニューだそうです。)
http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html

両方取得してみて、0でないほうを採用する方法がいいのかな。



GrapeColor

リンク

2011/9/17(Sat) 21:33:49|NO.41464

repeat
IsWindowVisible startmenu if stat!0 { gsel 0,2 gsel 0,1 IsWindowVisible startmenu if stat!0 : sendmsg hwnd, $112, $F130 : gsel 0,2 : gsel 0,1 } await 1 loop
上のプログラムで強制的にスタートボタンを消せました
参考になるプログラムありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.