Jsp中嵌入ActiveX控件,用此控件调用其它Exe程序,可以实现吗?关键步骤怎么做?(100分)

  • 主题发起人 主题发起人 jonvey
  • 开始时间 开始时间
J

jonvey

Unregistered / Unconfirmed
GUEST, unregistred user!
要实现的结果是:在客户端浏览器中,点击菜单时,启动一个客户端的EXE程序(知道位置),并且此EXE程序的界面要嵌入到浏览器里面(打算做一个ActiveX控件,嵌入JSp页面中,用来控控制EXE的窗口)。
各位高手,看看可以实现吗,怎么做?
是否还有其它更好的方法来达到目的?
做控件的目的就是要控制EXE程序的窗口。此控件可以用JavaBean实现吗?

回答满意的也可到JSP/Servlet版面此题下领取分数。
 
自己顶一下,等技术架构全面的高手来。
 
n年前就做过,不过没吧exe嵌入activex,找我到http://www.ysza.com
------------------------------------------------------
免费影视 http://www.best012.com
美图天下 http://www.mttx365.com
成人笑话 http://www.haha77.com
 
to 楼主:
如何jsp 如何调active 我就不说了!
active 如何调.exe 我就不说了!
下面这个MiniShell 你看看吧!

unit Miniddczp;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
SysUtils, shellapi, Registry, WINDOWS, ComObj, ActiveX, Project1_TLB, StdVcl;

const
C_MainKey = 'DDTECH';
C_DDCZP = 'DDCZP';

type
TMiniDDCZP = class(TAutoObject, IMiniDDCZP)
protected
procedure Set_LGUID(const Value: WideString);
safecall;
procedure Set_LUSER(const Value: WideString);
safecall;
{ Protected declarations }
public
FGUID: string;
FUSER: string;
end;


implementation

uses ComServ;

procedure DeleteKey(value: string);
var
Reg: TRegistry;
begin

Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/' + C_MainKey, true) then

begin

reg.DeleteValue(value);
Reg.DeleteKey(value);

end;

finally
Reg.Free;

end;


end;



procedure SetKey(value: string);
var
Reg: TRegistry;
begin

Reg := TRegistry.Create;
try
//声明注册表主键

Reg.RootKey := HKEY_LOCAL_MACHINE;
//打开注册表路径。。。。。。。。

if Reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/' + C_MainKey, True) then

begin

/// 打开成功, 写入注册表。。。。
Reg.WriteString(value, ParamStr(0));
// MyApp 项名
// ParamStr(0) 当前的操作项
//关闭
Reg.CloseKey;
end;

finally
// 释放内存
Reg.Free;

end;

end;



function ReadKey(value: string): string;
var
Reg: TRegistry;
begin

result := '';
Reg := TRegistry.Create;
try
//声明注册表主键

Reg.RootKey := HKEY_LOCAL_MACHINE;
//打开注册表路径。。。。。。。。

if Reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/' + C_MainKey, True) then

begin

/// 打开成功, 写入注册表。。。。
result := Reg.ReadString(value);
// MyApp 项名
// ParamStr(0) 当前的操作项
//关闭
Reg.CloseKey;
end;

finally
// 释放内存
Reg.Free;

end;

end;



procedure TMiniDDCZP.Set_LGUID(const Value: WideString);
begin

FGUID := VALUE;
end;


procedure TMiniDDCZP.Set_LUSER(const Value: WideString);
var S: string;
begin

FUSER := VALUE;
s := ReadKey(c_ddczp);
if not fileexists(s) then

begin

MESSAGEBOX(0, '文件不存在...', '提示', mb_ok);
exit;
end;

ShellExecute(0, nil, PCHAR(S), PCHAR(FGUID + ' ' + FUSER), PCHAR(ExtractFilepath(S)), sw_ShowNormal);
end;


initialization
TAutoObjectFactory.Create(ComServer, TMiniDDCZP, Class_MiniDDCZP,
ciMultiInstance, tmApartment);
end.
 
有空来
www.51merit.com
看看!
 
楼上这位兄弟,明天我去办公室试试,你这段代码应该是能设置EXE的窗口大小吧,如果我知道EXE的窗口名和类名,那么用JAVA中的哪个类的函数去控制这个窗口呢,比如关闭此窗口,显示此窗口到所有窗口的最上面等。
现在想可以不做成ActiveX控件,直接用JavaBean实现此功能,可以真正的跨平台。
希望各位高手指点。
 
再顶一下!
 
后退
顶部