C# winform如何使用activeX控件?

yzmsb4 2011-05-14 11:19:40
code=C#]<html>
<body>
<p>Hello World Control
<OBJECT id="HelloWorldControl1" height="300" width="300"

classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl"
VIEWASTEXT>
</OBJECT>
<br>
</p>
</body>
</html>

[/code]


关于activeX的HTML源码如上,IE能认得,C#就不能调用?
...全文
373 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2011-05-15
  • 打赏
  • 举报
回复
项目菜单-添加引用-COM组件,浏览。
yzmsb4 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nocky 的回复:]
C#是在服务器上运行的,ActiveX控件是在客户端运行的,都不在一个机器上怎么调用啊?
[/Quote]

我说的C#是指 winform程序呀。。。。本地的
noock 2011-05-15
  • 打赏
  • 举报
回复
C#是在服务器上运行的,ActiveX控件是在客户端运行的,都不在一个机器上怎么调用啊?
dzswej 2011-05-15
  • 打赏
  • 举报
回复
很简单
// 找到密码控件,填写123456
// <!--<object name="_fmu.l._0.p_ie" width="194" height="24" tabIndex="2" id="_fmu.l._0.p_ie" classid="clsid:488A4255-3236-44B3-8F27-FA1AECAA8844" codeBase="https://download.alipay.com/aliedit/aliedit/2401/aliedit.cab#Version=1,1,0,0">-->
var alipwdPlaceholder = (document as IHTMLDocument3).getElementById("_fmu.l._0.p_ie") as IHTMLObjectElement;

// 以下代码使用支付宝控件原生方式进行填充,不过无效。。。
//dynamic alipwd = alipwdPlaceholder.@object;
//ALIEDITLib.IEditCtrl editCtl = alipwd;
//editCtl.Crypto(true, 0, "123456");

// 以下代码使用WM_CHAR方式填充
IntPtr hwnd;
IOleInPlaceActiveObject pao = alipwdPlaceholder.@object;
int hr = pao.GetWindow(out hwnd);
if (hr != 0)
Marshal.ThrowExceptionForHR(hr);
// 找第一个子窗口
hwnd = (IntPtr)AutomationElement.FromHandle(hwnd).FindFirst(TreeScope.Children, Condition.TrueCondition).Current.NativeWindowHandle;
// 填充
foreach (char c in "123456")
{
SendMessageW((int)hwnd, WM_CHAR, (int)c, 0);
}
Console.WriteLine("Input [{0}] into alipwd textbox({1}).", "123456", hwnd);

参考
mingcsharp 2011-05-15
  • 打赏
  • 举报
回复
项目菜单-添加引用-COM组件,浏览。
就是这样,通过这样C#会对这个com组件进行一次包装,成为一个dll,里面引用就可以了,就像C#中类一样用法。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