Get the IP addressTag(s): WinAPI/Registry
PB 9 or less
[Structure] str_wsadata unsignedinteger version unsignedinteger highversion character description[257] character systemstatus[129] nsignedinteger maxsockets unsignedinteger maxupddg string vendorinfo [External function] function int WSAStartup (uint UIVerionrequested, ref str_wsadata lpWSAdata) library "wsock32.DLL" function int WSACleanup() library "wsock32.DLL" function int WSAGetLastError() library "wsock32.DLL" function int gethostname(ref string name, int namelen) library "wsock32.DLL" function string GetHost(string lpszhost,ref blob lpszaddress) library "pbws32.dll" [Powerscript] String ls_ip, ls_host Blob{4} lb_host Integer li_version, li_rc str_wsadata lstr_wsadata ls_host = Space(128) li_version = 257 If WSAStartup(li_version, lstr_wsadata) = 0 Then If GetHostName(ls_host, Len(ls_host)) < 0 Then li_rc = WSAGetLastError() Else GetHost(ls_host, lb_host) ls_ip = String(Asc(String(BlobMid(lb_host, 1, 1)))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 2, 1)))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 3, 1)))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 4, 1)))) li_rc = 0 End If MessageBox("My IP", ls_ip) Else li_rc = WSAGetLastError() End If WSACleanup()
PB10 or more.
Small fixes are required since Powerbuilder is now unicode-based and the API used are ANSI-based.
[Structure] ... same ... [External function] function int WSAStartup (uint UIVerionrequested, ref str_wsadata lpWSAdata) & library "wsock32.DLL" alias for "WSAStartup;ansi" function int WSACleanup() library "wsock32.DLL" function int WSAGetLastError() library "wsock32.DLL" function int gethostname(ref string name, int namelen) & library "wsock32.DLL" alias for "gethostname;Ansi" function string GetHost(string lpszhost,ref blob lpszaddress) & library "pbws32.dll" alias for "GetHost;Ansi" [Powerscript] ... ls_ip = String(Asc(String(BlobMid(lb_host, 1, 1),Encodingansi!))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 2, 1),Encodingansi!))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 3, 1),Encodingansi!))) + "." ls_ip += String(Asc(String(BlobMid(lb_host, 4, 1),Encodingansi!))) ...
If you have a valid Visual Studio installation, you have a special ActiveX that can be used. Drop on a window the OLE control called "Microsoft Winsock Control (MSWINSCK.OCX)" and then from Powerscript :
String ls_ip ls_ip = ole_1.object.LocalIP MESSAGEBOX("IP", LS_IP)
To get the IP address from a PB component hosted by EAServer, see this HowTo
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com