有开发出能够供asp调用的activex经验的大虾进来指点一下
程序目的:
想通过asp来传参数给socket Client,再由socket Client想socket Server发送信息。
方法:
用delphi开发出能够传参数给窗口的dll,再用asp来调用。
实际问题:
在同一方法下,如果直接制作两个程序,从程序a,传参数程序b,可以实现。但是由delphi开发的activex dll经asp调用后,确找不到b的窗口句柄!
代码:
activex:
uses
ComObj, ActiveX, ControlServer_TLB, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls, Sockets, ASPTypeLibrary_TLB, StdVcl, Windows;
procedure TControl.SendCommand(const Command: WideString);
var
s:pchar;
h:hwnd;
buf:tagCOPYDATASTRUCT;
begin
h:= FindWindow(nil,PChar('ClientForm'));
if h <> 0 then
begin
m_scriptContext.Response.Write('SendMessage success!0');
s := pchar( Command );
buf.lpData :=s;
buf.cbData:=100;
buf.dwData :=100;
SendMessage(h, WM_COPYDATA, 0, integer(@buf));
end
else
begin
m_scriptContext.Response.Write('not find the ClientFrom0.');
end;
end;
程序b:
procedure TClientForm.Proc(var msg: TMessage);
var
P:^tagCOPYDATASTRUCT;
begin
if msg.Msg = WM_COPYDATA then
begin
p:=Pointer(Msg.lParam);
ShowMessage(strpas(p.lpData));
end;
WndProc(Msg);
end;