如何隐藏WINDOWS任务条 (50分)

  • 主题发起人 主题发起人 南宫吹云
  • 开始时间 开始时间

南宫吹云

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何隐藏WINDOWS的任务条(用程序的方法,相当于将任务条设为自动隐藏)?
还有如何得到当前计算机和局域网中各个计算机的名称?
 
禁止任务栏:
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil)))
 
任务条:
procedure hideTaskbar; //隐藏
var wndHandle : THandle; wndClass : array[0..50] of Char;
begin
; StrPCopy(@wndClass[0], 'Shell_TrayWnd');
; wndHandle := FindWindow(@wndClass[0], nil);
; ShowWindow(wndHandle, SW_HIDE);
End;
procedure showtaskbar;//显示
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
; StrPCopy(@wndClass[0], 'Shell_TrayWnd');
; wndHandle := FindWindow(@wndClass[0], nil);
; ShowWindow(wndHandle, SW_Show);
end;

Taskbar_hwnd:= FindWindow('Shell_traywnd', ''); ;
;//得到任务条的窗口 句柄
SetWindowPos(Taskbar_hwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);//设置任务条状态
 
问题1:楼上很全.
问题2:转贴别人的.
function TForm1.GetServerList(var List: TStringList): Boolean;
type
; ; TNetResourceArray = ^TNetResource;//网络类型的数组 ;
Var
; NetResource : TNetResource;
; Buf : Pointer;
; Count,BufSize,Res : DWORD;
; lphEnum : THandle;
; p : TNetResourceArray;
; i,j : SmallInt;
; NetworkTypeList : TList;
begin
; Result := False;
; NetworkTypeList := TList.Create;
; List.Clear; ;
//获取整个网络中的文件资源的句柄,lphEnum为返回名柄
; ; ; Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
; ; ; ; ; ; ; ; ; ; ; ; ; ;RESOURCEUSAGE_CONTAINER, Nil,lphEnum);
; ; ; If Res <> NO_ERROR Then exit;//Raise Exception(Res);//执行失败 ;
//获取整个网络中的网络类型信息
; ; ; Count := $FFFFFFFF;//不限资源数目
; ; ; BufSize := 8192;//缓冲区大小设置为8K
; ; ; GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
; ; ; Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
; ; ; If ( Res = ERROR_NO_MORE_ITEMS )//资源列举完毕
; ; ; or (Res <> NO_ERROR )//执行失败
; ; ; Then Exit;
; ; ; P := TNetResourceArray(Buf);
; ; ; For I := 0 To Count - 1 Do//记录各个网络类型的信息
; ; ; Begin
; ; ; ; ; NetworkTypeList.Add(p);
; ; ; ; ; Inc(P);
; ; ; End;
; ; ; //WNetCloseEnum关闭一个列举句柄
; ; ; Res := WNetCloseEnum(lphEnum);//关闭一次列举
; ; ; If Res <> NO_ERROR Then exit;
; ; ; For J := 0 To NetworkTypeList.Count-1 Do //列出各个网络类型中的所有工作组名称
; ; ; Begin//列出一个网络类型中的所有工作组名称
; ; ; ; ; NetResource := TNetResource(NetworkTypeList.Items[J]^);//网络类型信息 ;
//获取某个网络类型的文件资源的句柄,NetResource为网络类型信息,lphEnum为返回名柄
; ; ; ; ; Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);
; ; ; ; ; If Res <> NO_ERROR Then break;//执行失败
; ; ; ; ; While true Do//列举一个网络类型的所有工作组的信息
; ; ; ; ; Begin
; ; ; ; ; ; ; Count := $FFFFFFFF;//不限资源数目
; ; ; ; ; ; ; BufSize := 8192;//缓冲区大小设置为8K
; ; ; ; ; ; ; GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
; ; ; ; ; ; ; //获取一个网络类型的文件资源信息,
; ; ; ; ; ; ; Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
; ; ; ; ; ; ; If ( Res = ERROR_NO_MORE_ITEMS ) //资源列举完毕
; ; ; ; ; ; ; or (Res <> NO_ERROR) //执行失败
; ; ; ; ; ; ; then break;
; ; ; ; ; ; ; P := TNetResourceArray(Buf);
; ; ; ; ; ; ; For I := 0 To Count - 1 Do//列举各个工作组的信息
; ; ; ; ; ; ; Begin
; ; ; ; ; ; ; ; ; List.Add( StrPAS( P^.lpRemoteName ));//取得一个工作组的名称
; ; ; ; ; ; ; ; ; Inc(P);
; ; ; ; ; ; ; End;
; ; ; ; ; End;
; ; ; ; ; Res := WNetCloseEnum(lphEnum);//关闭一次列举
; ; ; ; ; If Res <> NO_ERROR Then break;//执行失败
; ; ; End;
; ; ; Result := True;
; ; ; FreeMem(Buf);
; ; ; NetworkTypeList.Destroy;
end;

function TForm1.GetUsers(GroupName: string;
; var List: TStringList): Boolean;
type
; ; TNetResourceArray = ^TNetResource;//网络类型的数组 ;
Var
; NetResource : TNetResource;
; Buf : Pointer;
; Count,BufSize,Res : DWord;
; Ind : Integer;
; lphEnum : THandle;
; Temp : TNetResourceArray;
begin

; ; ;Result := False;
; ; ;List.Clear;
; ; ;FillChar(NetResource, SizeOf(NetResource), 0);//初始化网络层次信息
; ; ;NetResource.lpRemoteName := @GroupName[1];//指定工作组名称
; ; ;NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;//类型为服务器(工作组)
; ; ;NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
; ; ;NetResource.dwScope := RESOURCETYPE_DISK;//列举文件资源信息
; ; ;//获取指定工作组的网络资源句柄
; ; ;Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
; ; ; ; ; ; ; ; ; ; ; ; ; RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);
; ; ;If Res <> NO_ERROR Then Exit; //执行失败
; ; ;While True Do//列举指定工作组的网络资源
; ; ;Begin
; ; ; ; ;Count := $FFFFFFFF;//不限资源数目
; ; ; ; ;BufSize := 8192;//缓冲区大小设置为8K
; ; ; ; ;GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
; ; ; ; ;//获取计算机名称
; ; ; ; ;Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
; ; ; ; ;If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕
; ; ; ; ;If (Res <> NO_ERROR) then Exit;//执行失败
; ; ; ; ;Temp := TNetResourceArray(Buf);
; ; ; ; ;For Ind := 0 to Count - 1 do//列举工作组的计算机名称
; ; ; ; ;Begin
; ; ; ; ; ; ;//获取工作组的计算机名称,+2表示删除"//",如//wangfajun=>wangfajun
; ; ; ; ; ; ;List.Add(Temp^.lpRemoteName + 2);
; ; ; ; ; ; ;Inc(Temp);
; ; ; ; ;End;
; ; ;End;
; ; ;Res := WNetCloseEnum(lphEnum);//关闭一次列举
; ; ;If Res <> NO_ERROR Then exit;//执行失败
; ; ;Result := True;
; ; ;FreeMem(Buf); ;
end;
 
简单一点:
; ShowWindow(FindWindow('Shell_TrayWnd', nil),SW_HIDE);
; ShowWindow(FindWindow('Shell_TrayWnd', nil),SW_SHOW);
 
多谢各位!问题已经解决。多谢了!!
 
后退
顶部