Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 创建流程的跨平台方式_C_Windows_Winapi_Vlc_Createprocess - Fatal编程技术网

C 创建流程的跨平台方式

C 创建流程的跨平台方式,c,windows,winapi,vlc,createprocess,C,Windows,Winapi,Vlc,Createprocess,我需要从一个C程序启动VLC,我想找到一种跨平台的方式来实现 当然,我知道我将为Linux和Windows使用两个不同的函数(fork和CreateProcess)。我不知道如何从Windows启动VLC。在阅读官方文档时,我发现我必须使用可执行文件的绝对路径。如何检索安装了VLC的目录的绝对路径 我想象我的代码如下所示: #ifdef WINDOWS // use CreateProcess #else // use fork #endif 我还不知道如何动态检索VLC的路径 更新 也许

我需要从一个C程序启动VLC,我想找到一种跨平台的方式来实现

当然,我知道我将为Linux和Windows使用两个不同的函数(fork和CreateProcess)。我不知道如何从Windows启动VLC。在阅读官方文档时,我发现我必须使用可执行文件的绝对路径。如何检索安装了VLC的目录的绝对路径


我想象我的代码如下所示:

#ifdef WINDOWS
// use CreateProcess
#else
// use fork
#endif
我还不知道如何动态检索VLC的路径


更新

也许我找到了另一种方法来获得同样的结果。这有点棘手,但它应该会起作用。
libvlc提供了一个直接从C代码播放媒体文件的函数。这里是到AFAIK的链接安装路径是一个依赖于系统的概念,所以你的程序中必须有依赖于系统的代码。也许你可以在注册表中的某个地方找到路径?@Luchian:显然,当前版本的VLC不再设置注册表项-过去,人们可以查询HKLM\Software\VideoLAN\VLC\;事实上,在我的机器上,它甚至没有注册卸载程序。你真的需要启动VLC吗?使用与给定文件类型关联的程序可能更容易…您似乎找到了一种更合适的方法来解决特定问题。然而,可能值得重新定义您的标题,内容大致如下:
我如何以编程方式检索exe的路径…
,因为我认为这是一个普遍有用的winOS问题,特别是对于似乎避免注册的应用程序,&我也被赋予了思考的权利,因此试图阻止利基问题~jmo,&best of luck=)AFAIK安装路径是一个依赖于系统的概念,因此您的程序中必须有依赖于系统的代码。也许您可以在注册表中的某个地方找到路径?@Luchian:显然,当前版本的VLC不再设置注册表项-在过去,可以查询HKLM\Software\VideoLAN\VLC\;事实上,在我的机器上,它甚至没有注册卸载程序。你真的需要启动VLC吗?使用与给定文件类型关联的程序可能更容易…您似乎找到了一种更合适的方法来解决特定问题。然而,可能值得重新定义您的标题,内容大致如下:
我如何以编程方式检索exe的路径…
,因为我认为这是一个普遍有用的winOS问题,特别是对于似乎避免注册的应用程序,&我也被赋予了思考的权利,因此试图阻止利基问题~jmo,&祝您好运=)