Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
내컴퓨터의 워크그룹 알아내기
내 컴퓨터에 설정된 워크그룹을 알수 있는 방법이 있나요
그리고 WNetOpenEnum을 쓰면 98에서는 전체 그룹이 나오는데
nt나 2000은 microsoft windows network 만 검색되고 그 밑은 검색할 수 없거든요
ipremotename에 'microsoft windows network'를 써넣으면 암것도 검색안돼구요.
일단 내컴의 워크그룹을 안다면 그나마 내그룹 컴들은 알수 있을것 같거든요
전문가님들의 조언 부탁합니다.
2
COMMENTS
컴맹..
•
2001.04.06 19:59
안녕하세여.. 컴맹입니다...
요즘 넘 바뻐서 기냥 소스만 올립니다..
구현은 WNetOpenEnum 함수로 했어여...
주석은 없습니다..(시간 관계상...)
필요하시면 다시 질문올리시면.. 소스를 보내드리겠습니다..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls,ShellAPI,ShlObj, Buttons;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
private
{ Private declarations }
public
procedure CreateSysIcons;
{ Public declarations }
end;
var
Form1: TForm1;
SysLIcon ,SysSIcon : TImageList;
implementation
{$R *.DFM}
procedure Tform1.CreateSysIcons;
var
SysIconImageHandle : UINT;
SHFileInfo : TSHFileInfo;
begin
SysLIcon := TImageList.Create(Self);
SysIconImageHandle := SHGetFileInfo('',0,SHFileInfo,SizeOf( SHFileInfo ),
SHGFI_SYSICONINDEX or SHGFI_LARGEICON );
if SysIconImageHandle <> 0 then
begin
SysLIcon.Handle := SysIconImageHandle;
SysLIcon.ShareImages := True;
end;
SysSIcon := TImageList.Create(Self);
SysIconImageHandle := ShGetFileInfo('',0,SHFileInfo,SizeOf(ShFileInfo),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON );
if SysIconImageHandle <> 0 then
begin
SysSIcon.Width := 16;
SysSIcon.Height := 16;
SysSIcon.Handle := SysIconImageHandle;
SysSIcon.ShareImages := True;
end;
end;
procedure GetServerList(TV: TTreeView; Node: TTreeNode);
var
a: Integer;
ErrCode: Integer;
NetRes: array[0..1023] of TNetResource;
EnumHandle: THandle;
EnumEntries: DWord;
BufferSize: DWord;
s: string;
itm: TTreeNode;
SHFileInfo : TSHFileInfo;
begin
if not Node.HasChildren then
try
Screen.Cursor := crHourglass;
with NetRes[0] do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwDisplayType := RESOURCEDISPLAYTYPE_generic;
dwUsage := RESOURCEUSAGE_CONTAINER;
lpLocalName := nil;
lpRemoteName := pChar(Tv.Selected.Text);
lpComment := nil;
lpProvider := nil;
end;
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
if ErrCode = NO_ERROR then
begin
EnumEntries := 1023;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
if ErrCode = No_Error then
with TV do
try
a := 0;
Items.BeginUpdate;
s := NetRes[0].lpRemoteName;
SHGetFileInfo(Pchar(s),0,SHFileInfo,
sizeOf(ShFileInfo),SHGFI_ICON or SHGFI_TYPENAME);
while a < enumEntries do
with NetRes[a] do
begin
s := lowercase(lpRemoteName);
Delete(s, 1, 2);
// itm.HasChildren := true;
itm := Items.AddChild(node, s);
itm.selectedIndex := ShFileInfo.iIcon;
itm.imageindex := ShFileInfo.iIcon;
inc(a);
end;
finally
Node.expand(false);
Items.EndUpdate;
end;
end;
finally
Screen.Cursor := crDefault;
WNetCloseEnum(EnumHandle);
end;
end;
procedure GetDomainList(TV: TTreeView);
var
a: Integer;
ErrCode: Integer;
NetRes: array[0..1023] of TNetResource;
EnumHandle: THandle;
EnumEntries: DWord;
BufferSize: DWord;
s: string;
itm: TTreeNode;
SHFileInfo : TSHFileInfo;
Pid : PItemIDList;
begin
try
with NetRes[0] do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwDisplayType := RESOURCEDISPLAYTYPE_DOMAIN;
dwUsage := RESOURCEUSAGE_CONTAINER;
lpLocalName := nil;
lpRemoteName := nil;
lpComment := nil;
lpProvider := nil;
end;
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
if ErrCode = NO_ERROR then
begin
EnumEntries := 1;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
WNetCloseEnum(EnumHandle);
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
EnumEntries := 1024;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
if ErrCode = No_Error then
with TV do
try
a := 0;
Items.BeginUpDate;
Items.Clear;
Itm := Items.Add(TV.Selected, string(NetRes[0].lpProvider));
IF SHGetSpecialFolderLocation(Form1.Handle,CSIDL_NETWORK,Pid) = S_OK then
SHGetFileInfo(Pchar(Pid),0,SHFileInfo,SizeOf(SHFileInfo),SHGFI_ICON or SHGFI_TYPENAME);
// Itm.ImageIndex:=SHFileInfo.iIcon;
while a < enumEntries do
with NetRes[a] do
begin
s := lpRemoteName;
Itm := Items.AddChild(Items[0], S);
Itm.ImageIndex := ShFileInfo.iIcon;
Itm.SelectedIndex := ShFileInfo.iIcon;
inc(a);
end;
finally
Items.EndUpdate;
end;
end;
finally
WNetCloseEnum(EnumHandle);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateSysIcons;
TreeView1.Images :=SysSIcon;
GetDomainList(TreeView1);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if TreeView1.Selected <> nil then
if TreeView1.Selected.level = 1 then
GetServerList(TreeView1, TreeView1.Selected);
end;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
if TreeView1.Selected.level = 1 then
GetServerList(TreeView1, TreeView1.Selected);
end;
end.
0
0
삭제
수정
댓글
박태준
•
2001.04.06 20:59
2000이어서 그런가요
microsoft windows network 나오고 이걸 expand 하면
소스 중에 메모리 어드레스 violation 에러가 나고
워크 그룹은 검색 되네요.
어쨌든 검색은 되니 감사합니다.
근데 내컴퓨터가 어떤 그룹에 속해있는지 알아오는 방법은 없나요
클릭해서 검색하는 거 말구요
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
정용광
2001.04.06 19:04
0
COMMENTS
/
0
LIKES
F1Book에서????
몰라~
•
2001.04.06 19:02
1
COMMENTS
/
0
LIKES
kernel32.dll오류가 몬가요??
엄성철
•
2001.04.09 18:36
몰라~ wrote: > KERNEL32.DLL오류가 뭔가요?? > 현재 PING으로 서버DB와의 연결상태를 체크하고 있습니다...
임성룡
2001.04.06 19:02
0
COMMENTS
/
0
LIKES
query의 sql 구문에 대해서...
윤태희
2001.04.06 18:36
0
COMMENTS
/
0
LIKES
어플리케이션서버와 IIS와의 관계..
질문맨
•
2001.04.06 17:52
1
COMMENTS
/
0
LIKES
[질문 ]배열 다시요..^^;
질문맨
•
2001.04.06 18:01
자답 --; test [i].bb [j] 군여 --; 질문맨 wrote: > type > TTest = record > aa :...
박태준
•
2001.04.06 17:35
2
COMMENTS
/
0
LIKES
내컴퓨터의 워크그룹 알아내기
내 컴퓨터에 설정된 워크그룹을 알수 있는 방법이 있나요 그리고 WNetOpenEnum을 쓰면 98에서는 전체 그룹이 나오는데 nt나 2000은 microsoft windows network 만 검색되고 그 밑은 검색할 수 없거든요 ipremotename에 'microsoft windows...
컴맹..
•
2001.04.06 19:59
안녕하세여.. 컴맹입니다... 요즘 넘 바뻐서 기냥 소스만 올립니다.. 구현은 WNetOpenEnum 함수로 했어...
박태준
•
2001.04.06 20:59
2000이어서 그런가요 microsoft windows network 나오고 이걸 expand 하면 소스 중에 메모리 어드레스 v...
질문
•
2001.04.06 15:42
1
COMMENTS
/
0
LIKES
스트링그리드의 다중선택에 관한질문.
김광섭
•
2001.04.07 03:00
질문 wrote: > 스트링그리드에 대해 세가지 질문입니다. > > 1. 스트링그리드의 goRangeSelect,goRowSe...
현재명
2001.04.06 15:22
0
COMMENTS
/
0
LIKES
DBGrid에서 레코드가 나타나질않아요.
초보델피언
•
2001.04.06 08:00
1
COMMENTS
/
0
LIKES
kylix에 관하여...........
^-_-^
•
2001.04.07 08:36
yo' 카알릭스는 현재 베타버전이 돌고 있는뎅...몇몇 선택받은(??) 분들만 사용할수 있다네요 -_-;; ...
이병협
2001.04.06 07:58
0
COMMENTS
/
0
LIKES
[급]visual c++로 작성한 dll을 Dynamic link 하는 방법?????
이성민
2001.04.06 07:57
0
COMMENTS
/
0
LIKES
동적테이블의 DBGRID에서 바로 편집을 할수가
김현영
2001.04.06 07:42
0
COMMENTS
/
0
LIKES
고수님들! 어떻게 만들면 되나요?[델초보]
질문
2001.04.06 06:16
0
COMMENTS
/
0
LIKES
TdrawGrid 에서 셀에 문자열을 넣으려면?
무식이
•
2001.04.06 05:41
1
COMMENTS
/
0
LIKES
버튼의 캡션을 매개변수로 나오게...ToT
채병호
•
2001.04.06 09:39
무식이 wrote: > 저겨 안냐세여? > 질문 좀 할께여... 델파이에서여, > 각 버튼의 caption에 red,blue,g...
김동수
•
2001.04.06 05:04
1
COMMENTS
/
0
LIKES
퀵리포트에서 모니터에출력되는거 하고 실제 프린트되는거가 달라여..ㅜㅜ
감초
•
2001.04.06 15:44
이유는 단순합니다. quickreport의 beforePrint 함수안에다가 idx := 0; 을 넣어주세요. 김동수 wr...
이태성
2001.04.06 05:11
0
COMMENTS
/
0
LIKES
차트 에 X 축에대한 2개의그래프?
이상현
•
2001.04.06 03:07
1
COMMENTS
/
0
LIKES
DBGrid에 일련번호 넣기
송종석
•
2001.04.06 19:01
Query1의 TField함수를 사용하여 일련번호를 보이려면 다음과 같이 하면 됩니다. 1.Query1에 Calculate Fi...
권동훈
2001.04.06 02:44
0
COMMENTS
/
0
LIKES
win2000서버에서 EdbengineError해결방법은요..?
깐돌이
•
2001.04.06 00:41
1
COMMENTS
/
0
LIKES
[긴급질문] 델파이의 변수의 종류에는..?
김광섭
•
2001.04.07 03:11
깐돌이 wrote: > 안녕하세요~ 델파이에 대해 이제 막~ 공부를 시작하려는 초보입니다.. > > 들어가기전...
긴급!
2001.04.05 23:02
0
COMMENTS
/
0
LIKES
ACM 코덱 설정 방법
박태준
2001/04/06 17:35
Views
379
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
요즘 넘 바뻐서 기냥 소스만 올립니다..
구현은 WNetOpenEnum 함수로 했어여...
주석은 없습니다..(시간 관계상...)
필요하시면 다시 질문올리시면.. 소스를 보내드리겠습니다..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls,ShellAPI,ShlObj, Buttons;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
private
{ Private declarations }
public
procedure CreateSysIcons;
{ Public declarations }
end;
var
Form1: TForm1;
SysLIcon ,SysSIcon : TImageList;
implementation
{$R *.DFM}
procedure Tform1.CreateSysIcons;
var
SysIconImageHandle : UINT;
SHFileInfo : TSHFileInfo;
begin
SysLIcon := TImageList.Create(Self);
SysIconImageHandle := SHGetFileInfo('',0,SHFileInfo,SizeOf( SHFileInfo ),
SHGFI_SYSICONINDEX or SHGFI_LARGEICON );
if SysIconImageHandle <> 0 then
begin
SysLIcon.Handle := SysIconImageHandle;
SysLIcon.ShareImages := True;
end;
SysSIcon := TImageList.Create(Self);
SysIconImageHandle := ShGetFileInfo('',0,SHFileInfo,SizeOf(ShFileInfo),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON );
if SysIconImageHandle <> 0 then
begin
SysSIcon.Width := 16;
SysSIcon.Height := 16;
SysSIcon.Handle := SysIconImageHandle;
SysSIcon.ShareImages := True;
end;
end;
procedure GetServerList(TV: TTreeView; Node: TTreeNode);
var
a: Integer;
ErrCode: Integer;
NetRes: array[0..1023] of TNetResource;
EnumHandle: THandle;
EnumEntries: DWord;
BufferSize: DWord;
s: string;
itm: TTreeNode;
SHFileInfo : TSHFileInfo;
begin
if not Node.HasChildren then
try
Screen.Cursor := crHourglass;
with NetRes[0] do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwDisplayType := RESOURCEDISPLAYTYPE_generic;
dwUsage := RESOURCEUSAGE_CONTAINER;
lpLocalName := nil;
lpRemoteName := pChar(Tv.Selected.Text);
lpComment := nil;
lpProvider := nil;
end;
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
if ErrCode = NO_ERROR then
begin
EnumEntries := 1023;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
if ErrCode = No_Error then
with TV do
try
a := 0;
Items.BeginUpdate;
s := NetRes[0].lpRemoteName;
SHGetFileInfo(Pchar(s),0,SHFileInfo,
sizeOf(ShFileInfo),SHGFI_ICON or SHGFI_TYPENAME);
while a < enumEntries do
with NetRes[a] do
begin
s := lowercase(lpRemoteName);
Delete(s, 1, 2);
// itm.HasChildren := true;
itm := Items.AddChild(node, s);
itm.selectedIndex := ShFileInfo.iIcon;
itm.imageindex := ShFileInfo.iIcon;
inc(a);
end;
finally
Node.expand(false);
Items.EndUpdate;
end;
end;
finally
Screen.Cursor := crDefault;
WNetCloseEnum(EnumHandle);
end;
end;
procedure GetDomainList(TV: TTreeView);
var
a: Integer;
ErrCode: Integer;
NetRes: array[0..1023] of TNetResource;
EnumHandle: THandle;
EnumEntries: DWord;
BufferSize: DWord;
s: string;
itm: TTreeNode;
SHFileInfo : TSHFileInfo;
Pid : PItemIDList;
begin
try
with NetRes[0] do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwDisplayType := RESOURCEDISPLAYTYPE_DOMAIN;
dwUsage := RESOURCEUSAGE_CONTAINER;
lpLocalName := nil;
lpRemoteName := nil;
lpComment := nil;
lpProvider := nil;
end;
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
if ErrCode = NO_ERROR then
begin
EnumEntries := 1;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
WNetCloseEnum(EnumHandle);
ErrCode := WNetOpenEnum(
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
@NetRes[0],
EnumHandle
);
EnumEntries := 1024;
BufferSize := SizeOf(NetRes);
ErrCode := WNetEnumResource(
EnumHandle,
EnumEntries,
@NetRes[0],
BufferSize
);
if ErrCode = No_Error then
with TV do
try
a := 0;
Items.BeginUpDate;
Items.Clear;
Itm := Items.Add(TV.Selected, string(NetRes[0].lpProvider));
IF SHGetSpecialFolderLocation(Form1.Handle,CSIDL_NETWORK,Pid) = S_OK then
SHGetFileInfo(Pchar(Pid),0,SHFileInfo,SizeOf(SHFileInfo),SHGFI_ICON or SHGFI_TYPENAME);
// Itm.ImageIndex:=SHFileInfo.iIcon;
while a < enumEntries do
with NetRes[a] do
begin
s := lpRemoteName;
Itm := Items.AddChild(Items[0], S);
Itm.ImageIndex := ShFileInfo.iIcon;
Itm.SelectedIndex := ShFileInfo.iIcon;
inc(a);
end;
finally
Items.EndUpdate;
end;
end;
finally
WNetCloseEnum(EnumHandle);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateSysIcons;
TreeView1.Images :=SysSIcon;
GetDomainList(TreeView1);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if TreeView1.Selected <> nil then
if TreeView1.Selected.level = 1 then
GetServerList(TreeView1, TreeView1.Selected);
end;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
if TreeView1.Selected.level = 1 then
GetServerList(TreeView1, TreeView1.Selected);
end;
end.