Click here to Skip to main content
15,900,108 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Browsing workgroups Pin
Graham Bradshaw17-May-05 4:33
Graham Bradshaw17-May-05 4:33 
GeneralRe: Browsing workgroups Pin
badzio17-May-05 22:12
badzio17-May-05 22:12 
GeneralRe: Browsing workgroups Pin
Graham Bradshaw17-May-05 22:17
Graham Bradshaw17-May-05 22:17 
GeneralRe: Browsing workgroups Pin
badzio18-May-05 3:29
badzio18-May-05 3:29 
GeneralRe: Browsing workgroups Pin
Graham Bradshaw18-May-05 3:48
Graham Bradshaw18-May-05 3:48 
GeneralRe: Browsing workgroups Pin
badzio18-May-05 21:36
badzio18-May-05 21:36 
GeneralRe: Browsing workgroups Pin
Graham Bradshaw19-May-05 2:44
Graham Bradshaw19-May-05 2:44 
GeneralRe: Browsing workgroups Pin
badzio19-May-05 2:52
badzio19-May-05 2:52 
<br />
	int error;<br />
	DWORD dwScope = RESOURCE_CONTEXT;<br />
	DWORD dwUsage = RESOURCEUSAGE_CONTAINER;<br />
	DWORD dwType = RESOURCETYPE_ANY;<br />
	DWORD dwStatus;<br />
	NETRESOURCE *NetResource = NULL, *NetRes = NULL,*ResDomain=NULL, *ResServer=NULL, *ResTree=NULL;<br />
	NETRESOURCE *WorkgroupResource = NULL, *ResComputers = NULL;<br />
	HANDLE hEnum, hWorkgroup = NULL;<br />
	//dwUsage = RESOURCEUSAGE_ALL;<br />
	dwScope = RESOURCE_GLOBALNET;<br />
	error = -3;<br />
	WNetOpenEnum( dwScope, dwType, dwUsage, NetResource, &hEnum );<br />
	CString ls_workgroups = "";<br />
	DWORD Count = 0xFFFFFFFF;<br />
	DWORD BufferSize = 2048;<br />
	LPVOID Buffer = new char[2048];<br />
	LPVOID BufferRes = new char[2048], BuffDomain = new char[2048], BuffNet = new char[2048], BuffComputers = new char[2048];<br />
	CString workgroup;<br />
	m_edit.GetWindowText(workgroup);<br />
	bool lb_exists = false;<br />
	if ( hEnum )<br />
	{<br />
		WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );<br />
		NetResource = (NETRESOURCE*)Buffer;<br />
		for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE); i++, NetResource++ )<br />
		{<br />
			if (NetResource->dwDisplayType==RESOURCEDISPLAYTYPE_NETWORK || NetResource->dwDisplayType>RESOURCEDISPLAYTYPE_NDSCONTAINER)<br />
			{<br />
				bool lb_test = false;;<br />
				if (NetResource->dwType>RESOURCETYPE_RESERVED)<br />
					lb_test = true;<br />
				else<br />
					if (!strcmp(NetResource->lpProvider,"Microsoft Windows Network"))<br />
						lb_test = true;<br />
				if (!lb_test)<br />
					continue;<br />
				WNetOpenEnum(dwScope,dwType,dwUsage,NetResource,&hEnum);<br />
				if (!hEnum)<br />
					continue;<br />
				dwStatus = WNetEnumResource(hEnum,&Count,BuffDomain,&BufferSize);<br />
				if (dwStatus==ERROR_NO_MORE_ITEMS)<br />
					break;<br />
				ResDomain=(NETRESOURCE*)BuffDomain;<br />
				for (unsigned int k=0; k<BufferSize/sizeof(NETRESOURCE); k++, ResDomain++)<br />
				{<br />
					if ((ResDomain->dwDisplayType==RESOURCEDISPLAYTYPE_DOMAIN || ResDomain->dwDisplayType==RESOURCEDISPLAYTYPE_GROUP) &&<br />
						(strcmp(ResDomain->lpProvider,"Microsoft Windows Network") || strcmp(ResDomain->lpProvider,"")))<br />
					{<br />
						if (!strcmp(ResDomain->lpRemoteName,workgroup))<br />
						{<br />
							hWorkgroup=hEnum;<br />
							lb_exists = true;<br />
							WorkgroupResource = ResDomain;<br />
							break;<br />
						}<br />
						ls_workgroups += ResDomain->lpRemoteName;<br />
						ls_workgroups += ";";<br />
					}<br />
				}<br />
				if (lb_exists)<br />
					break;<br />
			}<br />
		}<br />
	}<br />
	else<br />
		return/* false*/;<br />
	WNetCloseEnum(hEnum);<br />
	if (hWorkgroup==NULL)<br />
	{<br />
		error = -4;<br />
		return/* false*/;<br />
	}<br />
