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:
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 =
"
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:
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 =
"
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 filessybasereadme.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(
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:windowsocxname.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 = "
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:windowsmydll.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:winntclock.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
<
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/32036/viewspace-442591/ ,如需转载,请注明出处,否则将追究法律责任。