【发布时间】:2014-12-17 05:19:55
【问题描述】:
是否可以让 PHP 与正在运行的 C# Windows 窗体应用程序交互?
我之前创建了 COM 公开的 DLL,并使用 DOTNET 对象从 PHP 调用它们,但它似乎不适用于“Windows 窗体应用程序”。我是否需要制作 COM DLL 并让它以某种方式与 Windows 窗体应用程序交互?
编辑:
我决定在 .NET3.5 客户端框架中编写一个快速的 EXE,然后看看这些方法是否可用于 PHP。看来我现在正在运行方法,奇怪!我猜它只能使用 v3.5 客户端而不是 v4.5。
这是 C# 和 PHP 代码:
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Example.Interop.FormText
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int Sum(int a, int b)
{
return a + b;
}
public int Minus(int a, int b)
{
return a - b;
}
}
}
PHP
<?php
$app = new DOTNET("Example.Interop.FormText", "Example.Interop.FormText.Form1");
echo $app->Minus(19, 20);
?>
我还没有测试我是否可以运行与 UI 交互的函数。接下来将对其进行测试,但不幸的是,我认为我不能为这个项目回退到 v3.5。
【问题讨论】:
-
你能修改windows窗体应用程序以在内部公开一些REST或HTTP SOAP服务吗?如果您可以访问它,这可能会变得容易得多。
-
老实说,我试图快速取胜,而不是编写某种服务器和身份验证。正如我所说,只要 DLL 打开了 COM-Visible,我就已经成功地使用 DOTNET 从 C# .net3.5 DLL 运行方法。从 PHP 它就像 1 行代码,不知道为什么我不能用 EXE 来做。