Πως παιρνω ολα τα computer names σε ενα δικτυο

Γενικά θέματα για τις γλώσσες προγραμματισμού που δεν καλύπτονται από τις άλλες περιοχές της κατηγορίας.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Pytzamarama
Δημοσιεύσεις: 13
Εγγραφή: 02 Απρ 2003 11:44

Πως παιρνω ολα τα computer names σε ενα δικτυο

Δημοσίευση από Pytzamarama » 02 Απρ 2003 11:54

Γεια!
Εχω εν προβλημα.Θελω μεσω Powerbuilder να παρω ολα τα computer names του δικτυου.
To API που κανει αυτη τη δουλεια ειναι το NetServerEnum αλλα εχω βρει δυσκολιες (ξεκινωντας απο τη δηλωση) μιας και μπλεκονται μεσα pointers,arrays of structures κτλ.
Εχει ασχοληθει κανεις με κατι παρομοιο να μου δωσει ενα χερακι?

Ευχαριστω

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πως παιρνω ολα τα computer names σε ενα δικτυο

Δημοσίευση από cordis » 02 Απρ 2003 17:22

Βρήκα κάτι σεχτικό στα web forums της sybase..
πάρα το zip...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Pytzamarama
Δημοσιεύσεις: 13
Εγγραφή: 02 Απρ 2003 11:44

Πως παιρνω ολα τα computer names σε ενα δικτυο

Δημοσίευση από Pytzamarama » 03 Απρ 2003 14:43

Thanx!
τελικα βρηκα λυση.
Για οποιον θελει μπορω να ποσταρω τον κωδικα.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πως παιρνω ολα τα computer names σε ενα δικτυο

Δημοσίευση από cordis » 05 Απρ 2003 00:21

Για βάλε να δούμε κι εμείς ;)
Ποια έκδοση PB χρησιμοποιείς; εγώ 8.0.3
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Pytzamarama
Δημοσιεύσεις: 13
Εγγραφή: 02 Απρ 2003 11:44

Πως παιρνω ολα τα computer names σε ενα δικτυο

Δημοσίευση από Pytzamarama » 08 Απρ 2003 15:04

//global externals functions
subroutine RtlMoveMemoryWkStaUserInfo(ref wksta_user_info_1 dest, long src, long buffsize) LIBRARY "Kernel32" ALIAS FOR "RtlMoveMemory"
function long NetWkstaUserGetInfo(ref String s_Reserved, Long l_Level, ref long user_buffer) LIBRARY "NETAPI32.DLL"
function long NetApiBufferFree(long user_buffer) LIBRARY "NETAPI32.DLL"
subroutine lstrcpyW(ref string dest, long src) Library "Kernel32" alias for "lstrcpyW" // unicode copy
function long WideCharToMultiByte(unsignedlong CodePage, unsignedlong dwFlags, ref string lpWideCharStr, long cchWideChar, ref string lpMultiByteStr, long cbMultiByte, ref string lpDefaultChar, ref boolean lpUsedDefaultChar) LIBRARY "Kernel32"
function long lstrlenW(ref string dest) Library "Kernel32" alias for "lstrlenW"
function long NetServerEnum(ref String servername, Long Level,ref long bufprt,long prefmaxlen,ref long entriesread,ref long totalentries,long servertype,ref string domain,long resume_handle) LIBRARY "NETAPI32.DLL"

//function ofconvertfromunicode long me 2 string parameters by ref
boolean lb_null
long ll_result, ll_sourcelen
string ls_null , ls_buffer

SetNull(lb_null)
SetNull(ls_null)

ll_sourcelen =lstrlenW(as_unicodesource) // the value returned is the length in WIDE characters i.e. actual length is double the reported length.
ll_sourcelen = ll_sourcelen + 2 // add two for the double terminating nulls

/* Find out how big the buffer should be. CP_ACP is a constant defined 0 (zero) */

ll_result = WideCharToMultiByte( 0, 0, as_unicodesource, ll_sourcelen, ls_buffer, 0, ls_null, lb_null); // supplying -1 indicates null terminated as_unicodesource. ll_buflen of 0 asks for len of unicode buffer without converting

if ll_result = 0 then // operation failed
return -1
end if

/* Prep buffer */

ls_buffer = space(ll_result + 1)

/* Convert it */

ll_result = WideCharToMultiByte( 0, 0, as_unicodesource, ll_sourcelen, ls_buffer, ll_result, ls_null, lb_null);

if ll_result = 0 then // operation failed
return -1
end if

as_result = ls_buffer

return ll_result // Copied OK, return length of unicode buffer.

//function ofgetuserinfostring string me 1 long parameter

String ls_UnicodeBuffer
String ls_retval

ls_UnicodeBuffer = space(512)

lstrcpyW(ls_UnicodeBuffer, al_memptr)

of_ConvertFromUnicode(ls_UnicodeBuffer, ls_retval)

return trim(ls_retval)

//bale ena button kai sto clicked vale
uint ret
string servername,domain
long level,bufrpt,prefmaxlen,entriesread,totalentries,servertype,resume_handle,i,original_buf,count,id,add_bytes

//wksta_user_info_1 wksta_buffer[]
wksta_user_info_1 wksta_buffer
SetNull(servername)
SetNull(domain)

ret=Netserverenum(servername, 100, bufrpt,-1,entriesread,totalentries,1,domain,0)

if ret <> 0 then
messagebox("Error","Error while retrieving workstation names")
else
messagebox("totalentries","Number of Workstations : " + string(totalentries))
original_buf=bufrpt
for i=1 to totalentries
count=0
RtlMoveMemoryWkStaUserInfo(wksta_buffer, bufrpt, 8)
is_username = of_GetUserInfoString(wksta_buffer.wkui1_logon_domain)
messagebox("info",is_username)
bufrpt=bufrpt+8
next
end if

ret = NetApiBufferFree(original_buf)

etoimos

Απάντηση

Επιστροφή στο “γλώσσες προγραμματισμού - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης