タスクバーの[自動的に隠す]の状態を設定/解除


にゃんこ  2007-02-21 16:14:27  No: 25014

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


今日のわんこ  2007-02-21 21:42:51  No: 25015

>何を行っているのか検討がつかず、悩んでいます。
ナニをやってるんだろうね〜
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;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加