关于COM口调用程序,OLE/OLE2,虚拟桌面技术的问题。 (100分)

  • 主题发起人 sailang2000
  • 开始时间
S

sailang2000

Unregistered / Unconfirmed
GUEST, unregistred user!
关于COM口调用程序,OLE/OLE2,虚拟桌面技术的问题。欢迎解决问题。
 
我今天还在搞这个东西,最简单的办法是webbrowser中打开,但是没有系统菜单,只有快捷菜单
你可以试试。不知道符合你的要求伐!
 
我们实现的是调用Word。
 
rockjie, 能不能做个简单的demo发给我?
 
方便的话把基本的东西贴上来吧,我也想知道。
 
就是wbb.navigate(url)就可以了啊
 
我要的不是这个样子的。
 
那你要的是什么?!不是在你的一个应用里面放个TWebBrowser控件就解决了嘛?!
 
我有Execl的,Word的原理应差不多。如果要给我来Mail:fdaf4@163.com
另:自已搜一下,这种东东已经多得像垃圾了
 
唉,谢谢大家,你们说的我都会,可都是不符合我的需要,我想做的是把word嵌入我的程序中,
看起来象我的系统的可自由操作的一部分,而不是重新打开一个程序,然后控制它。真的没有人
能回答我的问题吗?其他任何变态的方式也行,但就是要做到把word嵌入开发的程序中,看起来象
我的系统的可自由操作的一部分,而不是重新打开word程序,看起来就是两套系统。
 
Ole方式不满足你的需求。
另外开一个程序也不满足你的需求。
那你就做一个桌面好了,让程序在你的桌面上运行[:D]
 
其实大家可以看看:http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517,大家说的都还不如这里面写的。
我看过,但也是不符合我的要求。
 
yzhshi,你的主意高,可是怎么个做法?这个我可没做过。呵呵,太感谢你了。help。
 
在窗体上放一个OLECONTAINER和一个WORDAPPLICATION控件,再放一个按钮,
在按钮的事件里如此写:
OleContainer1.CreateObjectFromFile ('A Test File Path', False); //A test File为一指定WORD文档
OleContainer1.DoVerb (ovInPlaceActivate);
WordApplication1.ConnectTo(IDISPATCH (OleContainer1.OleObject.Application) as _Application);
WordApplication1.ActiveDocument.Paragraphs.Last.Range.InsertAfter('It''''s OK!');
 
yzhshi,help!!
 
wk_knife, 谢谢你。但是我如果调用其他的程序,非office程序,也可以嵌入的话,我分全给你。
 
我也没有做过,以下供参考。
还有,使用Ole的方式可能不满足你的需求,打印比较麻烦。
那种方式适合可以Ole的对象

建立桌面
CreateDesktop(
'name of desktop',
Nil, Nil, 0,
DESKTOP_CREATEMENU or
DESKTOP_CREATEWINDOW or
DESKTOP_SWITCHDESKTOP or
DESKTOP_READOBJECTS or
DESKTOP_WRITEOBJECTS or
STANDARD_RIGHTS_REQUIRED,
Nil );
切换桌面:
HDESK OpenDesktop(
LPTSTR lpszDesktop, // desktop name
DWORD dwFlags, // interaction option
BOOL fInherit, // inheritance option
ACCESS_MASK dwDesiredAccess // handle access
);

BOOL SwitchDesktop(
HDESK hDesktop // handle to desktop to activate
);

关闭桌面:
BOOL CloseDesktop(
HDESK hDesktop // handle to desktop
);

在特定的桌面上运行程序:
procedure RunProgramOnDesktop(filename:string;desktop:string);
Var
si : StartUpInfo;
pi : PROCESS_INFORMATION;
bStarted : Boolean;
dw : DWord;
lr : LResult;
szCurDir : Array[0..MAX_PATH] Of Char;
szAppToRun : Array[0..MAX_PATH] Of Char;
begin
ZeroMemory(@si, SizeOf(StartUpInfo));
ZeroMemory(@pi, SizeOf(PROCESS_INFORMATION));
si.cb := SizeOf(StartUpInfo);
SI.lpDesktop := pchar(desktop);
//si.lpDesktop := Nil;
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_SHOWDEFAULT;

bStarted := CreateProcess(Nil, //lpApplicationName: PChar;
pchar(filename), //lpCommandLine: PChar;
Nil, //PSecurityAttributes,
Nil, //PSecurityAttributes
false, //bInheritHandles
NORMAL_PRIORITY_CLASS,//dwCreationFlags
Nil, //lpEnvironment
nil, //lpCurrentDirectory
si, //TStartupInfo
pi); //TProcessInformation
//ShowMessage(SysErrorMessage(GetLastError));
end;
 
yzhshi,ole/ole2他们的区别主要在那里?
正如你说的那样,如果采用虚拟桌面的方式可以达到怎么样的效果?有那些软件有这种效果?
那些网吧管理软件的效果?还是...........??
 
目前不知道有什么软件这么玩的。
不过多桌面的软件倒是长见。也许存在其他我们不知道的技术难度,也许我们使用上面的代码形成的桌面和
我们实际操作的桌面一样,都不受我们控制[:D]
 
顶部