[何在][网页][输入]如何在VC中向网页中的输入框发送回车消息

09月 16th, 2008 by admin
Posted in VC/MFC | No Comments »

我用webbrowser空间打开一个网页,但在表单中有连个输入框,分别是:
<input name=id1 onkeypress=if(event.keyCode==13){Onwon(1)} />
<input name=id2 onkeypress=if(event.keyCode==13){Onwon(2))} />
也就是输入框中按回车调用javascript函数
我如何在我的程序中给输入框发回车消息,使它调用javascript函数呢?(调用和IHTMLDocument那个相关的接口能实现呢?)
谢谢

用mshtml来实现

我就是用mshtml来实现的 但是不知道用那个接口

Tags: , , ,

[ActiveX][控件][网页]ActiveX控件在网页上不显示什么原因

09月 15th, 2008 by admin
Posted in VC/MFC | No Comments »

本机测试,就是用MFC ActiveX向导默认生成的,用如下方法嵌入网页却不显示
<object  name=dtFr  classid=clsid:72B1CB72-C23C-4AFD-BB1B-FF16AA8CDC14  style="height:120;width:120" codebase="E:My Worksvc6ActXTryDebugacttry.ocx"> </object>
现实的只有一个

IObjectSafety接口,

up

vc6,直接按照向导生成一个MFC ActivX工程(画椭圆的那个),在网页上加载,选择允许ActiveX运行,是否可以运行?(我的不行…),看到有人说这样可以的。。。。

Tags: , , ,

[recv][网页][数据]recv到网页数据的查找问题

09月 7th, 2008 by admin
Posted in VC/MFC | No Comments »

TCP方式

char *webInfor = new char[1024];
while(1)
{
  int ilen = recv(socket,webInfor,strlen(webInfor),0);
  if(ilen < 1024)break;
}
这样recv回来的网页数据都存入webInfor这个char串里了(就是那个页面的源文件,好像也叫那个什么html文档来着..)
如果我想在这个char串里查找到某几个字符,而这几个字符又是乱码(在网页上是中文,存到char串里就变成乱码的).
或者说我要中文字符跟那乱码对比..应该转成什么形式进行对比
查找的思路是什么? 这个乱码可以通过一些函数转换成中文吗? 请各位大侠赐教

你要把全部字节流接收完后,在看其网页是用utf-8还是用gb2312编码,然后就没问题了.

要先知道网页的编码格式,在接收到这些数据后,把webInfor中的数据转为对应格式的字符串,然后去比较。

简体中文网页乱码通常为utf-8编码
使用如下函数转换一下就可以了

char * UTF82Ansi(char *psz)
{

int iLen=strlen(psz)+1;
WCHAR * pbuf;
pbuf=new WCHAR[iLen];
if (MultiByteToWideChar( CP_UTF8, 0, psz, iLen,pbuf, (DWORD)iLen) == 0)
{
delete pbuf;
return NULL;
}
memset(psz,'',iLen);
if(WideCharToMultiByte(CP_ACP, 0, pbuf,-1,psz, iLen-1, NULL, NULL)==0)
{
delete pbuf;
return NULL;
}
delete pbuf;
return psz;
}

有几个判断编码的步骤,按照顺序判断,满足即停止:
1、判断文件类型。根据文件的MIME类型来做不同处理,如果确信该文件是文本类型(比如HTML),可以从响应包中读取字符编码。
2、如果响应包中没有提供编码信息,则需要从文件内容来读取编码信息,一般首先读取前512字节或者1024字节内容。
3、判断是否有特定的BOM信息,如果发现了BOM,马上就能判断出文件的字符编码类型,比如UTF8或者UNICODE。
4、如果没有BOM,尝试按照ANSI编码寻找特定的 <HTML> <HEAD> <META>标签,多数情况下能从META标签获得该HTML文件的编码类型,然后根据获得的类型重新转换整个文件内容。
5、其他情况,一律按照UTF-8编码做默认转换。

recv(socket,webInfor,strlen(webInfor),0)
                    ~~~~~~~~~~~~~~~~
recv(socket,webInfor,1024,0)

Tags: , , ,

[recv][网页][数据]recv到网页数据的查找问题

09月 7th, 2008 by admin
Posted in VC/MFC | No Comments »

TCP方式

