2009-05-29 71 views
1

我有一个问题,我试图以优雅的方式解决。我有一个我创建的.net应用程序。我正在尝试从网页上显示其中一种表单。这听起来很奇怪,我承认,所以这里是背景故事从网页显示表格

我们有一些大型显示器在工作,显示他们的信息。我无法控制信息的显示方式。目前他们只是使用浏览器和浏览器在屏幕上显示不同的信息。他们展示的大部分信息都只是标准的html内容,文本和图片。

现在我来说说我的winforms应用程序。我需要显示的应用程序的一部分是图形显示。如果重要的话,这个显示器上的所有内容都使用GDI +绘制。我需要将此表单转换为我可以显示的格式。下面是我自己的解决方案,但我很肯定这不是最好的方法,但它可能是我可以使用的唯一方法

创建控制台应用程序。该应用程序将执行以下操作: 1.在服务器上作为服务运行 2.在内存中创建显示器,并将其保存为位图 3.将位图保存到网络上的某个位置。 4.有一个HTML文件,链接可以在浏览器中显示的图像

我虽然要做与客户端的事情,但客户端并不总是,所以我可以有图像不会更新的时期。 我也在考虑一个ASP.net解决方案,但这需要我学习ASP.net,我还没有准备好接受这个挑战

+0

你是如何生成表单的图像?屏幕截图? – ichiban 2009-05-29 19:08:43

回答

0

我在这一条路上走了一条轻松的路线。我创建了一个小型的Winform应用程序,将GDI对象转换为位图,然后将位图保存到网络共享中。该文件被重新显示在显示器上显示的简单HTML文件中。

我选择了winform应用程序,因为它使我很容易在任务管理器中进行设置,并且每10分钟运行一次更新。

2

在IE中,您可以将一个winforms应用程序/控件托管为一个ActiveX控制,像这样:

<object id="DateTimePicker" height="31" width="177" 
    classid="bin/Web.Controls.DateTime.dll#Web.Controls.DateTime.DateTimePicker" VIEWASTEXT> 
</object> 

请参阅本文的详细信息:http://www.codeproject.com/KB/miscctrl/htmlwincontrol.aspx

现在,我并不是说这是比任何解决方案更优雅,但它是一个另类。

我认为使用Asp.Net服务使用HttpHandler动态图像将是最好的方法,但取决于你的技能和时间,这可能不是一个选项。这里有一个很好的教程:http://www.codeguru.com/columns/dotnet/article.php/c11013

0

恕我直言,最好的方式来构建这将是一个浏览器插件,就像Flash的工作方式。微软已经创建了一个名为SpicIE的插件框架,它允许您为IE开发托管插件。这可能是你最好的选择。

旧的非托管方式是构建您的WinForms DLL应用程序,然后将其打包在签名的cab文件中,然后使用HTML对象标记(codebase arg是您需要的)引用该cab文件。

document.write("<object CLASSID='clsid:DC187740-46A9-11D5-A815-00B0D0428C0C' CODEBASE='/MyFormsApp/MyFormsApp.cab#Version=1,00,0000' />"); 

第一次用户点击,他们将被要求允许安装程序来加载它的有效载荷(DLL的)的页面。一旦完成,他们将拥有一个完整的WinForms桌面应用程序,通过浏览器窗口运行。