gpt4 book ai didi

c++ - CreateProcess 打开加载文件的程序

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:42 24 4
gpt4 key购买 nike

我有一种情况,我想让一个程序A打开另一个程序B,让程序B打开一个指定的文件。我目前正在尝试通过使用 CreateProcess 并在命令行参数中传递文件路径来完成此操作。这是我的代码:

STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CreateProcess("C:\\ProgramB.exe", "C:\\MyFile.txt", NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);

我在这里做错了什么?程序 B 的 DragAndDrop 是正确的,将文件拖放到窗口中工作正常(我也尝试发送 WM_DROPFILES 消息但没有成功),程序 B 可以用我的打开文件对话框打开文件,但这个命令有问题说找不到文件。

最佳答案

你在评论中声明当你执行

"C:\ProgramB.exe" "C:\MyFile.txt" 

程序会从命令提示符启动,但不会打开您的文件。这意味着可执行文件不支持将文件名作为参数传递。这解释了为什么您对 CreateProcess 的调用失败。它的作用与命令解释器 cmd.exe 完全相同。如果一个失败,另一个也会失败。

看起来您正在尝试的可能无法实现。

您还说您向进程发送了一个WM_DROPFILES。那不是你可以那样做的事情。如果应用程序确实支持拖放,那么您将能够自动打开文件,但它比从不同进程发送 WM_DROPFILES 更复杂。第一步是确认应用程序是否甚至可以接受交互执行的拖放操作。

关于c++ - CreateProcess 打开加载文件的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com