没有 Form ,也没有 {$APPTYPE CONSOLE} ,就是一个Project. 运行的时候,刚打开就自动关了.里面应该怎么写代码让它进行相应的工作直到得到指定的命令(什么命令,是不是close?)时才关闭程序?能否给个具体的实例?希望有人能指点一下.

解决方案 »

  1.   

    给LZ打点基础:windows的普通窗口应用程序,运行后就有窗口函数进行消息循环处理,不会自动退出,至到接收到WM_CLOSE消息,就退出消息循环,应用程序也就退出了.LZ你的应用中,没有Form,自己又没有实现窗口函数,当然一运行就退出了.
    >>里面应该怎么写代码让它进行相应的工作直到得到指定的命令(什么命令,是不是close?)时才关闭程序命令?windows编程中,极少使用命令这个术语,我还没有办法解析;
    一般来说,就用消息吧,应用程序是通过响应各种消息、事件来响应用户的操作的;如果LZ的应用没有窗口,那考虑一下用TService来写一个服务程序吧。
      

  2.   

    太谢谢楼上的朋友了~!你所说的TService服务程序能介绍一下吗?我接触DELPHI没几天.
    另外我听朋友说用 while true do ..... 语句,但是我不知道该怎么用到 Dpr 里面去.
      

  3.   

    下面的代码没窗口,但是不会自动退出.只能用任务管理器强行退出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.
      

  4.   

    ^_^
    maozefa(阿发伯) 是对的。
    自己写窗口消息处理函数 WindowProc(应用程序注册的回调函数)来处理传来的窗口消息。
    *************************************************
      while GetMessage( aMessage, 0, 0, 0 ) do
      begin
        TranslateMessage( aMessage );
        DispatchMessage( aMessage );
      end;
    *************************************************
    GetMessage( aMessage, 0, 0, 0 )
    检查消息队列是否有此应用程序需要处理的任何窗口消息
    TranslateMessage( aMessage );
    把特定的窗口消息转换为可供处理的格式
    DispatchMessage( aMessage );
    分派窗口消息给应用程序注册的回调函数