You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中实现Windows下用指定程序(如Clip Studio Paint)打开文件

在Windows 11中用程序批量打开文件的实现方案

一、C++(WinAPI)实现

要模拟用户右键选择指定程序打开文件的行为,最贴合的方式是使用Windows Shell API中的ShellExecuteEx或ShellExecute函数,它们遵循系统文件打开逻辑,和手动操作行为完全一致。

1. 核心步骤

  • 获取目标图片文件列表(可通过遍历目录、读取预设列表等方式)
  • 对每个文件,调用Shell API指定目标程序(如Clip Studio Paint)打开

2. 代码示例

#include <windows.h>
#include <vector>
#include <string>
#include <filesystem>

namespace fs = std::filesystem;

int main() {
    // 目标程序路径(需根据实际安装路径调整)
    const wchar_t* targetAppPath = L"C:\\Program Files\\CELSYS\\CLIP STUDIO PAINT\\CLIPStudioPaint.exe";

    // 获取指定目录下的图片文件(png/jpg/jpeg格式)
    std::vector<std::wstring> imageFiles;
    fs::path imageDir = L"C:\\YourImageFolder";
    for (const auto& entry : fs::directory_iterator(imageDir)) {
        std::wstring ext = entry.path().extension().wstring();
        if (ext == L".png" || ext == L".jpg" || ext == L".jpeg") {
            imageFiles.push_back(entry.path().wstring());
        }
    }

    // 逐个用目标程序打开文件
    for (const auto& filePath : imageFiles) {
        SHELLEXECUTEINFO sei = {0};
        sei.cbSize = sizeof(SHELLEXECUTEINFO);
        sei.fMask = SEE_MASK_NOCLOSEPROCESS;
        sei.lpVerb = L"open";
        sei.lpFile = targetAppPath;
        sei.lpParameters = filePath.c_str();
        sei.nShow = SW_SHOWNORMAL;

        if (!ShellExecuteEx(&sei)) {
            DWORD err = GetLastError();
            wchar_t errMsg[256];
            FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, errMsg, 256, NULL);
            MessageBox(NULL, errMsg, L"Error", MB_ICONERROR);
        }
    }

    return 0;
}

说明

  • ShellExecuteEx相比ShellExecute更灵活,可获取进程句柄、精准处理错误
  • 若不想硬编码程序路径,可通过查询系统注册表获取Clip Studio Paint的默认安装路径,或添加用户选择路径的交互逻辑

二、批处理实现

如果无需C++代码,批处理可快速实现需求:

@echo off
set "APP_PATH=C:\Program Files\CELSYS\CLIP STUDIO PAINT\CLIPStudioPaint.exe"
set "IMAGE_DIR=C:\YourImageFolder"

:: 遍历目录下的图片文件并调用程序打开
for %%f in ("%IMAGE_DIR%\*.png" "%IMAGE_DIR%\*.jpg" "%IMAGE_DIR%\*.jpeg") do (
    start "" "%APP_PATH%" "%%f"
)

说明

  • start命令会模拟手动启动程序并打开文件的行为,路径包含空格时必须用引号包裹
  • APP_PATH需根据实际安装路径调整

三、原理说明

无论是WinAPI还是批处理,本质都是调用Windows Shell的文件打开机制:将文件路径作为参数传递给指定程序,这和用户手动右键选择「打开方式」→指定程序的逻辑完全一致,能保证程序处理文件的行为与手动操作相同。

内容的提问来源于stack exchange,提问作者J. Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:32:50