无 TForm 窗口程序,怎么能让它不会一打开就关掉? 没有 Form ,也没有 {$APPTYPE CONSOLE} ,就是一个Project. 运行的时候,刚打开就自动关了.里面应该怎么写代码让它进行相应的工作直到得到指定的命令(什么命令,是不是close?)时才关闭程序?能否给个具体的实例?希望有人能指点一下. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给LZ打点基础:windows的普通窗口应用程序,运行后就有窗口函数进行消息循环处理,不会自动退出,至到接收到WM_CLOSE消息,就退出消息循环,应用程序也就退出了.LZ你的应用中,没有Form,自己又没有实现窗口函数,当然一运行就退出了.>>里面应该怎么写代码让它进行相应的工作直到得到指定的命令(什么命令,是不是close?)时才关闭程序命令?windows编程中,极少使用命令这个术语,我还没有办法解析;一般来说,就用消息吧,应用程序是通过响应各种消息、事件来响应用户的操作的;如果LZ的应用没有窗口,那考虑一下用TService来写一个服务程序吧。 太谢谢楼上的朋友了~!你所说的TService服务程序能介绍一下吗?我接触DELPHI没几天.另外我听朋友说用 while true do ..... 语句,但是我不知道该怎么用到 Dpr 里面去. 下面的代码没窗口,但是不会自动退出.只能用任务管理器强行退出program Test;uses Windows, Messages, SysUtils;function WindowProc( hWindow: HWND; aMessage: UINT; wParam, lParam: longint ): longint; stdcall; export;begin case aMessage of// WM_KEYDOWN:// if aMeg.WParam = VK_RETURN then// PostMessage(hWindow, WM_DESTROY, 0, 0); WM_DESTROY: PostQuitMessage( 0 ); else Result := DefWindowProc( hWindow, aMessage, wParam, lParam ); end; Result := 0;end;function ExecWin( hWindow: HWND ): longint;var aMessage: TMsg;begin ShowWindow( hWindow, CmdShow ); UpdateWindow( hWindow ); while GetMessage( aMessage, 0, 0, 0 ) do begin TranslateMessage( aMessage ); DispatchMessage( aMessage ); end; Result := aMessage.wParam;end;var hWindow: HWND;begin hWindow := 0; Halt( ExecWin( hWindow ) );end. ^_^maozefa(阿发伯) 是对的。自己写窗口消息处理函数 WindowProc(应用程序注册的回调函数)来处理传来的窗口消息。************************************************* while GetMessage( aMessage, 0, 0, 0 ) do begin TranslateMessage( aMessage ); DispatchMessage( aMessage ); end;*************************************************GetMessage( aMessage, 0, 0, 0 )检查消息队列是否有此应用程序需要处理的任何窗口消息TranslateMessage( aMessage );把特定的窗口消息转换为可供处理的格式DispatchMessage( aMessage );分派窗口消息给应用程序注册的回调函数 一个关于delphi中滚动条的比较实用的问题 Delphi中的Shape控件问题 小问题 DELPHI 在调用C的DLL时出错? delphi+sqlserver:客户端连接不上数据库的问题 有关主从表的一个问题? 最近我做的一个软件总是在运行时报这样的错。急急!!! 哪位老大有 FastReport for delphi6 控件,给我一份吧! 送分,送分,有谁能帮我解释一下DELPHI中的RTTI吗?(详细点:)) 有否函数得到系统资源的使用情况,如需要得到当前系统资源的占用率? 如何在给mainmenu加载项的时候不发生闪烁 算法?
>>里面应该怎么写代码让它进行相应的工作直到得到指定的命令(什么命令,是不是close?)时才关闭程序命令?windows编程中,极少使用命令这个术语,我还没有办法解析;
一般来说,就用消息吧,应用程序是通过响应各种消息、事件来响应用户的操作的;如果LZ的应用没有窗口,那考虑一下用TService来写一个服务程序吧。
另外我听朋友说用 while true do ..... 语句,但是我不知道该怎么用到 Dpr 里面去.
Windows,
Messages,
SysUtils;function WindowProc( hWindow: HWND; aMessage: UINT; wParam,
lParam: longint ): longint; stdcall; export;
begin
case aMessage of
// WM_KEYDOWN:
// if aMeg.WParam = VK_RETURN then
// PostMessage(hWindow, WM_DESTROY, 0, 0);
WM_DESTROY:
PostQuitMessage( 0 );
else Result := DefWindowProc( hWindow, aMessage, wParam, lParam );
end;
Result := 0;
end;function ExecWin( hWindow: HWND ): longint;
var
aMessage: TMsg;
begin
ShowWindow( hWindow, CmdShow );
UpdateWindow( hWindow );
while GetMessage( aMessage, 0, 0, 0 ) do
begin
TranslateMessage( aMessage );
DispatchMessage( aMessage );
end;
Result := aMessage.wParam;
end;var
hWindow: HWND;
begin
hWindow := 0;
Halt( ExecWin( hWindow ) );
end.
maozefa(阿发伯) 是对的。
自己写窗口消息处理函数 WindowProc(应用程序注册的回调函数)来处理传来的窗口消息。
*************************************************
while GetMessage( aMessage, 0, 0, 0 ) do
begin
TranslateMessage( aMessage );
DispatchMessage( aMessage );
end;
*************************************************
GetMessage( aMessage, 0, 0, 0 )
检查消息队列是否有此应用程序需要处理的任何窗口消息
TranslateMessage( aMessage );
把特定的窗口消息转换为可供处理的格式
DispatchMessage( aMessage );
分派窗口消息给应用程序注册的回调函数