科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Win32 API 与PB编程

Win32 API 与PB编程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了关于Win32 API 与PB编程的常见问题

作者:51cto.com整理 来源:51cto.com 2007年9月15日

关键字: 软件

  • 评论
  • 分享微博
  • 分享邮件

5. 控制由Run运行的程序(简称Run程序)

在PB程序设计中,可以用Run()来运行一些程序。但Run程序无法与PB主程序协调工作,若用户多次调用,就会启动Run程序的多个实例,主程序退出时,Run程序依然运行。可以用如下函数使它们协调工作:

Function Ulong FindWindowA(Ulong classname, String windowname) Library "user32.dll”

Function Long SetParent(Long childwin, Long parentwin) Library "user32.dll”

(1) 使Run程序只运行一个实例

handle = FindWindowsA(nul,wtitle)

//查找Run程序是否已经运行,wtitle为Run程序的窗口标题

If handle > 0 Then Return

//若已经在运行就返回

Run(“c:\luhan.chm”)

//否则运行Run程序

(2) PB主程序退出时,Run程序也关闭

Handle = FindWindowA(nul,wtitle)

SetParent(handle,Handle(w_main))

//使Run程序窗口成为PB主程序的子窗口

6. 映射网络驱动器

若要在程序中把远程主机的资源映射到本地驱动器,可以用如下函数:

Function Long WNetAddConnectionA(String path, String pwd, String drv) Library “mpr.dll”

如下代码可以把远程主机Alexander上的共享文件夹My Documents映射到本地的J 盘:

WnetAddConnectionA(“\\ Alexander\ My Documents”,””,”J:”) //参数2为访问口令

它的作用相当于在DOS提示符下执行:Net Use J: \\ Alexander\ My Documents

7. 显示或隐藏Windows的任务栏

要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它的窗口类为:Shell_TrayWnd,没有标题,故只能用FindWindowEx函数来取得它的句柄:

Function Long FindWindowEx(Long ph, Long ch, ref String cn, ref

String wn) Library “user32.dll”

Function Long ShowWindow(Long hWnd, Long nCmdShow) Library “user32.dll”

用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:

handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn为空串

ShowWindow(handle,0) //隐藏任务栏

8. 如何将长文件名转换为短文件名

通过GetShortPathName函数可以把上文件名转换为8.3格式,其声明为:

Function Long GetShortPathNameA(String lf, ref String sf, Long

buflen)

Library “kernel32.dll”

参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如:

GetShortPathNameA(“C:\My Document\Powerbuilder编程实践.Doc”,sf,256)

\

//sf = Spcace(256)

9. 如何在PB中实现延时

延时函数很有用,PB虽然没有提供,但可以通过Wind32的Sleep函数来扩展:

Function Long Sleep(Long ms) Library “kernel32.dll”

调用:Sleep(1000) //延时1秒

10. 如何在PB中播放音乐

PB没有提供任何多媒体函数,要播放音乐只能通过Win32 API的PlaySound来实现:

Function Long PlaySound(String Filename, Int Mod, Int Flags) Library

“ winmm.dll”

参数1为wav文件名,参数2必须取0,参数3取1表示后台播放,取8表示循环播放,因此取9(=1+8)表示在后台循环播放。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章