• Windows 60个常用API


    A Windows API 调用
    本列出了PowerBuilder 常用Windows API 系统调用同时给出了这些函数的功能
    说明方式以及应用示例下表首先给出常用API 调用的名称和扼要功能读者需要详细了
    解某个函数的声明格式和示例时可通过序号在本中找到相应说明
    表A Windows API 系统
    序号 函数 功能
    1 Arc() 在窗口上画一条弧线
    2 Beep() 让计算机按指定的频率和周期发声
    3 BringWindowToTop() 将窗口放置在最前面
    4 Chord() 绘制弦图
    5 CloseHandle() 释放打开对象的句柄
    6 CloseWindow() 最小化窗口
    7 DeleteFileA() 删除文件
    8 DeleteMenu() 删除指定菜单的菜单项
    9 DestroyWindow() 关闭窗口
    10 DllRegisterServer() 触发OCX 控件完成自注册过程
    11 Ellipse() 绘制椭圆
    12 ExitWindowsEx() 通知Windows 关闭操作系统
    13 FatalExit() 立即退出应用程序
    14 FindWindowA() 根据窗口标题查找窗口
    15 FreeLibrary() 从活动内存中卸载一个DLL
    16 GetBkColor() 得到指定窗口的背景颜色
    17 GetCapture() 得到鼠标所在窗口的句柄
    18 GetComputerNameA() 得到执行应用程序的计算机的名称
    19 GetClassNameA() 得到指定窗口或对象的类名
    20 GetCurrentDirectoryA() 得到当前工作目录
    21 GetCurrentThread() 得到当前线程的句柄
    22 GetCursor() 得到光标的句柄
    23 GetCursorPos() 得到光标的位置
    24 GetDC() 得到指定窗口的设备上下文
    25 GetKeyboardState() 得到键盘的状态
    26 GetKeyState() 得到键盘上指定按键的状态
    27 GetModuleHandleA() 得到活动内存中指定模块或动态链接库的句柄
    28 GetPixel() 得到窗口上指定像素的颜色
    29 GetSystemMenu() 得到系统菜单或窗口菜单的句柄
    30 GetSystemTime() 得到系统时间并存放到一个结构中
    31 GetThreadPriority() 得到指定线程的优先级
    32 GetSystemMetrics() 得到屏幕的解析度以像素为单位
    33 GetUserNameA() 得到当前用户的登录名称
    34 GetVolumnInformationA() 得到硬盘的参数信息
    35 GetWindowsDirectoryA() 得到缺省的Windows 目录
    36 GlobalMemoryStatus() 得到内存的详细信息
    37 LineTo() 从当前位置到指定位置绘制一条直线
    38 LoadLibraryA() 将32 位DLL 加载到活动内存中
    39 mciSendStringA() 控制和播放.AVI 文件
    40 MessageBoxA() 显示一个消息对话框
    41 Mouse_Event() 控制和操作鼠标
    42 MoveToEx() 将光标移动到指定位置同时保存移动前的光标位置
    43 MoveWindow() 移动放大或缩小窗口
    44 Pie() 绘制饼图
    45 Polygon() 绘制多边形
    46 PostMessageA() 向创建指定窗口的线索发送一条消息但不等待线索处理该消息
    47 Rectangle() 绘制矩形
    48 ReleaseCapture() 解锁鼠标
    49 SendMessageA() 向创建指定窗口的线索发送一条消息但等待线索处理该消息
    50 SetCapture() 锁定鼠标
    51 SetComputerNameA() 修改计算机的名称
    52 SetCurrentDirectoryA() 设置当前目录
    53 SetCursorPos() 设置光标的位置
    54 SetFocus() 将输入焦点设置到指定对象或窗口上
    55 SetKeyboardState() 设置键盘的状态
    56 SetPixel() 设置窗口上指定像素的颜色
    57 SetThreadPriority() 设置线程的优先级
    58 Sleep() 睡眠指定的时间
    59 SndPlaySoundA()
    WaveOutGetNumDevs()
    播放.WAV 文件
    60 SwapMouseButton() 交换鼠标的左右按钮
    61 WinExec() 运行指定的可执行文件
    使用这些函数时首先将它们声明为外部全局函数然后在脚本中调用在下面的所
    有声明格式中声明都应该在一行内书写由于排版原因本书可能分写在多行上需
    要注意的是所有引用类参数由关键字Ref 指明在传递之前都必须分配足够的内存
    否则可能引发GPF 错误参看函数GetComputerNameA()的说明下面分别介绍这些函

    1 Arc()
    功能在窗口上画一条弧线
    声明格式FUNCTION boolean Arc(ulong hwnd,long r1,long r2,long r3,long r4,long a1,
    long a2,long a3,long a4) LIBRARY "Gdi32.dll"
    示例 Boolean rtn
    ulong l_handle, l_device
    long lv[8]
    l_handle = handle(w_main) // w_main 是一个示例窗口
    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])
    2 Beep()
    功能让计算机按指定的频率和周期发声
    声明格式FUNCTION boolean Beep(long freq,long dur) LIBRARY "Kernel32.dll"
    示例 Boolean rtn
    Long ll_freq, ll_dur
    ll_freq = 500
    ll_dur = 20
    rtn = Beep(ll_freq, ll_dur)
    3 BringWindowToTop()
    功能将窗口放置在最前面
    声明格式FUNCTION boolean BringWindowToTop(ulong w_handle) LIBRARY
    "User32.dll"
    示例 Boolean rtn
    ulong l_handle
    l_handle = handle(w_win2) //得到窗口的句柄
    rtn = BringWindowToTop(l_handle)
    4 Chord()
    功能绘制弦图弦图由椭圆的一部分和一个线段组成
    声明格式FUNCTION boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long r1,
    long r2, long r3, long r4) LIBRARY "Gdi32.dll"
    示例 boolean rtn
    ulong l_handle, l_device
    long lv[8]
    l_handle = handle(w_main)
    l_device = GetDC(l_handle)
    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])
    5 CloseHandle()
    功能释放打开对象的句柄
    声明格式FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"
    示例 boolean rtn
    ulong l_handle
    rtn = CloseHandle(l_handle) //l_handle 为窗口或对象的句柄
    6 CloseWindow()
    功能最小化窗口
    声明格式FUNCTION boolean CloseWindow(ulong w_handle) LIBRARY "User32.dll"
    示例 boolean rtn
    ulong l_handle
    string ls_wname
    ls_wname = "<窗口标题>" //请替换为要最小化的窗口的准确标题
    l_handle = FindWindowA(0, ls_wname) //由窗口标题找到窗口句柄
    rtn = CloseWindow(l_handle)
    7 DeleteFileA()
    功能删除文件
    声明格式FUNCTION boolean DeleteFileA(ref string filename) LIBRARY "Kernel32.dll"
    示例 下例中用户在单行编辑框中输入一个文件名后代码将该文件删除
    string l_file
    boolean rtn
    l_file = string(sle_deletefile.text)
    rtn = DeleteFileA(l_file)
    MessageBox("删除文件", string(rtn))
    8 DeleteMenu()
    功能删除指定菜单的菜单项如果该菜单项下还有子菜单则函数删除指向子菜单
    的句柄并释放子菜单所占用的内存
    声明格式FUNCTION boolean DeleteMenu(ulong mhand, uint upos, uint flag) LIBRARY
    "user32.dll"
    示例 ulong m_handle
    boolean rtn
    m_handle = GetSystemMenu(handle(w_main), false) // 首先得到系统菜单的句柄
    rtn = DeleteMenu(m_handle, 1, 0) // 第二个参数这里为1 指定要删除菜
    //单项在菜单中的位置
    Messagebox("菜单句柄", string(m_handle))
    Messagebox("菜单删除结果", string(rtn))
    9 DestroyWindow()
    功能关闭窗口该函数向指定窗口发送一条删除窗口的消息
    声明格式FUNCTION boolean DestroyWindow(ulong w_handle) LIBRARY
    "USER32.DLL"
    示例 boolean rtn
    ulong l_handle
    open(w_win2) // 打开一个测试窗口
    l_handle = handle(w_win2) //得到窗口的句柄
    rtn = DestroyWindow(l_handle) //关闭窗口
    10 DllRegisterServer()
    功能触发OCX 控件完成自注册过程实际使用时将声明格式中ocxname 替换为
    真实的OCX 的名称
    声明格式FUNCTION long DllRegisterServer() LIBRARY "c:\windows\ocxname.ocx"
    示例 Long ll_rtn
    ll_rtn = DllRegisterServer() //通常返回0 表示OCX 已经注册
    11 Ellipse()
    功能绘制椭圆
    声明格式FUNCTION boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2)
    LIBRARY "Gdi32.dll"
    示例 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])
    12 ExitWindowsEx()
    功能通知Windows 关闭操作系统
    声明格式FUNCTION boolean ExitWindowsEx(uint dwReserved, uint uReserved)
    LIBRARY "User32.dll"
    示例 boolean rtn
    rtn = ExitWindowsEx(0,0) // 两个参数0 告诉Windows 立即关闭系统
    13 FatalExit()
    功能立即退出应用程序不做任何清理工作各种对象依然保留在内存中调用该
    函数时通常会导致GPF 错误一般在调试应用程序时使用
    声明格式SUBROUTINE FatalExit(int exitcode) LIBRARY "Kernel32.dll"
    示例 int rtn
    rtn = MessageBox("该API 调用将产生GPF 错误!","一定要做吗", Exclamation!, YesNo!,2)
    If rtn = 1 Then
    MessageBox("再次警告!","执行该API 调用后必须重新启动系统")
    FatalExit(1)
    End If
    14 FindWindowA()
    功能根据窗口标题查找窗口
    声明格式FUNCTION ulong FindWindowA(ulong classname,string windowname)
    LIBRARY "User32.dll"
    示例 ulong l_handle
    string ls_wname
    ls_wname = "<窗口标题>" //比如无标题 - 记事本
    l_handle = FindWindowA(0, ls_wname)
    15 FreeLibrary()
    功能从活动内存中卸载一个DLL 警告卸载正在使用的DLL 时将引发GPF
    声明格式SUBROUTINE FreeLibrary(ulong libhandle) LIBRARY "Kernel32.dll"
    示例 ulong modhandle
    modhandle = LoadLibrary("<32 位dll 文件名>") //通常在另一个事件过程中加载库
    FreeLibrary(modhandle)
    16 GetBkColor()
    功能得到指定窗口的背景颜色
    声明格式FUNCTION ulong GetBkColor (ulong hwnd) LIBRARY "Gdi32.dll"
    示例 ulong l_handle, l_device, l_color
    l_handle = handle(w_main)
    l_device = GetDC(l_handle) //得到设备上下文
    l_color = GetBkColor(l_device) //得到背景颜色
    17 GetCapture()
    功能得到鼠标所在窗口的句柄
    声明格式FUNCTION ulong GetCapture( ) LIBRARY "User32.dll"
    示例 ulong l_handle
    l_handle = GetCapture( )
    18 GetComputerNameA()
    功能得到执行应用程序的计算机的名称需要注意的是名称参数cname 必须分配
    足够的内存否则在退出应用程序时可能会引发GPF 错误实际上所有外部函数的引用
    类参数都必须分配足够的内存
    声明格式FUNCTION boolean GetComputerNameA(ref string cname,ref long nbuf)
    LIBRARY "Kernel32.dll"
    示例 string ls_compname
    long ll_buf
    ll_buf = 25 //设置cname 参数的长度
    ls_compname = space(ll_buf) //为ls_compname 参数分配空间
    GetComputerNameA(ls_compname, ll_buf)
    MessageBox("计算机名称", ls_compname)
    19 GetClassNameA()
    功能得到指定窗口或对象的类名
    声明格式Function long GetClassNameA(ulong hwnd, ref string cname, int buf) Library
    "User32.dll"
    示例 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("类名", l_class)
    20 GetCurrentDirectoryA()
    功能得到当前工作目录
    声明格式FUNCTION ulong GetCurrentDirectoryA(ulong BufferLen, ref string currentdir)
    LIBRARY "Kernel32.dll"
    示例 string ls_curdir
    ulong l_buf
    l_buf = 100
    ls_curdir = space(l_buf) //为参数分配空间
    GetCurrentDirectoryA(l_buf, ls_curdir)
    MessageBox("当前目录", ls_curdir)
    21 GetCurrentThread()
    功能得到当前线程的句柄
    声明格式FUNCTION ulong GetCurrentThread() LIBRARY "Kernel32.dll"
    示例 ulong rtn
    rtn = GetCurrentThread()
    MessageBox("当前线程句柄", string(rtn))
    22 GetCursor()
    功能得到光标的句柄
    声明格式FUNCTION ulong GetCursor( ) LIBRARY "User32.dll8
    示例 ulong l_cursor
    l_cursor = GetCursor( )
    23 GetCursorPos()
    功能得到光标的位置参数mousepos 是一个结构它包括两个分量long xpos, long
    ypos
    声明格式FUNCTION boolean GetCursorPos(ref mousepos) LIBRARY "User32.dll"
    示例 mousepos mouseloc
    GetCursorPos(mouseloc)
    Messagebox("光标位置", "X="+string(mouseloc.xpos)+"Y="+string(mouseloc.ypos))
    24 GetDC()
    功能得到指定窗口的设备上下文如果想执行图形外部函数调用必须得到设备上
    下文
    声明格式Function ulong GetDC(ulong hwnd) library "user32.dll"
    示例 ulong l_handle, l_device
    l_handle = handle(w_main)
    l_device = GetDC(l_handle)
    MessageBox("设备上下文", string(l_device))
    25 GetKeyboardState()
    功能得到键盘的状态该函数按照字符的ASCII 码表示将键盘上每个键的状态保
    存到包含256 个整数元素的数组中值0 表示相应键没有被按下
    声明格式FUNCTION boolean GetKeyboardState(ref integer kbarray[256]) LIBRARY
    "USER32.DLL"
    示例 boolean rtn
    integer ipkey[256]
    rtn = GetKeyboardState(ipkey)
    26 GetKeyState()
    功能得到键盘上指定按键的状态值0 表示相应键没有被按下
    声明格式Function int GetKeyState(integer VirtualKeycode) Library "User32.dll"
    示例 int rtn
    rtn = GetKeyState(65) // 65 = A
    if rtn = 0 then
    MessageBox("按键状态","字母A 没有按下")
    else
    MessageBox("按键状态","字母A 被按下")
    end if
    27 GetModuleHandleA()
    功能得到活动内存中指定模块或动态链接库的句柄可以使用FreeLibrary()函数释
    放该函数得到其句柄的模块或动态链接库
    声明格式Function long GetModuleHandleA(string modname) Library "Kernel32.dll"
    示例 ulong rtn
    rtn = GetModuleHandleA("User32.dll")
    MessageBox("返回代码", string(rtn))
    28 GetPixel()
    功能得到窗口上指定像素的颜色
    声明格式FUNCTION ulong GetPixel(ulong hwnd, long xpos, long ypos) LIBRARY
    "Gdi32.dll"
    示例 请参看SetPixel()函数
    29 GetSystemMenu()
    功能得到系统菜单或窗口菜单的句柄
    声明格式FUNCTION boolean GetSystemMenu(ulong mhandle, boolean flag) LIBRARY
    "user32.dll"
    示例 boolean flag
    ulong l_handle, m_handle
    l_handle = handle(w_main)
    flag = false
    m_handle = GetSystemMenu(l_handle, flag)
    Messagebox("返回值", string(m_handle))
    30 GetSystemTime()
    功能得到系统时间并存放到一个结构中SystemTime 结构的分量为uint year
    uint month uint dayofweek uint day uint hour uint minute uint second uint millisecond
    声明格式SUBROUTINE GetSystemTime(ref systemtime systimeptr) Library
    "Kernel32.dll"
    示例 systemtime s_systime
    string l_day, l_date, l_time
    GetSystemTime(s_systime)
    l_date = string(s_systime.year) +"/"+ string(s_systime.day) &
    +"/"+string(s_systime.month) //日期年/月/日
    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 = "星期日"
    CASE 2
    l_day = "星期一"
    CASE 3
    l_day = "星期二"
    CASE 4
    l_day = "星期三"
    CASE 5
    l_day = "星期四"
    CASE 6
    l_day = "星期五"
    CASE 7
    l_day = "星期六"
    END CHOOSE
    Messagebox("系统时间",l_date + " " + l_day + " " + l_time)
    31 GetThreadPriority()
    功能得到指定线程的优先级线程的缺省优先级为0 大于0 的值优先级更高因
    而线程将得到更多的CPU 时间
    声明格式FUNCTION int GetThreadPriority(ulong hthread) LIBRARY "Kernel32.dll"
    示例 ulong l_handle
    integer rtn
    l_handle = GetCurrentThread()
    rtn = GetThreadPriority(l_handle)
    MessageBox("当前线程的优先级", string(rtn))
    32 GetSystemMetrics()
    功能得到屏幕的解析度以像素为单位请注意该函数区分大小写函数名称要
    严格按照书上的式样书写
    声明格式FUNCTION int GetSystemMetrics(int indexnum) LIBRARY "user32.dll"
    示例 int l_xx, l_yy
    l_xx = GetSystemMetrics(0) //得到X 方向解析度
    l_yy = GetSystemMetrics(1) //得到Y 方向解析度
    Messagebox("屏幕解析度", string(l_xx) + " , " + string(l_yy))
    33 GetUserNameA()
    功能得到当前用户的登录名称
    声明格式FUNCTION boolean GetUserNameA(ref string uname, ref ulong slength)
    LIBRARY "ADVAPI32.DLL"
    示例 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", "用户名为" + string(ls_username))
    34 GetVolumnInformationA()
    功能得到硬盘的参数信息
    声明格式FUNCTION boolean GetVolumeInformation(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"
    示例 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)
    35 GetWindowsDirectoryA()
    功能得到缺省的Windows 目录
    声明格式FUNCTION ulong GetWindowsDirectoryA(ref string wdir, ulong buf)
    LIBRARY "kernel32.dll"
    示例 ulong l_buf
    string windir
    l_buf = 144
    windir = space(144)
    GetWindowsDirectoryA(windir, l_buf)
    MessageBox("当前目录", windir)
    36 GlobalMemoryStatus()
    功能得到内存的详细信息该函数使用的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
    声明格式SUBROUTINE GlobalMemoryStatus(ref memory mem2) LIBRARY
    "Kernel32.dll"
    示例 memory sysmem
    GlobalMemoryStatus(sysmem)
    Messagebox("内存大小", string(sysmem.m_length))
    Messagebox("已加载内存", string(sysmem.m_loaded))
    Messagebox("总的物理内存", string(sysmem.m_totalphys))
    Messagebox("总的可用内存", string(sysmem.m_availphys))
    Messagebox("总的页面数", string(sysmem.m_totalpagefile))
    Messagebox("可用页面数", string(sysmem.m_availpagefile))
    Messagebox("总的虚拟内存", string(sysmem.m_totalvirtual))
    Messagebox("可用虚拟内存", string(sysmem.m_availvirtual))
    37 LineTo()
    功能从当前位置到指定位置绘制一条直线
    声明格式FUNCTION boolean LineTo(ulong hwnd,long wx, long wy) LIBRARY
    "Gdi32.dll"
    示例 请参看MoveToEx()函数
    38 LoadLibraryA()
    功能将32 位DLL 加载到活动内存中
    声明格式FUNCTION ulong LoadLibraryA(string modname) LIBRARY "Kernel32.dll"
    示例 ulong modhandle
    //当DLL 库在DOS 搜索路径上时可以不指定路径
    modhandle = LoadLibraryA("c:\windows\mydll.dll")
    If modhandle > 0 Then
    MessageBox("返回值", "加载成功句柄 = " + string(modhandle))
    else
    MessageBox("函数执行结果","不能加载指定模块")
    end if
    39 mciSendStringA()
    功能控制和播放.AVI 文件
    声明格式FUNCTION long mciSendStringA(string cmd, REF string rtn, long size, long
    wnd) LIBRARY "winmm.dll"
    示例 string s_errortext
    string filename
    filename ="c:\spin.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)
    40 MessageBoxA()
    功能显示一个消息对话框
    声明格式FUNCTION long MessageBoxA(ulong hwnd, ref string text, ref string title,
    ulong style) LIBRARY "User32.dll"
    示例 long rtn
    ulong handle1, style1
    string text1
    string title1
    handle1 = handle(parent)
    text1 = "这是一个API Messagebox"
    title1 = "API MessageBox"
    style1 = 0
    rtn = MessageBoxA(handle1,text1,title1,style1)
    41 Mouse_Event()
    功能控制和操作鼠标该函数能够移动鼠标指针按下鼠标按钮并且能够完成用
    户使用鼠标能够完成的一切任务下面的示例将鼠标指针左移100 个像素上移70 个像素
    声明格式SUBROUTINE Mouse_Event(ulong dwflag,ulong dx,ulong dy,ulong
    cbutton,ulong dwextra) LIBRARY "User32.dll"
    示例 int lflag
    lflag = 1 //1 = 移动鼠标指针, 7 = 按下左按钮, 25 = 按下右按钮
    mouse_event(lflag,-80,-50,0,0)
    42 MoveToEx()
    功能将光标移动到指定位置同时保存移动前的光标位置函数使用的prepos 结构
    包含下述分量long xpos, long ypos
    声明格式FUNCTION boolean MoveToEx(ulong hwnd,long wx, long wy,ref prepos
    prepos2) LIBRARY "Gdi32.dll"
    示例 ulong l_handle, l_device
    prepos previouspos //用于保存光标移动前的位置
    l_handle = handle(w_main)
    l_device = GetDC(l_handle)
    MoveToEx(l_device,200,200,previouspos) //将光标移动到200,200 处
    LineTo(l_device,300,300) //在当前位置和300,300 之间画一条直线
    43 MoveWindow()
    功能移动放大或缩小窗口
    声明格式FUNCTION boolean MoveWindow(ulong whand,int wx,int wy,int ww,int
    wh,boolean wflag) LIBRARY "user32.dll"
    示例 boolean rtn
    ulong l_handle, l_device
    l_handle = handle(w_main)
    //10-X 位置20-Y 位置100-宽度200-高度
    rtn = MoveWindow(l_handle,10,20,100,200,true)
    MessageBox("返回值",string(rtn))
    44 Pie()
    功能绘制饼图
    声明格式FUNCTION boolean Pie(ulong hwnd,long x1,long y1,long x2,long y2,long
    x3,long y3,long x4,long y4) LIBRARY "Gdi32.dll"
    示例 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])
    45 Polygon()
    功能绘制多边形该函数使用的结构poly 包含下述分量long xpos[5], long ypos[5]
    数组的大小与多边形边的条数相关示例中边的条数为5
    声明格式FUNCTION boolean Polygon(hdc, ref struct poly poly2, int cnt) LIBRARY
    "Gdi32.dll"
    示例 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)
    46 PostMessageA()
    功能向创建指定窗口的线索发送一条消息但不等待线索处理该消息
    声明格式FUNCTION boolean PostMessageA(ulong hwndle,UINT wmsg,ulong
    wParam,ulong lParam) Library "User32.dll"
    示例 ulong l_handle
    boolean rtn
    l_handle = handle(w_main)
    // 61472 = 最小化窗口61488 = 最大化窗口61728 = 正常窗口
    rtn = PostMessageA(l_handle,274,61472,0)
    47 Rectangle()
    功能绘制矩形
    声明格式FUNCTION boolean Rectangle(ulong hwnd,long x1,long y1,long x2,long y2)
    LIBRARY "Gdi32.dll"
    示例 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])
    48 ReleaseCapture()
    功能解锁鼠标
    声明格式FUNCTION boolean ReleaseCapture( ) LIBRARY "User32.dll"
    示例 请参看SetCapture()函数
    49 SendMessageA()
    功能向创建指定窗口的线索发送一条消息但等待线索处理该消息
    声明格式FUNCTION long SendMessageA(ulong hwndle,UINT wmsg,ulong
    wParam,ulong lParam) Library "User32.dll"
    示例 ulong l_handle
    long rtn
    l_handle = handle(w_main)
    rtn = SendMessageA(l_handle,274,61728,0)
    50 SetCapture()
    功能锁定鼠标鼠标锁定后使用ReleaseCapture()解锁鼠标
    声明格式FUNCTION ulong SetCapture(ulong a) LIBRARY "User32.dll"
    示例 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( ) //解锁鼠标
    51 SetComputerNameA()
    功能修改计算机的名称
    声明格式FUNCTION boolean SetComputerNameA(ref string cname) LIBRARY
    "kernel32.dll"
    示例 boolean rtn
    string l_name
    l_name = "ZCF 计算机"
    rtn = SetComputerNameA(l_name)
    if rtn then
    MessageBox("计算机的名称已经修改为ZCF 计算机", &
    "重新启动计算机后该名称发挥作用")
    else
    MessageBox("设置计算机名称", "咳失败了")
    end if
    52 SetCurrentDirectoryA()
    功能设置当前目录
    声明格式FUNCTION boolean SetCurrentDirectoryA(ref string cdir) LIBRARY
    "kernel32.dll"
    示例 boolean rtn
    string l_dir
    l_dir = "C:\My Documents"
    rtn = SetCurrentDirectoryA(l_dir)
    MessageBox("SetCurrentDirectory", string(rtn))
    53 SetCursorPos()
    功能设置光标的位置
    声明格式FUNCTION boolean SetCursorPos(int cx, int cy) LIBRARY "User32.dll"
    示例 SetCursorPos(300,350)
    Messagebox("光标位置","X =" +string(mouseloc.xpos) + "Y =" &
    + string(mouseloc.ypos))
    54 SetFocus()
    功能将输入焦点设置到指定对象或窗口上.
    声明格式SUBROUTINE SetFocus(long objhandle) LIBRARY "User32.dll"
    示例 SetFocus(handle(sle_1)) // handle 函数得到单行编辑框控件sle_1 的句柄
    55 SetKeyboardState()
    功能设置键盘的状态值0 表示相应键没有被按下
    声明格式FUNCTION boolean SetKeyboardState(ref integer kbarray[256]) LIBRARY
    "USER32.DLL"
    示例 boolean rtn
    rtn = SetKeyboardState(ipkey)
    if rtn = false then
    Messagebox("操作失败","加载键盘状态时出错")
    else
    Messagebox("操作成功","成功完成键盘状态加载工作")
    end if
    56 SetPixel()
    功能设置窗口上指定像素的颜色
    声明格式FUNCTION ulong SetPixel(ulong hwnd, long xpos, long ypos, ulong pcol)
    LIBRARY "Gdi32.dll"
    示例 long lx, ly
    ulong rtn
    ulong l_handle, l_device
    lx = 200
    ly = 200
    l_handle = handle(w_main)
    l_device = GetDC(l_handle) //得到设备上下文
    rtn = GetPixel(l_device, lx, ly) //得到指定位置的像素颜色
    MessageBox("颜色","位置x="+string(lx)+",y="+ string(ly)+"的颜色值="+ string(rtn))
    SetPixel(l_device, lx, ly, 0) //将指定位置像素的颜色设置为黑色0
    57 SetThreadPriority()
    功能设置线程的优先级线程的缺省优先级为0 大于0 的优先级拥有更高的优先
    权优先级越大得到的CPU 时间越多但是不应该把优先级设置得过大否则将导致
    鼠标停止工作
    声明格式FUNCTION boolean SetThreadPriority(ulong hthread, int npriority) LIBRARY
    "Kernel32.dll"
    示例 ulong l_handle
    boolean rtn
    l_handle = GetCurrentThread() //得到当前的优先级
    rtn = SetThreadPriority(l_handle, 2) // 将线程的优先级设置为2
    MessageBox("将线程的当前优先级修改为", string(rtn))
    58 Sleep()
    功能睡眠指定的时间该函数执行过程中系统将不重绘屏幕该函数的作用相当
    于在PowerBuilder 执行了一个For ... Next 循环
    声明格式SUBROUTINE Sleep(ulong milli) LIBRARY "Kernel32.dll"
    示例 ulong l_delay
    l_delay = 5000 //5000 毫秒5 秒
    Sleep(l_delay) //睡眠5 秒钟
    59 SndPlaySoundA()和WaveOutGetNumDevs()
    功能这两个函数结合起来使用用于播放.WAV 格式的文件
    声明格式FUNCTION boolean SndPlaySoundA(string wavfile, uint flag) LIBRARY
    "WINMM.DLL"
    FUNCTION uint WaveOutGetNumDevs() LIBRARY "WINMM.DLL"
    示例 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
    60 SwapMouseButton()
    功能交换鼠标的左右按钮让鼠标按钮返回正常状态时需要再次调用该函数
    声明格式FUNCTION boolean SwapMouseButton(boolean var) LIBRARY "User32.dll"
    示例 boolean rtn, l_mouse
    rtn = SwapMouseButton(l_mouse)
    If l_mouse = true Then
    MessageBox("交换鼠标按钮","左边的按钮发挥右按钮的作用")
    Else
    MessageBox("交换鼠标按钮","右边的按钮发挥左按钮的作用")
    End If
    61 WinExec()
    功能运行指定的可执行文件
    声明格式FUNCTION uint WinExec(ref string filename, uint wstyle) LIBRARY
    "kernel32.dll"
    示例 string ls_filename
    uint rtn, wstyle
    ls_filename = "c:\windows\calc.exe" //程序名称
    wstyle = 1
    rtn = WinExec(ls_filename, wstyle) //运行指定程序
    Messagebox("返回值", string(rtn))

  • 相关阅读:
    小程序模板template问题记录
    datepicker 组件 的坑
    js实现 throttle 和 debounce
    vuex简单使用
    webpack 打包图片 缺失问题
    invalid prop `current` of type `string` supplied to `pagination`, expected `
    HTML5自定义属性之data-*
    vue组件传值方式介绍
    解决github.com 打不开问题
    git密令使用
  • 原文地址:https://www.cnblogs.com/jrmy/p/14316373.html
Copyright © 2020-2023  润新知