Windows2000,Delphi6です。
タスクバーの[自動的に隠す]の状態を設定/解除したいです。
Web検索したところ、VBで以下のようなコードで(強引に?)実現しているようですが、何を行っているのか検討がつかず、悩んでいます。
Delphiではどのようにしたら良いのでしょうか。
アドバイスをお願いいたします。
##http://cgi14.plala.or.jp/uz/ubbs/wforum.cgi?mode=allread&pastlog=0001&no=143&page=30&act=past
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Dim hWndTaskBar As Long
hWndTaskBar = FindWindow("Shell_TrayWnd", vbNullString)
Call SetForegroundWindow(hWndTaskBar)
Call SendKeys("%~", True)
While FindWindow(vbNullString, "タスク バーとスタート メニューのプロパティ") = 0
Wend
Call Sleep(100)
Call SendKeys("%u", True)
Call Sleep(100)
Call SendKeys("~", True)
End Sub
>何を行っているのか検討がつかず、悩んでいます。
ナニをやってるんだろうね〜
Vistaでもイケルだろうか...
var
cnt: Integer;
hW: HWND;
begin
Variant(CreateOleObject('Shell.Application')).TrayProperties;
cnt := 0;
repeat
Sleep(100);
hW := FindWindow(nil, 'タスク バーのプロパティ');
if hW = 0 then
hW := FindWindow(nil, 'タスク バーとスタート メニューのプロパティ'); // Win2000
if hW = 0 then
hW := FindWindow(nil, 'タスク バーと [スタート] メニューのプロパティ'); // WinXP
inc(cnt); if cnt > 30 then exit;
until hW <> 0;
SetForegroundWindow(hW);
keybd_event($55, MapVirtualKey($55, 0), 0, 0);
keybd_event($55, MapVirtualKey($55, 0), KEYEVENTF_KEYUP, 0);
end;
ツイート | ![]() |