PHP DOTNET与C#Windows窗体应用程序互操作?

时间:2014-10-21 20:41:48

标签: c# php com interop

是否可以让PHP与正在运行的C#Windows窗体应用程序进行交互?

之前我已经创建了COM Exposed DLL并使用DOTNET对象从PHP调用它们,但它似乎对我的“Windows窗体应用程序”不起作用。我是否需要制作COM DLL并以某种方式与Windows窗体应用程序进行交互?

修改

我决定在.NET3.5 Client Framework中编写一个快速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上为这个项目进行回溯。

1 个答案:

答案 0 :(得分:1)

你想要的是这个:

进程外Com组件

我实际上是在15年前使用VB6程序做到这一点,它的工作方式与你说的完全一样!它有一个主要形式,我从ASP 3.0网站点击它。它有网站应用程序的内容,并作为管理员,但我没有问题更新UI或COM方法被解雇。

说明从下面的链接(由于问题的复杂性,没有它,这个答案是无用的;链接包括一个下载示例应用程序。如果链接死亡,也许你可以谷歌这个文本。)

在Microsoft Windows操作系统中,Microsoft COM技术使软件组件能够与其他软件组件进行通信。您可以使用Microsoft COM技术来创建可重用的软件组件。您还可以通过将这些组件链接在一起并利用Windows服务来开发应用程序   进程外服务器对象在可执行文件中实现,并在单独的进程空间中运行。

http://support.microsoft.com/kb/977996