创建进程来打开加载文件的程序

CreateProcess to open program which loads a file

本文关键字:文件 程序 加载 进程 创建      更新时间:2023-10-16

我有一个情况,我想让程序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更复杂。第一步是确认应用程序是否可以接受交互式的拖放操作。