我建了一个进程外服务器
1> new -> application
2> new -> AutoMation Object
这时候调用会有个窗体,能正常调用自动对象。
然后把Application中的Form删除编译,就无法正常使用
报:
---------------------------
Debugger Exception Notification
---------------------------
Project Project4.exe raised exception class EOleSysError with message '服务器运行失败'. Process stopped. Use Step or Run to continue.
---------------------------有窗体的App代码
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
无窗体的App代码
begin
Application.Initialize;
//Application.CreateForm(TForm1, Form1);
Application.Run;
end.分析后发现,在有窗体的时候,消息在窗体中循环不会退出,一旦删除这个空窗体后运行未进入消息循环直接退出宿主关闭导致无法调用。
直接隐藏主窗体是可以,但是当调用主窗体就像幽灵一样闪现。如何才能建进程外没有主窗体服务?
1> new -> application
2> new -> AutoMation Object
这时候调用会有个窗体,能正常调用自动对象。
然后把Application中的Form删除编译,就无法正常使用
报:
---------------------------
Debugger Exception Notification
---------------------------
Project Project4.exe raised exception class EOleSysError with message '服务器运行失败'. Process stopped. Use Step or Run to continue.
---------------------------有窗体的App代码
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
无窗体的App代码
begin
Application.Initialize;
//Application.CreateForm(TForm1, Form1);
Application.Run;
end.分析后发现,在有窗体的时候,消息在窗体中循环不会退出,一旦删除这个空窗体后运行未进入消息循环直接退出宿主关闭导致无法调用。
直接隐藏主窗体是可以,但是当调用主窗体就像幽灵一样闪现。如何才能建进程外没有主窗体服务?
解决方案 »
- 如何对Float小数点后一位四舍五入,并且取绝对值?
- 放分,讨论下delphi编写驱动的问题
- 招聘delphi人才
- 错误“invalid parameter”可能是什么造成的?
- 串口问题:如何对数据进行校验?
- 送分,用WebSnap开发的网页如何调试!很急,在线等!
- DELPHI下如何把数据库中的内容写到WORD文档
- 使用mediaplayer播放mp3时,如何控制左右声道的问题?高手请关注!!!
- 如何在DLL中连接一个打开的程序的过程
- 关于控件数组和动态数组?
- 急急急.......!求ImageEnView的SetViewXY(x, y: integer)函数中的两个参数具体含义
- 在dbgrid加checkbox运行点的时候看到后面的字
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm := False;
Application.Run;加入 Application.ShowMainForm := False;这一句看看
这样调用一次,会刷屏闪烁一次。任务栏会刷一下。调用一次,还是会闪一下,是因为界面失去焦点。任务栏会刷一下。
procedure TForm7.FormCreate(Sender: TObject);
begin
Height := 0;
Width := 0;
// 这样任务栏里也不显示^_^
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;如果能解决闪烁问题,那就圆满了。
小弟是个自动对象,不知道如何放在while中处理?
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
FillChar(StartupInfo,Sizeof(StartupInfo),0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOWNORMAL; //隐藏的话改为SW_HIDE
CreateProcess(nil,
'test.exe', //要运行的程序
nil,
nil,
false,
0,
nil,
nil,
StartupInfo,
ProcessInfo);end.
或者用这句让程序不在任务栏显示
[code=客户端调用]procedure TForm5.btn1Click(Sender: TObject);
var
p:INoWindows;
begin
p := CoNoWindows.Create;
p.Method1;
p := nil;
end;[/code]
var
p:INoWindows;
begin
p := CoNoWindows.Create;
p.Method1;
p := nil;
end;
Windows, Messages; //这里只是增加这两个单元,不一定只要这两个。{$R *.res}var
lpMsg: tagMSG;begin
while GetMessage(lpMsg, 0, 0, 0) do
begin
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
end;
end.