有办法让C/S和B/S通信吗? 一个C/S程序中包含一个Web浏览器,CS和web页面各自负责不同的工作,但是可以让这两者之间通信吗?比如我在Web中按下一个按纽,这个事件可以被B/S捕捉到吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不对,问错了,如果我在Web中单击某个按纽的事件可以被C/S捕捉到吗? C/S 的事件到B/S还算容易,只要定向网址就可以了但是从B/S到C/S 就难了,我现在只能尽量避免从B/S到C/S的事件触发尽量避免两者见数据的交换 http://www.comecode.com/edu/webtech/net/control/2006/200606151661.html 一个系统内的两个进程(c/s的winform窗体)可以通过消息通讯,楼主说的c/s与 b/s如果是一个系统的两个进程,应该也可以通过消息通讯.事件的捕捉:可以通过写监听服务解决. 关注一下,个人也是认为和C/S 的事件到B/S应该比较可行,而B/S要到C/S那可能有些麻烦 捕捉浏览器的动作很难吧,估计要深入研究webbrowser控件 捕捉浏览器的动作,通过ACTIVE X,可以很轻易地办到包括右键、前进后退、鼠标所处位置上的元素一切尽在IHTMLDocument2和相关指针上 可以,通过IE相关的COM接口来处理,eg. IHTMLDocument 如果是嵌套WebBrowser...而且只是想让C/S知道B/S中的点击事件, 或传字符串. 还是比较容易的...我有个比较变态的方法... 可以的。我用.NETRemoting,B/S到cs,就调用CS的对象;CS到BS就是从CS广播。可以实现网页喝桌面程序聊天。 private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (this.webBrowser.Document != null) { HtmlElement ok = this.webBrowser.Document.GetElementById("ButtonOK"); if (ok != null) { ok.Click += new HtmlElementEventHandler(ButtonOK_Click); } HtmlElement cancel = this.webBrowser.Document.GetElementById("ButtonCancel"); if (cancel != null) { cancel.Click += new HtmlElementEventHandler(ButtonCancel_Click); } } } 变态的方法是用FireFox的源码来处理,咔咔 应该是可以的,因为b/s存在服务端,而c/s也存在服务端,只要在服务端之间做好信息沟通,b/s和c/s就可以联姻了。 一个C/S程序中包含一个Web浏览器,CS和web页面各自负责不同的工作,但是可以让这两者之间通信吗?这个任务太简单了,实现起来太容易了,想不想知道?哈哈哈哈,你去看看WebBrowser.ObjectForScripting干吗用的,怎么用的。如果还是不明白,开贴给俺500分。俺把我以前的源代码给你一份。 楼上的几位又是中间件、又是WebService,废话都说尽了,你们是不是做PM的? 难度很大!实现东西多!主要还是URL服务请求问题!一般开设8080或80---C/S--1055--URL直接访问1055,然后设置REQUEST!这样就能访问服务了! private static StringBuffer doDialogPrint(String aStrRequestUrl, String aStrFileName) { StringBuffer strBRetHtml = new StringBuffer(""); if(aStrRequestUrl == null || "".equals(aStrRequestUrl)) { return strBRetHtml; } String strClsID = "13374F9E-567A-4A22-BD52-F30D33AE64D1"; String strArrFileName[] = aStrFileName.split(":"); int intFileCnt = strArrFileName.length; String strSvfClientVer = ServerProperties.getProperty("server.svf-client.version"); if(strSvfClientVer != null && !"".equals(strSvfClientVer)) { strSvfClientVer = (new StringBuilder()).append("#Version=").append(strSvfClientVer).toString(); } else { strSvfClientVer = ""; } String strExtendPath = ServerProperties.getProperty("server.output.extend-path"); for(int i = 0; i < intFileCnt; i++) { strBRetHtml.append((new StringBuilder()).append("<OBJECT ID=\"SVF for Web/Client\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:").append(strClsID).append("\" CODEBASE=\"").append(aStrRequestUrl).append("/SvfWebClient/XSvfWeb.cab").append(strSvfClientVer).append("\">").toString()); strBRetHtml.append((new StringBuilder()).append("<PARAM NAME=\"Raw\" VALUE=\"").append(aStrRequestUrl).append(strExtendPath).append("/").append(strArrFileName[i]).append("\">").toString()); strBRetHtml.append("<PARAM NAME=\"DocName\" VALUE=\"SVF for WEB/Client\">"); strBRetHtml.append("</OBJECT>"); } return strBRetHtml; }要干的事情太多,小项目基本也很少有人这么干 我就是用WebServices来实现这个功能的 非常感谢大家的关注,正在解决我们是做呼叫中心的,一般的呼叫中心都是单一的但是有的客户需要分散的呼叫系统,可以节省长途话费这样问题就出来了,所有的座席人员是必须使用同一个数据库每个座席又有不同的语音服务器控制,所以难就难在这里的因为我们要实现软拨号,所以如果这个问题解决不了我们就要用笨的方法来实现了:先将要拨打的号码提交到服务器,写到数据库,IVR再定时读取这样会浪费很多时间~~如果重要个问题能解决了就太好了 不理解楼主的问题跟你的需求有什么关系看需求没有发现需要B/S和C/S交互的地方 怎样判断imagelist中的图片和picturebox中的图片是不是同张 麻烦各位大侠帮我解决个疑问!谢谢!谢谢!谢谢! 判断应用程序是否已打开 DataGridVie编辑 页面用户控件共用sqlconnection的问题 类视图中添加“enum"出错 各位大侠请给点建功立业议.我要封装ADO.NET对数据库的操作,有两种方式,哪一种更好? C#怎样批量改变TextBox的值! c# 如何遍历所有label 然后判断lable是否有值 一个棘手的问题,请大家指教 COM组件和.NET组件有什么区别? 关于DataSet过滤问题
但是从B/S到C/S 就难了,我现在只能尽量避免从B/S到C/S的事件触发
尽量避免两者见数据的交换
{
if (this.webBrowser.Document != null)
{
HtmlElement ok = this.webBrowser.Document.GetElementById("ButtonOK");
if (ok != null)
{
ok.Click += new HtmlElementEventHandler(ButtonOK_Click);
}
HtmlElement cancel = this.webBrowser.Document.GetElementById("ButtonCancel");
if (cancel != null)
{
cancel.Click += new HtmlElementEventHandler(ButtonCancel_Click);
}
}
}
实现东西多!
主要还是URL服务请求问题!
一般开设8080或80---
C/S--1055--
URL直接访问1055,然后设置REQUEST!这样就能访问服务了!
private static StringBuffer doDialogPrint(String aStrRequestUrl, String aStrFileName)
{
StringBuffer strBRetHtml = new StringBuffer("");
if(aStrRequestUrl == null || "".equals(aStrRequestUrl))
{
return strBRetHtml;
}
String strClsID = "13374F9E-567A-4A22-BD52-F30D33AE64D1";
String strArrFileName[] = aStrFileName.split(":");
int intFileCnt = strArrFileName.length;
String strSvfClientVer = ServerProperties.getProperty("server.svf-client.version");
if(strSvfClientVer != null && !"".equals(strSvfClientVer))
{
strSvfClientVer = (new StringBuilder()).append("#Version=").append(strSvfClientVer).toString();
} else
{
strSvfClientVer = "";
}
String strExtendPath = ServerProperties.getProperty("server.output.extend-path");
for(int i = 0; i < intFileCnt; i++)
{
strBRetHtml.append((new StringBuilder()).append("<OBJECT ID=\"SVF for Web/Client\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:").append(strClsID).append("\" CODEBASE=\"").append(aStrRequestUrl).append("/SvfWebClient/XSvfWeb.cab").append(strSvfClientVer).append("\">").toString());
strBRetHtml.append((new StringBuilder()).append("<PARAM NAME=\"Raw\" VALUE=\"").append(aStrRequestUrl).append(strExtendPath).append("/").append(strArrFileName[i]).append("\">").toString());
strBRetHtml.append("<PARAM NAME=\"DocName\" VALUE=\"SVF for WEB/Client\">");
strBRetHtml.append("</OBJECT>");
} return strBRetHtml;
}要干的事情太多,小项目基本也很少有人这么干
我们是做呼叫中心的,一般的呼叫中心都是单一的
但是有的客户需要分散的呼叫系统,可以节省长途话费
这样问题就出来了,所有的座席人员是必须使用同一个数据库
每个座席又有不同的语音服务器控制,所以难就难在这里的
因为我们要实现软拨号,所以如果这个问题解决不了
我们就要用笨的方法来实现了:先将要拨打的号码提交到服务器,写到数据库,IVR再定时读取
这样会浪费很多时间~~
如果重要个问题能解决了就太好了