在操作设备的过程中添加
Application.ProcessMessages;

解决方案 »

  1.   

    application.Terminate也是不行的
    还要创建线程?
    有没有函数可以强制退出的?
      

  2.   

    程序并不是因为没有响应才退不出去。
    我跟踪发现程序已经执行了OnClose事件还是没有用。
      

  3.   

    楼上说的对,只要在进行繁忙操作时,都可以使用Application.ProcessMessages;
    退出Application.Terminate
      

  4.   

    Application.ProcessMessages;
    退出Application.Terminate
      

  5.   

    把这个程序的进程强行关闭!
    HWND hWnd;
    // 先得到想要关闭的窗口的句柄
    // 比如用FindWindow
    hWnd=FindWindow(NULL,_T("dlg")); 
    if ( hWnd ==NULL )
    return ;
    // 下面是关闭进程的两种方法
    // // 如果来文的则 //
    ::PostMessage(hWnd,WM_CLOSE,0,0);// // 如果来武的则 //
    DWORD dwProcessId;
    // 得到该窗口的进程ID
    GetWindowThreadProcessId(hWnd,&dwProcessId);
    // 从进程ID打开进程句柄
    HANDLE handle=OpenProcess(0,FALSE,dwProcessId);
    // 强制终止进程
    TerminateProcess(handle,0);
      

  6.   

    wangkun007(大坤):
    我想要武的,可惜获取不了句柄,我的窗体名称是MainForm,在Delphi用FindWindow(nil, PChar(Self.Name))和FindWindow(nil, 'MainForm')返回都是0.这样子写对不对?DongXF(我佛山人):
    用了Halt后,程序确实是马上退出了,但是在任务管理器里看进程还是存在的,强制结束都关不掉。
      

  7.   

    Halt 是一個不得已的辦法,最好還是做好善後工作後再正常退出