32 Bit -
Windows API Calls for PowerBuilder
Lists the
PowerBuilder syntax for calling Windows API functions. Also
included is the PowerBuilder script needed to make the
function calls.
32 Bit - Windows API Calls for
PowerBuilder The following
information lists the PowerBuilder syntax for calling
Windows API functions. Also included is the
PowerBuilder script needed to make the function call.
If you would like an example of these API calls the sample
pbl is located on the Powersoft FTP server. The
file can be downloaded from:
These API calls are only a subset of all the API
calls available. For a more complete listing of API
calls you can consult the windows SDK helpfile which is
named either win32.hlp or win32sdk.hlp(depending on what
compiler the SDK has been installed from). Technote
#44648 can assist you with the function declaration of the
API call from powerscript.
The following API calls are
referenced in this document:
Arc |
GetCurrentDirectoryA |
Mouse_Event |
Beep |
GetCurrentThread |
MoveToEx |
BringWindowToTop |
GetCursor |
MoveWindow |
Chord |
GetCursorPos |
Pie |
CloseHandle |
GetDC |
Polygon |
CloseWindow |
GetKeyboardState |
PostMessageA |
CopyFileA |
GetKeyState |
Rectangle |
CreateDirectoryA |
GetModuleHandleA |
ReleaseCapture |
DeleteFileA |
GetParent |
SetCapture |
DeleteMenu |
GetPixel |
SetComputerNameA |
DestroyWindow |
GetSystemTime |
SetCurrentDirectoryA |
DllRegisterServer |
GetSystemMenu |
SetCursorPos |
Ellipse |
GetSystemMetrics |
SetFocus |
ExitWindowsEx |
GetThreadPriority |
SetKeyboardState |
FatalExit |
GetUserNameA |
SetPixel |
FindWindowA |
GetWindowsDirectory |
Sleep |
FreeLibrary |
GlobalMemoryStatus |
SndPlaySoundA |
GetBkColor |
LineTo |
SwapMouseButton |
GetCapture |
LoadLibraryA |
WaveOutGetNumDevs |
GetComputerNameA |
mciSendStringA |
WinExec |
GetClassNameA |
MessageBoxA |
... |
ADDITIONS: |
GetVolumnInformationA |
... |
Arc( ) This
function draws an arc based on the coordinates the function
receives. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean Arc(ulong hwnd, long r1, long r2, long r3, long r4,
long a1, long a2, long a3, long a4) LIBRARY "Gdi32.dll"
Function ulong GetDC(ulong hwnd) library
"user32.dll"
Script: Boolean rtn
ulong l_handle, l_device long lv[8]
l_handle = handle(w_main) // 'w_main' is the
name of the sample window. l_device =
GetDC(l_handle) lv[ ] =
{10,40,300,220,0,0,180,0} rtn = Arc(l_device,
lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])
Beep( ) The
Beep function causes the system to make an internal beep
sound. This is identical to the PowerBuilder
function Beep( ).
Global External Function: FUNCTION
boolean Beep(long freq,long dur) LIBRARY "Kernel32.dll"
Script: Boolean rtn
Long ll_freq, ll_dur ll_freq = 500
ll_dur = 20 rtn = Beep(ll_freq,
ll_dur)
BringWindowToTop( )
The BringWindowToTop function sends a message to the
target window telling it to come to the
foreground. The PowerBuilder equivalent is limited
to PowerBuilder Windows only, the script is as follows:
<window > .bringtotop = true
Global External Function: FUNCTION
boolean BringWindowToTop(ulong w_handle) LIBRARY
"User32.dll"
Script: Boolean rtn
ulong l_handle l_handle =
handle(w_win2) rtn =
BringWindowToTop(l_handle)
Chord( ) A
Chord is a region bounded by the intersection of an ellipse
and a line segment. This function draws a chord
based on the coordinates the function receives. There
are no PowerBuilder equivalents.
Global External Function: FUNCTION
boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long
r1, long r2, long r3, long r4) LIBRARY "Gdi32.dll"
Script: boolean rtn
ulong l_handle, l_device long lv[8]
l_handle = handle(w_main) l_device =
GetDC(l_handle) // This can be done in one
line: i.e. l_device =
GetDC(handle(w_main)) lv[ ] =
{5,5,200,200,0,0,200,300} rtn = Chord(l_device,
lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])
CloseHandle( )
The CloseHandle function releases an open object
handle. The closest PowerBuilder equivalent is the
function Destroy, but it is only used with PowerBuilder
created objects.
Global External Function: FUNCTION
boolean CloseHandle(ulong w_handle) LIBRARY
"Kernel32.dll" FUNCTION ulong FindWindowA(ulong
classname,string windowname) LIBRARY "User32.dll"
Script: boolean rtn
ulong l_handle string ls_wname
ls_wname = "<Window Title>"
l_handle = FindWindowA(0, ls_wname) // Usually
you would already have the handle. rtn =
CloseHandle(l_handle)
CloseWindow( )
This function does not close a window as one might
think. CloseWindow minimizes the window that is
targeted. The closest PowerBuilder equivalent is the
WindowState command, but this is limited to PB windows
only. The syntax in PowerBuilder is as follows:
<window>.WindowState = Minimized!
Global External Function: FUNCTION
boolean CloseWindow(ulong w_handle) LIBRARY "User32.dll"
FUNCTION ulong FindWindowA(ulong classname,string
windowname) LIBRARY "User32.dll"
Script: boolean rtn
ulong l_handle string ls_wname
ls_wname = "<Window Title>"
l_handle = FindWindowA(0, ls_wname) // Be sure
to use the exact title of the window you are targeting.
rtn = CloseWindow(l_handle)
CopyFileA( )
This function copies a file by taking the source and
destination names as a string by reference. If the flag
is set to true the file will not overwrite an existing file,
if set to false it will overwrite an existing file.
There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean CopyFileA(ref string cfrom, ref string cto, boolean
flag) LIBRARY "Kernel32.dll"
Script: string l_from, l_to
boolean l_flag, rtn l_flag = false
l_from = "c:\program files\sybase\readme.txt"
l_to = "c:\new_readme.txt" rtn =
CopyFileA(l_from, l_to, l_flag)
MessageBox("CopyFile", string(rtn))
CreateDirectoryA( )
This function create a new directory folder under the
current directory.The second argument is exclusively used by
NT and can be ignored under Win95. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
boolean CreateDirectoryA(ref string pathname, int sa) LIBRARY
"Kernel32.dll"
Script: boolean rtn
string l_dir l_dir = "API Demo"
rtn = CreateDirectoryA(l_dir, 0) If rtn
then MessageBox("New Directory Created",
"API Demo directory is located under current directory.")
else MessageBox("CreateDirectory",
"Failed") end if
DeleteFileA( )
This function receives a string by reference
containing a fully path qualified filename and deletes that
file. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean DeleteFileA(ref string filename) LIBRARY
"Kernel32.dll"
Script: string l_file
boolean rtn l_file =
string("c:\test.txt") rtn =
DeleteFileA(l_file) MessageBox("DeleteFile",
string(rtn))
DeleteMenu( )
The DeleteMenu function deletes an item from the
specified menu. If the menu item opens a menu or
submenu, this function destroys the handle to the menu or
submenu and frees the memory used by the menu or submenu.
Global External Function: FUNCTION
boolean DeleteMenu(ulong mhand, uint upos, uint flag) LIBRARY
"user32.dll" FUNCTION boolean GetSystemMenu(ulong
mhandle, boolean flag) LIBRARY "user32.dll"
Script: ulong m_handle
boolean rtn m_handle =
handle(w_main) rtn =
GetSystemMenu(handle(w_main), false) // Need to get the handle
of the system menu first. rtn =
DeleteMenu(m_handle, 1, 0) // The second argument, the
'1', refers to the position in the menu.
Messagebox("Return Code", string(m_handle))
Messagebox("Return Code", string(rtn))
DestroyWindow( )
This function sends a destroy message to the targeted
window. The closest PowerBuilder equivalent is
Close(<window>), but this is limited to PB windows
only.
Global External Function: FUNCTION
boolean DestroyWindow(ulong w_handle) LIBRARY
"USER32.DLL"
Script: boolean rtn
ulong l_handle open(w_win2) // Open a
test window l_handle = handle(w_win2)
rtn = DestroyWindow(l_handle)
DllRegisterServer( )
This function triggers an OCX to self-register.
This function when called from the constructor event of an
application allows a PB application to dynamically register an
OCX on the machine it is run on. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
long DllRegisterServer() LIBRARY "c:\windows\ocxname.ocx"
Script: Long ll_rtn
ll_rtn = DllRegisterServer()
//Note: A return code of zero most likely
means the OCX is already registered.
Ellipse( ) An
Ellipse function draws a circular object based on the
coordinates the function receives. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2)
LIBRARY "Gdi32.dll" Function ulong GetDC(ulong
hwnd) library "user32.dll"
Script: Boolean rtn
ulong l_handle, l_device long lv[4]
l_handle = handle(w_main) l_device =
GetDC(l_handle) lv[ ] = {5,5,300,300}
rtn = Ellipse(l_device, lv[1], lv[2], lv[3],
lv[4])
ExitWindowsEx( )
This function sends a call to the Windows OS telling
it to shut down. This function is especially good for
increasing the security of your application. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
boolean ExitWindowsEx(uint dwReserved, uint uReserved) LIBRARY
"User32.dll"
Script: boolean rtn
rtn = ExitWindowsEx(0,0) // Zero's tell it to
shut down immediately.
FatalExit( )
This function abruptly stops an application from
running. As a result, nothing gets closed properly and
objects are left hanging in memory. This function will
produce a GPF the moment it is called and you will need to
reboot. FatalExit is meant to be used for debugging
purposes and is not recommended otherwise. There is no
PowerBuilder equivalent.
Global External Function:
SUBROUTINE FatalExit(int exitcode) LIBRARY
"Kernel32.dll"
Script: int rtn rtn =
MessageBox("This API call is suppose to produce a GPF!","Are
You Sure?", Exclamation!, YesNo!,2) If rtn = 1
Then MessageBox("Final Notice!","You
will have to reboot after this API call!")
FatalExit(1) End If
FindWindowA( )
This function gets the handle any window that is
called by name. A common pitfall is to make a call with
the window's save name rather than the name that appears in
the title bar, i.e. "Microsoft Word - api32.doc" . The
PowerBuilder equivalent is the function Handle( ), but it is
limited to PB windows only.
Global External Function: FUNCTION
ulong FindWindowA(ulong classname,string windowname) LIBRARY
"User32.dll"
Script: ulong l_handle
string ls_wname ls_wname = "<Window
Title>" // i.e. "File Manager" or "Numbers.txt -
NotePad" l_handle = FindWindowA(0, ls_wname)
FreeLibrary( )
This function releases a dll from active memory.
This function works in conjunction with LoadLibraryA( )
function. There is no PowerBuilder equivalent.
Warning: Unloading a dll that is being used will
cause a GPF.
Global External Function:
SUBROUTINE FreeLibrary(ulong libhandle) LIBRARY
"Kernel32.dll" FUNCTION ulong LoadLibraryA(string
modname) LIBRARY "Kernel32.dll"
Script: ulong modhandle //
This would usually be an instance variable
modhandle = LoadLibraryA("<32 bit dll
filename>") // This would usually be done in another
event. FreeLibrary(modhandle)
GetBkColor( )
This function returns the background color reference
number of the window targeted. The PowerBuilder
equivalent is as follows: ulong l_color
l_color = w_main.BackColor
Global External Function: FUNCTION
ulong GetBkColor (ulong hwnd) LIBRARY "Gdi32.dll"
Function ulong GetDC(ulong hwnd) library
"user32.dll"
Script: ulong l_handle, l_device,
l_color l_handle = handle(w_main)
l_device = GetDC(l_handle) l_color =
GetBkColor(l_device)
GetCapture( )
This function returns the handle of the window that
has captured the mouse. Keep in mind that the window
receives mouse input regardless of where the cursor is
positioned. This function, however, doesn't appear to do
anything at all. (Maybe you'll have more luck with
it.) There is no PowerBuilder equivalent.
Global External Function: FUNCTION
ulong GetCapture( ) LIBRARY "User32.dll"
Script: ulong l_handle
l_handle = GetCapture( )
GetComputerNameA( )
This function returns the computer's name into a
string by reference. Be sure to allocate enough space
for the string or you'll get a GPF when you exit
PowerBuilder. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean GetComputerNameA(ref string cname,ref long nbuf)
LIBRARY "Kernel32.dll"
Script: string ls_compname
long ll_buf ll_buf = 25
ls_compname = space(ll_buf)
GetComputerNameA(ls_compname, ll_buf)
MessageBox("Computer name is:", ls_compname)
GetClassNameA( )
This function returns the class name of any object or
window whose handle it receives. Be sure to allocate
enough space for the string or you'll get a GPF when you exit
PowerBuilder. There is no PowerBuilder equivalent to
this function.
Global External Function: Function
long GetClassNameA(ulong hwnd, ref string cname, int buf)
Library "User32.dll"
Script: string l_class
long rtn ulong l_handle
l_handle = handle(w_main) l_class =
space(50) rtn =
GetClassNameA(l_handle,l_class,50)
Messagebox("Classname", l_class)
GetCurrentDirectoryA(
) This function returns the current
working directory into a string by reference. Be sure to
allocate enough space for the string or you'll get a GPF when
you exit PowerBuilder. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
ulong GetCurrentDirectoryA(ulong BufferLen, ref string
currentdir) LIBRARY "Kernel32.dll"
Script: string ls_curdir
ulong l_buf l_buf = 100
ls_curdir = space(l_buf)
GetCurrentDirectoryA(l_buf, ls_curdir)
MessageBox("Current Directory:", ls_curdir)
GetCurrentThread( )
This function returns the current thread's
handle. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
ulong GetCurrentThread() LIBRARY "Kernel32.dll"
Script: ulong rtn rtn
= GetCurrentThread() MessageBox("Current Thread
Handle", string(rtn))
GetCursor( )
This function returns a handle of the
cursor. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
ulong GetCursor( ) LIBRARY "User32.dll"
Script: ulong l_cursor
l_cursor = GetCursor( )
GetCursorPos( ) &
SetCursorPos( ) This function returns
the x and y position of the cursor into a structure.
SetCursorPos moves the cursor to the coordinates it
receives. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean GetCursorPos(ref mousepos mousepos2) LIBRARY
"User32.dll" FUNCTION boolean SetCursorPos(int
cx, int cy) LIBRARY "User32.dll"
Structure: (Mousepos) long
xpos, long ypos
Script: mousepos mouseloc
GetCursorPos(mouseloc) Messagebox("Cursor
Position", "X = " + string(mouseloc.xpos) + " Y = " +
string(mouseloc.ypos)) SetCursorPos(300,350)
Messagebox("Cursor Position", "X = " +
string(mouseloc.xpos) + " Y = " +
string(mouseloc.ypos))
GetDC( ) This
function returns the device context of the targeted window's
handle that it receives. The device context is required
if you wish to perform any graphical function calls.
There is no PowerBuilder equivalent.
Global External Function: Function
ulong GetDC(ulong hwnd) library "user32.dll"
Script: ulong l_handle,
l_device l_handle = handle(w_main)
l_device = GetDC(l_handle)
MessageBox("Handle", string(l_device))
GetKeyboardState( ) &
SetKeyboardState( ) The first function
returns the present state of every key on the keyboard into an
array of 256 integers based on the characters ASCII
representation. The second function sets the keyboard to
the state given in the array. A zero value represents
that the key is not pressed. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
boolean GetKeyboardState(ref integer kbarray[256])
LIBRARY "USER32.DLL" FUNCTION boolean
SetKeyboardState(ref integer kbarray[256]) LIBRARY
"USER32.DLL" Function ulong GetDC(ulong hwnd)
library "user32.dll"
Script: //GetKeyboardState( )
boolean rtn integer ipkey[256]
rtn = GetKeyboardState(ipkey)
//SetKeyboardState( ) rtn =
SetKeyboardState(ipkey) if rtn = false then
Messagebox("Failed","Something went wrong when
loading into array") else
Messagebox("Successful","Keyboard state is
loaded back into buffer") end if
GetKeyState( )
This function returns the present state of a specific
key on the keyboard based on that key's ASCII
representation. A zero value represents that the key is
not pressed. There is no PowerBuilder equivalent.
Global External Function: Function
int GetKeyState(integer VirtualKeycode) Library
"User32.dll"
Script: int rtn rtn =
GetKeyState(65) // 65 = A if rtn = 0
then MessageBox("Key State","Letter 'A' not
pressed!") else
MessageBox("Key State","Letter 'A' is
pressed!") end if
GetModuleHandleA( )
This function returns the handle of a module or dll
that is in active memory. The function FreeLibrary works
directly with this function in releasing the dll from memory
based on the handle that this function returns. There is
no PowerBuilder equivalent.
Global External Function: Function
long GetModuleHandleA(string modname) Library
"Kernel32.dll"
Script: ulong rtn rtn
= GetModuleHandleA("User32.dll")
MessageBox("Return Code", string(rtn))
GetParent( )
This function receives the handle of a child and
returns the handle of its parent. The PowerBuilder function
'GetParent' is identical. The PB syntax is as
follows: objectname.GetParent( )
Global External Function: FUNCTION
ulong GetParent(ulong hwnd) LIBRARY "User32.dll"
Script: ulong l_handle, rtn
l_handle = handle(cb_getparent) // Command Button
name rtn = GetParent(l_handle)
Messagebox("GetParent", "Parent handle = " +
string(rtn) + " / Child handle = " + string(l_handle))
GetPixel( ) & SetPixel(
) The first function returns the color
of a specific pixel. The SetPixel function changes the
targeted pixel to the color sent. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
ulong GetPixel(ulong hwnd, long xpos, long ypos) LIBRARY
"Gdi32.dll" FUNCTION ulong SetPixel(ulong hwnd,
long xpos, long ypos, ulong pcol) LIBRARY "Gdi32.dll"
Script: long lx, ly
ulong rtn ulong l_handle, l_device
lx = 100 ly = 100 l_handle =
handle(w_main) l_device = GetDC(l_handle)
rtn = GetPixel(l_device, 100, 100)
MessageBox("Position " + string(lx) + "," +
string(ly),"Color = " + string(rtn))
SetPixel(l_device, lx, ly, 0) // This call will
set the pixel at lx, ly to black.
GetSystemMenu( )
This function allows the application to access the
system or window menu for copying and modifying. There
is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean GetSystemMenu(ulong mhandle, boolean flag) LIBRARY
"user32.dll"
Script: boolean flag, rtn
ulong l_handle l_handle =
handle(w_main) flag = false rtn =
GetSystemMenu(l_handle, flag) Messagebox("Return
Code", rtn)
GetSystemTime( )
This function returns the system time into a structure
by reference. There is no PowerBuilder
equivalent.
Global External Function:
SUBROUTINE GetSystemTime(ref systemtime systimeptr)
Library "Kernel32.dll"
Structure: (SystemTime) uint
year, uint month, uint dayofweek, uint
day, uint hour, uint minute, uint
second, uint millisecond
Script: systemtime s_systime
string l_day, l_date, l_time
GetSystemTime(s_systime) l_date =
string(s_systime.month) +"/"+ string(s_systime.day) &
+"/"+
string(s_systime.year) l_time =
string(s_systime.hour) +":"+ string(s_systime.minute)
& +":"+
string(s_systime.second) +":"+
string(s_systime.millisecond) CHOOSE CASE
s_systime.dayofweek CASE 1 l_day =
"Sunday" CASE 2 l_day =
"Monday" CASE 3 l_day =
"Tuesday" CASE 4 l_day =
"Wednesday" CASE 5 l_day =
"Thursday" CASE 6 l_day =
"Friday" CASE 7 l_day =
"Saturday" END CHOOSE
Messagebox("System Time:",l_date + " " +
l_day + " " + l_time)
GetThreadPriority( )
This function returns the priority level of a given
thread. The default value is zero and anything higher
would hold a higher priority thus receiving more CPU
time. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
int GetThreadPriority(ulong hthread) LIBRARY
"Kernel32.dll"
Script: ulong l_handle
integer rtn l_handle =
GetCurrentThread() rtn =
GetThreadPriority(l_handle) MessageBox("Current
Thread Priority", string(rtn))
GetSystemMetrics( )
This function will provide the current resolution in
pixels of the screen. It has been observed that this
particular function is cap sensitive. Be sure to exactly
declare the function as "GetSystemMetrics" and not
"getsystemmetrics". There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
int GetSystemMetrics(int indexnum) LIBRARY "user32.dll"
Script: int l_xx, l_yy
l_xx = GetSystemMetrics(0) l_yy =
GetSystemMetrics(1) Messagebox("Screen
Resolution", string(l_xx) + " , " + string(l_yy))
GetUserNameA( )
This function returns the current users logon
name. Be sure to allocate enough space for the string or
you'll get a GPF when you exit PowerBuilder. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
boolean GetUserNameA(ref string uname, ref ulong slength)
LIBRARY "ADVAPI32.DLL"
Script: string
ls_username string ls_var
ulong lu_val boolean rtn
lu_val = 255 ls_username = Space( 255
) rtn = GetUserNameA(ls_username, lu_val)
Messagebox("GetUserNameA", "Username = " +
string(ls_username))
GetVolumnInformationA(
) This function returns information
about the harddrive.
Global External Function: FUNCTION
boolean GetVolumeInformationA(ref string lpRootPathName,ref
string lpVolumeNameBuffer,ulong nVolumeNameSize,ref ulong
lpVolumeSerialNumber,ref ulong lpMaximumComponentLength,ref
ulong lpFileSystemFlags,ref string
lpFileSystemNameBuffer,ulong nFileSystemNameSize) Library
"kernel32.dll"
Script: boolean rtn
string lprootpathname = "c:" string
lpVolumeNameBuffer = space(256) ulong
nVolumeNameSize = 256 ulong
lpVolumeSerialNumber ulong
lpMaximumComponentLength
setnull(lpVolumeSerialNumber)
lpMaximumComponentLength = 256 ulong
lpFileSystemFlags setnull(lpFileSystemFlags)
string lpFileSystemNameBuffer = space(256)
ulong nFileSystemNameSize = 256
rtn = GetVolumeInformationA(lpRootPathName,
lpVolumeNameBuffer, nVolumeNameSize,&
lpVolumeSerialNumber, lpMaximumComponentLength,
lpFileSystemFlags,& lpFileSystemNameBuffer,
nFileSystemNameSize) sle_1.text =
lprootpathname sle_2.text =
lpVolumeNameBuffer sle_3.text =
string(nVolumeNameSize) sle_4.text =
string(lpVolumeSerialNumber) sle_5.text =
string(lpMaximumComponentLength) sle_6.text =
string(lpFileSystemFlags) sle_7.text =
string(lpFileSystemNameBuffer) sle_8.text =
string(nFileSystemNameSize)
GetWindowsDirectoryA(
) This function returns the default
windows directory into a string by reference. Be sure to
allocate enough space for the string or you'll get a GPF when
you exit PowerBuilder. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
ulong GetWindowsDirectoryA(ref string wdir, ulong buf) LIBRARY
"kernel32.dll"
Script: ulong l_buf
string windir l_buf = 144
windir = space(144)
GetWindowsDirectoryA(windir, l_buf)
MessageBox("Current Directory", windir)
GlobalMemoryStatus( )
This function returns all the information related to
the computers present memory into a structure by
reference. There is no PowerBuilder equivalent.
Global External Function:
SUBROUTINE GlobalMemoryStatus(ref memory mem2) LIBRARY
"Kernel32.dll"
Structure: (Memory) ulong
m_length, ulong m_loaded, ulong m_totalphys, ulong
m_availphys, ulong m_totalpagefile, ulong m_availpagefile,
ulong m_totalvirtual, ulong m_availvirtual
Script: memory sysmem
GlobalMemoryStatus(sysmem)
Messagebox("Memory Length",
string(sysmem.m_length)) Messagebox("Memory
Loaded", string(sysmem.m_loaded))
Messagebox("Total Physical Memory",
string(sysmem.m_totalphys)) Messagebox("Total
Available Memory", string(sysmem.m_availphys))
Messagebox("Total Page Size",
string(sysmem.m_totalpagefile))
Messagebox("Available Page Size",
string(sysmem.m_availpagefile)) Messagebox("Total
Virtual Memory", string(sysmem.m_totalvirtual))
Messagebox("Available Virtual Memory",
string(sysmem.m_availvirtual))
LoadLibraryA( )
This function loads a dll into active memory.
The function is limited to 32 bit dll's and there is no
PowerBuilder equivalent.
Global External Function: FUNCTION
ulong LoadLibraryA(string modname) LIBRARY "Kernel32.dll"
Script: ulong modhandle
modhandle = LoadLibraryA("c:\windows\mydll.dll")
// Pathing isn't necessary if dll is in dos search path.
If modhandle > 0 Then
MessageBox("Return Code", "Load Successful -> handle = " +
string(modhandle)) else
MessageBox("Result","Unable to load module") end
if
mciSendStringA( )
This function runs an AVI type file by making calls to
the library, "winmm.dll". This API call is very
complex and there is no PowerBuilder equivalent.
Global External Function: FUNCTION
long mciSendStringA(string cmd, REF string rtn, long size,
long wnd) LIBRARY "winmm.dll"
Script: string s_errortext
string filename filename =
"c:\winnt\clock.avi" mciSendStringA ("open
"+Filename+" type AVIVideo alias test wait",s_errortext,
0,0) mciSendStringA ("Window test handle " +
string(handle(w_main)) + " wait",s_errortext, 0, 0)
mciSendStringA ("Put test destination
wait",s_errortext, 0, 0) mciSendStringA ("Play
test wait", s_errortext, 0, 0) mciSendStringA
("Close test", s_errortext, 0, 0)
MessageBoxA( )
This function produces a messagebox. This
is identical to the PowerBuilder "messagebox" command.
Global External Function: FUNCTION
long MessageBoxA(ulong hwnd, ref string text, ref string
title, ulong style) LIBRARY "User32.dll"
Script: long rtn ulong
handle1, style1 string text1 string
title1 handle1 = handle(parent)
text1 = "This is an API Messagebox"
title1 = "API MessageBox" style1 = 0
rtn = MessageBoxA(handle1,text1,title1,style1)
Mouse_Event( )
This function has the ability of moving the mouse
pointer, activating the mouse buttons, and doing anything that
the user can do with the mouse. The sample script will
move the mouse 80 pixels left and 50 pixels up. The
structure is populated by the mouses previous position.
There is no PowerBuilder equivalent.
Global External Function:
SUBROUTINE Mouse_Event(ulong dwflag,ulong dx,ulong
dy,ulong cbutton,ulong dwextra) LIBRARY "User32.dll"
Structure: (Mousepos) long
xpos, long ypos
Script: int l_loop, lx, ly,
lflag mousepos mouseloc lx =
mouseloc.xpos ly = mouseloc.ypos
lflag = 1 //1 = do nothing, 7 = L-button
clicked, 25 = R-button clicked
mouse_event(lflag,-80,-50,0,0)
MoveToEx( ) & LineTo(
) The MoveToEx function moves the
cursor to the coordinates it receives and the previous
position is sent to a structure by reference. The LineTo
function draws a line from the present location of the cursor
to the coordinates it receives. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
boolean MoveToEx(ulong hwnd,long wx, long wy,ref prepos
prepos2) LIBRARY "Gdi32.dll" FUNCTION boolean
LineTo(ulong hwnd,long wx, long wy) LIBRARY "Gdi32.dll"
Function ulong GetDC(ulong hwnd) library
"user32.dll"
Structure: (Prepos) long
xpos, long ypos
Script: ulong l_handle,
l_device prepos previouspos l_handle
= handle(w_main) l_device = GetDC(l_handle)
MoveToEx(l_device,100,100,previouspos)
LineTo(l_device,200,200)
MoveWindow( )
This function moves and resizes the window based on
the coordinates it receives. This function has the same
effect as changing a windows X, Y, Height and Width properties
from within PowerBuilder.
Global External Function: FUNCTION
boolean MoveWindow(ulong whand,int wx,int wy,int ww,int
wh,boolean wflag) LIBRARY "user32.dll"
Script: boolean rtn
ulong l_handle, l_device l_handle =
handle(w_main) rtn =
MoveWindow(l_handle,10,10,100,100,true)
MessageBox("Return Code",string(rtn))
Pie( ) This
function draws a pie chart based on the coordinates the
function receives. There are no PowerBuilder
equivalents.
Global External Function: FUNCTION
boolean Pie(ulong hwnd,long x1,long y1,long x2,long y2,long
x3,long y3,long x4,long y4) LIBRARY "Gdi32.dll"
Function ulong GetDC(ulong hwnd) library
"user32.dll"
Script: Boolean rtn
ulong l_handle,l_device long lv[8]
lv[ ] = {10,50,290,220,0,0,80,0} l_handle
= handle(w_main) l_device =
GetDC(l_handle) rtn =
Pie(l_device,lv[1],lv[2],lv[3],lv[4],lv[5],lv[6],lv[7],lv[8])
Polygon( )
This function draws a polygon shape based on the
coordinates the function receives. There are no
PowerBuilder equivalents.
Global External Function: FUNCTION
boolean Polygon(ulong hdc, ref struct poly poly2, int cnt)
LIBRARY "Gdi32.dll" Function ulong GetDC(ulong
hwnd) library "user32.dll"
Structure: (Poly) long
xpos[5], long ypos[5] //The size of the array is
proportional to the number of sides in the Polygon.
Script: ulong l_handle,
l_device int pcnt l_handle =
handle(w_main) l_device = GetDC(l_handle)
pcnt = 5 poly poly3
poly3.xpos[ ] = {50,100,150,200,250}
poly3.ypos[ ] = {50,100,150,200,250}
Polygon(l_device,poly3,pcnt)
PostMessageA( )
This function posts a message (such as minimize or
close) in the message queue associated with the thread that
created the specified window and then returns without waiting
for that thread to process the message. There is no
PowerBuilder equivalent. For more information on the
codes associated with this function see the MSDN.
Global External Function: FUNCTION
boolean PostMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong
lParam) Library "User32.dll"
Script: ulong l_handle
boolean rtn l_handle =
handle(w_main) rtn =
PostMessageA(l_handle,274,61472,0) // 61472 =
minimize, 61488 = maximize, 61728 = normal state
Rectangle( )
This function draws a rectangle based on the
coordinates the function receives. There are no
PowerBuilder equivalents.
Global External Function: FUNCTION
boolean Rectangle(ulong hwnd,long x1,long y1,long x2,long y2)
LIBRARY "Gdi32.dll" Function ulong GetDC(ulong
hwnd) library "user32.dll"
Script: Boolean rtn
ulong l_handle,l_device long lv[4]
lv[ ] = { 10,10,275,215} l_handle =
handle(w_main) l_device =
GetDC(l_handle) rtn =
Rectangle(l_device,lv[1],lv[2],lv[3],lv[4])
SendMessageA( )
This function sends a message to the message queue
associated with the thread that created the specified window
and doesn't return until that message is processed. There is
no PowerBuilder equivalent.
Global External Function: FUNCTION
long SendMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong
lParam) Library "User32.dll"
Script: ulong l_handle
long rtn l_handle = handle(w_main)
rtn = SendMessageA(l_handle,274,61728,0)
SetCapture( ) &
ReleaseCapture( ) These functions
works directly with each other. The SetCapture
function locks control of the mouse until ReleaseCapture( ) is
called. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
ulong SetCapture(ulong a) LIBRARY "User32.dll"
FUNCTION boolean ReleaseCapture( ) LIBRARY
"User32.dll"
Script: boolean rtn
ulong l_loop, u_test, u_long u_test =
handle(parent) u_long = SetCapture(u_test)
SetPointer(SizeNWSE!) for l_loop = 1 to
150000 next rtn = ReleaseCapture(
)
SetComputerNameA( )
This function changes the computer's name to the
string it receives by reference. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
boolean SetComputerNameA(ref string cname) LIBRARY
"kernel32.dll"
Script: boolean rtn
string l_name l_name =
"PowerBuilder" rtn =
SetComputerNameA(l_name) if rtn then
MessageBox("Computer name changed to
'PowerBuilder'", "You'll need to reboot for it to take
effect") else
MessageBox("SetComputerName", "Failed") end
if
SetCurrentDirectoryA(
) This function changes the current
directory that the OS is pointing to. There is no
PowerBuilder equivalent.
Global External Function: FUNCTION
boolean SetCurrentDirectoryA(ref string cdir) LIBRARY
"kernel32.dll"
Script: boolean rtn
string l_dir l_dir = "c:\My
Documents" rtn = SetCurrentDirectoryA(l_dir)
MessageBox("SetCurrentDirectory", string(rtn))
SetFocus( )
This function changes the focus to the object or
window whose handle is given. The only PowerBuilder
equivalent is limited to PowerBuilder objects and the syntax
is as follows: <Object>.SetFocus( )
Global External Function:
SUBROUTINE SetFocus(long objhandle) LIBRARY
"User32.dll"
Script:
SetFocus(handle(sle_1)) // This function gets
the handle from PB.
SetThreadPriority( )
This function sets the priority level of a given
thread. The default value is zero and anything higher
would hold a higher priority thus receiving more CPU
time. Don't set the priority level too high or the mouse
won't work. There is no PowerBuilder equivalent.
Global External Function: FUNCTION
boolean SetThreadPriority(ulong hthread, int npriority)
LIBRARY "Kernel32.dll" FUNCTION ulong
GetCurrentThread() LIBRARY "Kernel32.dll"
Script: ulong l_handle
boolean rtn l_handle =
GetCurrentThread() rtn =
SetThreadPriority(l_handle, 2) // Set the priority of thread
higher. MessageBox("Current Thread Priority
Changed", string(rtn))
Sleep( ) This
function tells the OS to ignore the current thread for X
number of milliseconds. The screen will not be redrawn
while this API call is active. This is the same as
running a for-next loop from within PowerBuilder.
Global External Function:
SUBROUTINE Sleep(ulong milli) LIBRARY
"Kernel32.dll"
Script: ulong l_delay
l_delay = 2000 Sleep(l_delay)
SndPlaySoundA( ) &
WaveOutGetNumDevs() These functions
run a WAV file from within PowerBuilder. There is no PB
equivalent.
Global External Function: FUNCTION
boolean SndPlaySoundA(string wavfile, uint flag) LIBRARY
"WINMM.DLL" FUNCTION uint WaveOutGetNumDevs()
LIBRARY "WINMM.DLL"
Script: uint lui_NumDevs,
l_mode string ls_file l_mode =
0 ls_file =
string("c:\windows\media\chimes.wav") lui_NumDevs
= WaveOutGetNumDevs() IF lui_NumDevs > 0
THEN SndPlaySoundA(ls_file,
l_mode) END IF
SwapMouseButton( )
This function reverses the mouse buttons making the
right button the left and visaversa. The function needs
to be called again to return the mouse to a normal
state. This is a great API to use on a collegues
computer. There is no PowerBuilder
equivalent.
Global External Function: FUNCTION
boolean SwapMouseButton(boolean var) LIBRARY "User32.dll"
Script: boolean rtn, l_mouse
rtn = SwapMouseButton(l_mouse) If l_mouse
= true Then MessageBox("Change Made","Right
button on Left Side") Else
MessageBox("Change Made","Right button on Right
Side") End If
WinExec( )
This function sends a filename and path to the OS
triggering it to be run. The PB equivalent is the
function RUN. (i.e.
Run("c:\windows\calc.exe")
Global External Function: FUNCTION
uint WinExec(ref string filename, uint wstyle) LIBRARY
"kernel32.dll"
Script: string ls_filename
uint rtn, wstyle ls_filename =
"c:\windows\calc.exe" wstyle = 1 rtn
= WinExec(ls_filename, wstyle) Messagebox("Return
Code", string(rtn)) |