发布时间 : 星期一 文章pb+api实际应用更新完毕开始阅读
Constant long SW_SHOWNORMAL = 1 Constant long SW_HIDE = 0
我们将结合下面的例子来解释该API函数的主要参数的意义。 string ls_temp setnull(ls_temp)
ShellExecute(handle(this), \\ls_temp, ls_temp, SW_SHOWNORMAL)
“handle(this)”:表示那个你将要作为父窗体的窗体句柄。
“Operatio”:该参数付值为“Open”,表示使用“打开”方法来操作该文档。 “File”:该参数表示要操作哪个文件,必须用该文件的完全路径表示。 “Parameters”:该参数表示打开文件时的命令行参数。 “Directory”:该参数用于指定该应用程序的默认目录。
“ShowCmd”:该参数将被设置为“SW_SHOWNORMAL”以打开文档。
6、使用SendMessage来实现剪切、复制和粘贴
调用SendMessage API就能够向任何带有handle属性的窗口或者控件发送Windows消息。很多控件内置有对特定消息的响应机制。使用这一机制,你在自己的powerbuilder应用程序里很容易就能够实现剪切、复制和粘贴的功能。 要使用这一技巧,你就需要声明用于剪切、复制和粘贴的常数: Constant long WM_COPY = 769 Constant long WM_CUT = 768 Constant long WM_PASTE =770
然后,声明对SendMessage API的调用:
Function long SendMessage (long hWnd, long wMsg , long wParam , long lParam ) Library \
HWnd自变量能够接受消息发送的目的控件的句柄,而wMsg自变量会接受一个表明要被发送的是哪个对象的常数。WParam和lParam自变量被用来把其他信息同消息一起传递,但是不对WM_CUT、WM_COPY或者WM_PASTE使用。 下面是从菜单点击事件调用SendMessage API的代码: m_Copy.Clicked:
SendMessage(Me.ActiveControl.hwnd, WM_COPY, 0, 0) m_Cut.Clicked
SendMessage(Me.ActiveControl.hwnd, WM_CUT, 0, 0)
m_Paste.Clicked
SendMessage(Me.ActiveControl.hwnd, WM_PASTE, 0, 0)
这个技巧能够用于任何实现handle方法,并能够响应WM_CUT、WM_COPY和
WM_PASTE消息的控件。还应该实现错误处理,以处理不带handle方法的控件。
7、隐藏/显示开始菜单
Function long FindWindow (string lpClassName, string lpWindowName ) Library \
注释:寻找窗口列表中第一个符合指定条件的顶级窗口
注释:lpClassName指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,注释:表示接收任何类
注释:lpWindowName指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;注释:或设为零,表示接收任何窗口标题
Function long FindWindowEx (long hWnd1 ,long hWnd2, string lpsz1 , string lpsz2 ) Library \注释:在窗口列表中寻找与指定条件相符的第一个子窗口 注释:hWnd1在其中查找子的父窗口
注释:hWnd2从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索 Function long ShowWindow(long hwnd , long nCmdShow ) Library \注释:控制窗口的可见性
注释:hwnd窗口句柄,要向这个窗口应用由nCmdShow指定的命令 注释:nCmdShow为窗口指定可视性方面的一个命令 实现代码:cb_1.clicked: long Handle ,FindClass string ls_temp setnull(ls_temp)
FindClass = FindWindow(\
Handle = FindWindowEx(FindClass, 0, \ShowWindow(Handle, 0)//隐藏开始菜单 cb_2.clicked:
long Handle , FindClass
FindClass = FindWindow(\
Handle = FindWindowEx(FindClass, 0, \ShowWindow(Handle, 1)//显示开始菜单
8、起用和禁止ctrl-alt-del
Function long SystemParametersInfo (long uAction , long uParam, Ref any lpvParam, long fuWinIni ) Library \\
注释:允许获取和设置数量众多的windows系统参数 注释:uAction指定要设置的参数
Constant long SPI_SCREENSAVERRUNNING = 97 实现代码:起用ctrl-alt-del: integer ret As Integer boolean pOld
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0) 禁止ctrl-alt-del: integer ret boolean pOld
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
9、隐藏和显示系统托盘 //注释:隐藏系统托盘
long FindClass, Handle string ls_temp setnull(ls_temp)
FindClass = FindWindow(\
Handle = FindWindowEx(FindClass, 0, \ShowWindow(Handle, 0) //显示系统托盘
//注释:隐藏系统托盘 long FindClass, Handle string ls_temp setnull(ls_temp)
FindClass = FindWindow(\
Handle = FindWindowEx(FindClass, 0, \ShowWindow(Handle, 1)
10、显示/隐藏任务栏
long FindClass, FindClass2 , Parent, Handle string ls_temp setnull(ls_temp)
FindClass = FindWindow(\
FindClass2 = FindWindowEx(FindClass, 0, \Parent = FindWindowEx(FindClass2, 0, \Handle = FindWindowEx(Parent, 0, \ShowWindow(Handle, 0)//显示任务栏
long FindClass, FindClass2 , Parent, Handle string ls_temp setnull(ls_temp)
FindClass = FindWindow(\
FindClass2 = FindWindowEx(FindClass, 0, \Parent = FindWindowEx(FindClass2, 0, \Handle = FindWindowEx(Parent, 0, \