char *webInfor = new char[1024];
while(1)
{
  int ilen = recv(socket,webInfor,strlen(webInfor),0);
  if(ilen < 1024)break;
}
这样recv回来的网页数据都存入webInfor这个char串里了(就是那个页面的源文件,好像也叫那个什么html文档来着..)
如果我想在这个char串里查找到某几个字符,而这几个字符又是乱码(在网页上是中文,存到char串里就变成乱码的).
或者说我要中文字符跟那乱码对比..应该转成什么形式进行对比
查找的思路是什么? 这个乱码可以通过一些函数转换成中文吗? 请各位大侠赐教

你要把全部字节流接收完后,在看其网页是用utf-8还是用gb2312编码,然后就没问题了.

要先知道网页的编码格式,在接收到这些数据后,把webInfor中的数据转为对应格式的字符串,然后去比较。

简体中文网页乱码通常为utf-8编码
使用如下函数转换一下就可以了

char * UTF82Ansi(char *psz)
{

int iLen=strlen(psz)+1;
WCHAR * pbuf;
pbuf=new WCHAR[iLen];
if (MultiByteToWideChar( CP_UTF8, 0, psz, iLen,pbuf, (DWORD)iLen) == 0)
{
delete pbuf;
return NULL;
}
memset(psz,'',iLen);
if(WideCharToMultiByte(CP_ACP, 0, pbuf,-1,psz, iLen-1, NULL, NULL)==0)
{
delete pbuf;
return NULL;
}
delete pbuf;
return psz;
}

有几个判断编码的步骤,按照顺序判断,满足即停止:
1、判断文件类型。根据文件的MIME类型来做不同处理,如果确信该文件是文本类型(比如HTML),可以从响应包中读取字符编码。
2、如果响应包中没有提供编码信息,则需要从文件内容来读取编码信息,一般首先读取前512字节或者1024字节内容。
3、判断是否有特定的BOM信息,如果发现了BOM,马上就能判断出文件的字符编码类型,比如UTF8或者UNICODE。
4、如果没有BOM,尝试按照ANSI编码寻找特定的 <HTML> <HEAD> <META>标签,多数情况下能从META标签获得该HTML文件的编码类型,然后根据获得的类型重新转换整个文件内容。
5、其他情况,一律按照UTF-8编码做默认转换。

recv(socket,webInfor,strlen(webInfor),0)
                    ~~~~~~~~~~~~~~~~
recv(socket,webInfor,1024,0)

Tags: , , ,

[技术][捕获][网页]什么技术能捕获网页中的javascript事件

08月 27th, 2008 by admin
Posted in VC/MFC | No Comments »

比如网页中有个javascript函数
我想写一个应用程序,在页面调用这个函数的时候
得到函数的名称和参数,
似乎是activex技术可以
但不知道具体是什么东西

有熟悉的请介绍下

不太明白你的意思,执行脚本函数很简单,使用IHTMLWindow2::execScript方法就可以调用,但是得到函数的名称和参数是什么意思?

主要问题是我对VC不懂
我是用wxpython的IE封装库来操作的
我的目的是加载一个网页,
该网页中的有个javascript函数会执行
这个函数两个参数,分别为网页的高和宽

所以我需要在应用程序中得到这个函数的名字和两个参数
然后根据参数调整程序窗口的大小

如果能给点思路,或给几个关键词就好了

这个—你可以去了解一下微软的script debugger是如何做到了,利用debug的功能去做

