windows API 函数 ShellExecute 的多种用法

本文翻译了一份关于WINDOWS API函数的学习资料,帮助初学者了解API使用。重点介绍了ShellExecute函数,它可运行外部程序、打开文件等,功能实用且不太复杂,并通过多个示例展示了其在不同场景下的用法,如打开应用、打印文档等。

       在一个网站看资料时,发现一个关于WINDOWS API函数的学习资料,翻译下来认初学者更快的了解这个API的使用。  

       ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。

  有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。下面举例说明它的用法。

  • 开始一个新的应用程序

   ShellExecute(Handle, 'open', PChar('c:/test/app.exe'), nil, nil, SW_SHOW);

  • 打开记事本,并打开一个文件(系统能识别记事本应用程序的路径,因此我们不必使用绝对路径)

   ShellExecute(Handle, 'open', PChar('notepad'), PChar('c:/test/readme.txt'), nil, SW_SHOW);

  • 打印一个文档

   ShellExecute(Handle, 'print', PChar('c:/test/test.doc'), nil, nil, SW_SHOW);

   注意:可能你会看到word暂时的被打开,但它会自动关闭。

  • 打开一个HTML页面

   ShellExecute(Handle, 'open', PChar('http://www.festra.com/'), nil, nil, SW_SHOW);

  • 你能通过一个已经注册的文件类型来打开应用程序

   ShellExecute(Handle, 'open', PChar('c:/test/readme.txt'), nil, nil, SW_SHOW);

  • 用windows Explorer 打开一个目录

   ShellExecute(Handle, 'explore', PChar('c:/windows)', nil, nil, SW_SHOW);

  • 运行一个DOS命令并立即返回

   ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c copy file1.txt file2.txt'), nil, SW_SHOW);

  • 运行一个DOS命令并保持DOS窗口存在

   ShellExecute(Handle, 'open', PChar('command.com'), PChar('/k dir'), nil, SW_SHOW);

### 面向对象分析顺序图的使用方法 #### 构成要素 顺序图由多个组成部分共同构建而成,这些部分包括生命线、激活条、消息和返回消息等。生命线代表参与交互的对象,在时间轴上的投影;激活条则表示该对象正在处理某个操作的时间段;消息用来展示对象之间的调用关系,而返回消息则是响应的结果传递[^1]。 ```mermaid sequenceDiagram participant Alice as 用户 participant Bob as 数据库 Alice->>Bob: 查询数据(id=123) activate Bob Note over Bob: 处理查询请求... Bob-->>Alice: 返回结果集 deactivate Bob ``` 此代码片段定义了一个简单的Mermaid图表语法来绘制顺序图,其中`participant`关键字后面跟的是参与者名称及其别名(可选),通过箭连接符可以创建不同类型的消息流,并且利用`activate/deactivate`命令标记活动区间。 #### 使用场景 当需要描绘系统内部组件间复杂的通信流程时,顺序图就显得尤为重要。它不仅限于软件开发领域内的需求规格说明书编写阶段,同样适用于架构设计文档准备期间对于业务逻辑实现细节的阐述工作。此外,在测试计划制定环节里也能发挥辅助验证预期行为的作用。 #### 实际案例应用 假设存在一个在线购物平台,顾客提交订单之后会触发一系列后台服务间的互动: - 订单管理模块接收到新订单事件; - 向库存管理系统发送商品数量校验指令; - 如果有足够的存货,则通知支付网关完成交易扣款; - 支付成功后再告知仓库部门安排发货事宜。 上述过程可以通过如下形式展现出来: ```mermaid sequenceDiagram participant Customer as 客户端 participant OrderService as 订单服务 participant StockService as 库存服务 participant PaymentGateway as 支付网关 participant Warehouse as 仓储物流 Customer->>+OrderService: 提交订单(orderId=007) OrderService->>+StockService: 检查库存(stockCheckRequest={itemId:"A",quantity:5}) StockService-->>OrderService: 反馈库存情况(hasEnough=true/false) opt 存货充足情况下 OrderService->>+PaymentGateway: 发起付款(payInfo={amount:99.99,customerId:"CUST_88"}) PaymentGateway-->>OrderService: 确认收款(paymentStatus="SUCCESS") OrderService->>+Warehouse: 下达配送任务(deliveryTask={orderId:"ORD_007",address:"..."}) Warehouse-->>OrderService: 接受任务确认(acceptanceAcknowledge="OK") end OrderService-->>Customer: 响应最终状态(finalResponse={"status":"COMPLETED","message":"您的订单已受理并进入下一步处理."}) ``` 这里采用条件分支结构(`opt`)模拟了根据实际业务规则所作出的不同路径选择,使得整个交互链条更加贴近真实世界的应用环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值