在PB中使用ShellExecuteA函数的例句

wswxy 2008-09-08 11:56:01
比如我要启动一个EXCEL文件:ABC.XLS,我从网上找了ShellExecuteA这个函数.可是不会有用.谁能给我提供个例句.并加以说明.我看不明白参数.
ShellExecute
【说明】   查找与指定文件关联在一起的程序的文件名
【返回值】 Long,非零表示成功,零表示失败。会设置GetLastError
【参数表】
hwnd ----------- Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation ---- String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
lpFile --------- String,想用关联程序打印或打开一个程序名或文件名
lpParameters --- String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory ---- String,想使用的完整路径
nShowCmd ------- Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数

...全文
1256 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shajie53 2012-06-12
  • 打赏
  • 举报
回复
c:\abc.xls
tonypb 2009-07-17
  • 打赏
  • 举报
回复
不错
wswxy 2008-09-10
  • 打赏
  • 举报
回复
我在主窗口中设置了TAB控件.然后又设了几个TABPAGE.选项页.在其中一个页面中有一个按钮点它可以打开C:/下一个EXCEL文件.
Shellexecutea(0,"open","c:/abc.xls","","",0)但是打不开.

请教了.我一定是哪写错了.但不知道是哪.
lws0472 2008-09-09
  • 打赏
  • 举报
回复
ls_op只是一个字符串,"open",并没有实际意义,你也可以直接用"open",第4个和第五个参数通常都要设为null,最后那个参数是指的打开方式

ShellExecute函数原型及参数含义如下:
ShellExecute(
HWND hwnd, //父窗口句柄 (如:NULL,Handle等)
LPCSTR lpOperation, //操作类型 (如:"open")*要加英文双引号
LPCSTR lpFile, //要进行操作的文件或路径
LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL
LPCSTR lpDirectory, //指定默认目录,通常设为NULL
INT nShowCmd //文件打开的方式,以通常方式还是最大化或最小化显示,一般为SW_SHOWNORMAL
)

●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。

●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。

●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。

●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。

●Directory:用于指定默认目录。

●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。
ybkenan 2008-09-08
  • 打赏
  • 举报
回复
ll_rc = ShellExecuteA(0, "OPEN", file, "", path, 1)
If ll_rc <= 32 Then
Choose Case ll_rc
Case 2
messageBox("Error", "File not found", StopSign!, OK!, 1)
Case 3
messageBox("Error", "Path not found", StopSign!, OK!, 1)
Case 4
messageBox("Error", "Access denied", StopSign!, OK!, 1)
Case 8
messageBox("Error", "Out of memory", StopSign!, OK!, 1)
Case 11
messageBox("Error", "Invalid EXE file or error in EXE image", StopSign!, OK!, 1)
Case 26
messageBox("Error", "Sharing violation occurred", StopSign!, OK!, 1)
Case 27
messageBox("Error", "Incomplete or invalid file association", StopSign!, OK!, 1)
Case 28
messageBox("Error", "DDE Time out", StopSign!, OK!, 1)
Case 29
messageBox("Error", "DDE Transaction failed", StopSign!, OK!, 1)
Case 30
messageBox("Error", "DDE busy", StopSign!, OK!, 1)
Case 31
messageBox("Error", "No association for file extension", StopSign!, OK!, 1)
Case 32
messageBox("Error", "DLL not found", StopSign!, OK!, 1)
Case Else
messageBox("Error", "Unknown error", StopSign!, OK!, 1)
End Choose
End If
ybkenan 2008-09-08
  • 打赏
  • 举报
回复
ShellExecuteA(0, "OPEN", 文件名, "", 路徑, 1)
wswxy 2008-09-08
  • 打赏
  • 举报
回复
先表示一下谢谢然后请问
为什么不能这样写呢:
shellexecute(0,ls_op,"e:\1.doc",3,3,3)
shellexecute(0,ls_op,"e:\1.doc","","","")
3是什么意思.LS_OP是干什么用.我是要启动一个EXCEL文件:ABC.XLS.它是LS_OP吗?
lws0472 2008-09-08
  • 打赏
  • 举报
回复
string ls_temp,ls_op,ls_file
integer li_temp

li_temp=3
setnull(ls_temp)
ls_op="open"
ls_file="e:\1.doc"
shellexecute(0,ls_op,ls_file,ls_temp,ls_temp,li_temp)

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