你的问题其实是想当这个脚本函数被调用时能被你截获,我刚刚搞定一个IDispatchEx的hook,为此花费了700可用分,绝对能解决你的问题,要是用在你这儿可能有点小题大做,你的20分对我的700分……:-(

不是不想帮你,分数无所谓,不过代码量有点大。

有更简易的方式,脚本函数执行完毕之后,你重新计算Document的大小,自己来调整窗口大小

Tags: , , ,

[加载][网页][Flash]VC怎么去加载一个网页上的Flash客户端程序急

08月 22nd, 2008 by admin
Posted in VC/MFC | No Comments »

VC怎么去加载一个网页上的Flash客户端程序??? 请高手讲清楚一下,最好有例子

楼上的朋友能否将清楚些,VC怎样使用webbrowse控件去加载FLASH程序?非常感谢

先在你的窗体上,加入webbrowse控件,webbrowse是一个浏览器控件,你可以用来打开网页,当然也可以播放网页上的Flash。

关于webbrowse的用法,你可以参见这份代码:http://www.vckbase.com/document/viewdoc/?id=1075

Tags: , , ,

[.exe-&gt][.ocx-&gt][网页]从.exe->.ocx->到网页

08月 18th, 2008 by admin
Posted in VC/MFC | No Comments »

我做了一个.exe客户端程序,想把它封装成ActiveX控件使用户通过浏览器即可执行客户端程序,   我已经通过vc6.0的MFC   ActiveX   Control   Wizard把.exe封装成了.ocx控件,但不知道如何嵌入到网页中去。

LS正解

我从网上查资料说是用object标签,但我没有试成功,不知道会不会是我把.exe转成.ocx的过程中出错了?
大虾能说说用MFC   ActiveX   Wizard转成.ocx的过程中,第一次执行时让选择可执行程序,我是该选要转的.exe程序,还是要选web   browser,然后再对ActiveX做界面啊?不知道我说的是不是有误,请大虾说说具体的转换步骤吧!

网页应该是能自动执行脚本的吧

我新建一个ActiveX工程后,建个对话框资源,随便来几个按钮,编辑框,然后在网页上显示都没有问题了。
但我现在不清楚的是如何把一个.exe文件转换成ActiveX控件,希望做过这方面朋友多提建议,谢谢!    
希望大家多交流,说说自己的想法.

我也需要这方面的知识,希望大家多提供一些信息,希望楼主找到办法大家一起分享..多谢多谢..

Tags: , , ,

[保存][帖子][网页]直接另存为不能保存帖子网页怎么才能保存帖子所在网页呢

07月 27th, 2008 by admin
Posted in VC/MFC | No Comments »

直接另存为不能保存帖子网页。请问怎么保存帖子到硬盘,点哪?

LZ你是问怎么操作?
1.去IE缓存里面找
2.用其它浏览器 Firefox  Maxton的保存为html
3.用离线浏览工具保存

没有简单易行的方法了吗?存一个网页要这么麻烦。
记得以前老版面的csdn有一个保存按钮,一点就存了,现在找不到了

Tags: , , ,

[网页][结合][编程]MFC与网页的结合编程

07月 23rd, 2008 by admin
Posted in VC/MFC | No Comments »

我是新手,今天刚注册进来的。想请教大家一个问题:我在MFC应用程序里面嵌入一个网页(自己用JSP或者ASP制作),网页里面有一些可供选择的文件(每个文件前面都用复选框标记),当用户鼠标点击复选框选择这些文件后,如何调用C++语言实现对选择信息的获取?比如说把这些文件信息写到某个指定的.txt文件里面。
我这样描述应该没有问题吧?请给个思路,或者说我应该查找哪些相关的资料呢?现在还没有分,恳请大家支持。

Tags: , , ,

[使用][操作][网页]使用DOM来操作网页自动填写表单其中怎样模拟对一个控件的onclick事件

07月 17th, 2008 by admin
Posted in VC/MFC | No Comments »

我是按照下面的代码做的,但是好像没啥反应,有什么问题?

C/C++ code
VARIANT_BOOL vRect; BSTR eventName = SysAllocString(L"onclick"); hr=pDisp->QueryInterface(IID_IHTMLElement3,(void**)&spElement3); ASSERT(SUCCEEDED(hr)); spElement3->fireEvent(eventName,0,&vRect);

另外,DOM里好像只有IHTMLElement3和IHTMLDocument4能模拟onclick、onchange之类的动作?
下面fireEvent的第二个参数是什么意思,有什么作用?最后的Remarks讲的是什么意思?

IHTMLElement3::fireEvent Method、IHTMLDocument4::fireEvent Method:
HRESULT fireEvent(
    BSTR bstrEventName,
    VARIANT *pvarEventObject,
    VARIANT_BOOL *pfCancelled
);
Parameters

bstrEventName
  [in] BSTR that specifies the name of the event to fire.
pvarEventObject
  [in] Pointer to a VARIANT that specifies the IHTMLEventObj interface from which the event properties are obtained.
pfCancelled
  [out, retval] VARIANT_BOOL that receives one of the following values:
  VARIANT_TRUE
      Event fired successfully.
  VARIANT_FALSE
      Event was cancelled.
Return Value

Returns S_OK if successful, or an error value otherwise.

Remarks

If the event being fired cannot be cancelled, IHTMLElement3::fireEvent(IHTMLDocument4::fireEvent) always returns VARIANT_TRUE.

Tags: , , ,