查询其他客户端是否上线
主要应用API:SimConnect_Open
示例代码:
void ARJ21_TConsole::ConnectP3D_1()
{
if (SUCCEEDED(SimConnect_Open(&hSimConnect, " ", NULL, 0, 0, 1)))
{
ui.labelMessage->setText(QStringLiteral("模拟机1已连接"));
HRESULT hr;
hr = SimConnect_Close(hSimConnect);
}
else
{
ui.labelMessage->setText(QStringLiteral("连接1失败,请先启动模拟机"));
}
QString str = ui.labelMessage->text();
if (SUCCEEDED(SimConnect_Open(&hSimConnect, " ", NULL, 0, 0, 2)))
{
str = str + QStringLiteral("|模拟机2已连接");
ui.labelMessage->setText((str));
SimConnect_Close(hSimConnect);
}
else
{
str = str + QStringLiteral("|连接2失败,请先启动模拟机");
ui.labelMessage->setText(str);
}
}
难点1.配置文件放置:
将SimConnect.cfg放到与SimConnect.h相同路径
[SimConnect.1]
Protocol=Ipv4
Address=192.168.1.135
Port=10404
[SimConnect.2]
Protocol=Ipv4
Address=192.168.10.145
Port=10404
SimConnect_Open第五个参数1或2与SimConnect.1或SimConnect.2对应
难点2.p3d端配置文件SimConnect.xml
放到C:\Users\SIM_P3D\AppData\Roaming\Lockheed Martin\Prepar3D v4
<?xml version="1.0" encoding="UTF-8"?>
<SimBase.Document Type="SimConnect" version="1,0">
<Descr>SimConnect Server Configuration</Descr>
<Filename>SimConnect.xml</Filename>
<Disabled>False</Disabled>
<!-- Example Global (remote) IPv4 Server Configuration-->
<SimConnect.Comm>
<Disabled>False</Disabled>
<Protocol>IPv4</Protocol>
<Scope>global</Scope>
<MaxClients>64</MaxClients>
<Address>192.168.1.135</Address>
<Port>10404</Port>
</SimConnect.Comm>
</SimBase.Document>
SimConnect.cfg与SimConnect.xml的IP和端口号一一对应