C# 做的窗体程序,用webbrowser触发表单按钮事件,程序会用ie弹出新网页,如何让新网页在webbrowser里显示
我们做了一款短信充值程序,大体模拟流程如下:我们做的短信充值系统是通过模拟浏览器提交表单实现的。我们程序应用了webbrowser控件。大致过程如下:1、登录中国移动的4...
我们做了一款短信充值程序,大体模拟流程如下:
我们做的短信充值系统是通过模拟浏览器提交表单实现的。我们程序应用了webbrowser控件。大致过程如下:
1、 登录中国移动的4a登录平台
2、 4a登录后打开第二层登录页面,这里面的账号+地址 是由中国移动给出的,通过浏览器登录时只需要点击“登录”按钮即可。用程序触发“登录”事件。
3、 触发登录事件后,会自动弹出IE浏览器,然后加载弹出页面,紧接着跳转到第二个页面,第二个页面就是登录成功的页面。因为移动程序会弹出IE打开页面而不是在我们的程序中打开,我们的程序因为获取不到网页信息而出现登录超时异常。
4、 我们必要把登录后的页面捕获到,放到系统的webbrowser中进行操作,才能模拟充值操作。
(该系统的应用有两个限制:1、移动充值系统只能用IE的核来实现各种操作并且需要4a登录插件。2、移动的充值平台只能通过移动的专线才能登录。)
遇到的问题:
现在的问题是如何捕获到弹出的页面,并加载到程序的webbrowser中。只有把网页加载到webbrowser里面我们才能进行充值的各种模拟操作。
我们尝试过把弹出网页的地址直接加载到webbrowser中,然而这种方法会提示【用户失效】。
我们也尝试过用WebBrowser控件的NewWindow事件、以及AxWebBrowser控件的NewWindow2、NewWindow3等事件,来禁止弹出新窗体,可是这些事件根本不执行。
我们也尝试过在IE登录系统后,在程序里面直接加载弹出网页。
上述方法统统失败了!不知道是不是移动的那个插件在捣鬼,还是其它什么原因……
解决问题的思路:
我们现在的思路是自己写个简易的浏览器分析引擎,直接和服务器通信,通过分析服务器发回的数据包,把弹出的页面加载到程序里面,而不是用IE打开。用这种方法应该可以获取sessionid,这或许能解决用户失效问题。
或者编写一个IE插件,当处理到IE打开窗口加载弹出页时插件和我们的程序建立服务器/客户关系,帮我们实现程序充值的模拟表单提交功能。
不知道这两种方式是否可行,更不知道这两种软件如何编写,很迷茫啊,所以请有经验的朋友能予以指点二三。
请热心的朋友加QQ 358247138--“ Steed·依然” 详聊。 展开
我们做的短信充值系统是通过模拟浏览器提交表单实现的。我们程序应用了webbrowser控件。大致过程如下:
1、 登录中国移动的4a登录平台
2、 4a登录后打开第二层登录页面,这里面的账号+地址 是由中国移动给出的,通过浏览器登录时只需要点击“登录”按钮即可。用程序触发“登录”事件。
3、 触发登录事件后,会自动弹出IE浏览器,然后加载弹出页面,紧接着跳转到第二个页面,第二个页面就是登录成功的页面。因为移动程序会弹出IE打开页面而不是在我们的程序中打开,我们的程序因为获取不到网页信息而出现登录超时异常。
4、 我们必要把登录后的页面捕获到,放到系统的webbrowser中进行操作,才能模拟充值操作。
(该系统的应用有两个限制:1、移动充值系统只能用IE的核来实现各种操作并且需要4a登录插件。2、移动的充值平台只能通过移动的专线才能登录。)
遇到的问题:
现在的问题是如何捕获到弹出的页面,并加载到程序的webbrowser中。只有把网页加载到webbrowser里面我们才能进行充值的各种模拟操作。
我们尝试过把弹出网页的地址直接加载到webbrowser中,然而这种方法会提示【用户失效】。
我们也尝试过用WebBrowser控件的NewWindow事件、以及AxWebBrowser控件的NewWindow2、NewWindow3等事件,来禁止弹出新窗体,可是这些事件根本不执行。
我们也尝试过在IE登录系统后,在程序里面直接加载弹出网页。
上述方法统统失败了!不知道是不是移动的那个插件在捣鬼,还是其它什么原因……
解决问题的思路:
我们现在的思路是自己写个简易的浏览器分析引擎,直接和服务器通信,通过分析服务器发回的数据包,把弹出的页面加载到程序里面,而不是用IE打开。用这种方法应该可以获取sessionid,这或许能解决用户失效问题。
或者编写一个IE插件,当处理到IE打开窗口加载弹出页时插件和我们的程序建立服务器/客户关系,帮我们实现程序充值的模拟表单提交功能。
不知道这两种方式是否可行,更不知道这两种软件如何编写,很迷茫啊,所以请有经验的朋友能予以指点二三。
请热心的朋友加QQ 358247138--“ Steed·依然” 详聊。 展开
展开全部
oid distribute(sqlist_node R[],int p,int i,int f[],int e[]) // 按第i位关键字的分配算法
{
int j,k;
for (j=0; j<10; ++j) f[j] = -1; while(p!=-1)
{
for(k=0,j=R[p].data;k<i;k++) j/=10; j=j%10;
if (f[j]==-1) f[j] = p;
else R[e[j]].next = p;
e[j] = p;
p = R[p].next;
}
}
{
int j,k;
for (j=0; j<10; ++j) f[j] = -1; while(p!=-1)
{
for(k=0,j=R[p].data;k<i;k++) j/=10; j=j%10;
if (f[j]==-1) f[j] = p;
else R[e[j]].next = p;
e[j] = p;
p = R[p].next;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询