//	dwScope = RESOURCE_CONTEXT;<br />
//	dwScope = RESOURCE_CONNECTED;<br />
	dwUsage=RESOURCEUSAGE_ALL;<br />
	//dwUsage=RESOURCEUSAGE_CONNECTABLE;<br />
	dwStatus = WNetOpenEnum(dwScope,dwType,dwUsage,WorkgroupResource,&hWorkgroup);<br />
//	}<br />
	dwStatus = WNetEnumResource(hWorkgroup,&Count,BuffComputers,&BufferSize);<br />
	if (dwStatus!=NO_ERROR)<br />
	{<br />
		error = -4;<br />
		return/* false*/;<br />
	}<br />
	ResComputers = (NETRESOURCE*)BuffComputers;<br />
	CString ls_computers = "";<br />
	for (unsigned int l=0; l<BufferSize/sizeof(NETRESOURCE); l++, ResComputers++)<br />
	{<br />
		if (ResComputers->dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)<br />
		{<br />
		ls_computers+=ResComputers->lpRemoteName;<br />
		ls_computers+=";";<br />
		}<br />
	}<br />


------------------------------------------
gourangaWink | ;-)
JID badzio(at)chrome(dot)pl
------------------------------------------
GeneralRe: Browsing workgroups Pin
ThatsAlok16-May-05 18:24
ThatsAlok16-May-05 18:24 
GeneralRe: Browsing workgroups Pin
badzio17-May-05 4:41
badzio17-May-05 4:41 
GeneralUsing DLL built on VC7 on VC6 application Pin
Julia116-May-05 3:17
Julia116-May-05 3:17 
GeneralCant get network printers through PRINTER_INFO_2 Pin
Member 173276816-May-05 2:56
Member 173276816-May-05 2:56 
GeneralRe: Cant get network printers through PRINTER_INFO_2 Pin
David Crow16-May-05 3:35
David Crow16-May-05 3:35 
GeneralRe: Cant get network printers through PRINTER_INFO_2 Pin
Member 173276816-May-05 3:53
Member 173276816-May-05 3:53 
GeneralRe: Cant get network printers through PRINTER_INFO_2 Pin
David Crow16-May-05 4:34
David Crow16-May-05 4:34 
GeneralRe: Cant get network printers through PRINTER_INFO_2 Pin
Member 173276816-May-05 4:51
Member 173276816-May-05 4:51 
GeneralData Structure: Advice required Pin
Imtiaz Murtaza16-May-05 2:33
Imtiaz Murtaza16-May-05 2:33 
GeneralRe: Data Structure: Advice required Pin
Jack Puppy16-May-05 2:43
Jack Puppy16-May-05 2:43 
GeneralRe: Data Structure: Advice required Pin
David Crow16-May-05 2:45
David Crow16-May-05 2:45 
GeneralRe: Data Structure: Advice required Pin
Imtiaz Murtaza16-May-05 3:56
Imtiaz Murtaza16-May-05 3:56 
GeneralRe: Data Structure: Advice required Pin
David Crow16-May-05 4:00
David Crow16-May-05 4:00 
GeneralGetSystemMetrics(SM_CXVIRTUALSCREEN) Pin
IlanTal16-May-05 1:37
IlanTal16-May-05 1:37 
GeneralRe: GetSystemMetrics(SM_CXVIRTUALSCREEN) Pin
James R. Twine16-May-05 3:08
James R. Twine16-May-05 3:08 
GeneralRe: GetSystemMetrics(SM_CXVIRTUALSCREEN) Pin
IlanTal16-May-05 3:14
IlanTal16-May-05 3:14 
GeneralRe: GetSystemMetrics(SM_CXVIRTUALSCREEN) Pin
James R. Twine16-May-05 6:33
James R. Twine16-May-05 6:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.