hWnd:=FindWindow(nil,'Afontane-安全钥匙');//
  if hWnd=0 then     //没有找到指定的窗口 ,则先启动ErpKey
    begin
      ShowMessage('请先启动ErpKey !');
      ShellExecute(handle, 'open', 'ErpKey.exe', nil, nil, SW_SHOWNORMAL);
      Halt;
    end
   else
   begin        //找到了,提到前台
    IF   PublicString='' then
      begin
         if IsIconic(hWnd) then          //如果已被最小化
           ShowWindow(hWnd,SW_RESTORE)   //则把它恢复
         else               //如果窗口被其他窗口遮住,则将它提到前景来
           SetForegroundWindow(hWnd);
       Halt;     //结束本程序
      end;
    end;红色部份,用halt就会报一个错误,‘access violation at address 000000000'
不用halt就不会报错,但是又达不到我的效果,那个地方要中止程序,请高手帮我看看,谢谢了
报那个错,如果你不管,也可以继续运行的

解决方案 »

  1.   

       Halt;这段要改成红色的,怎么没有成功,请大家注意一下,谢谢
      

  2.   

    是不是没有找到就要终止程序,如果是就在halt前加上application.t...什么了,不记得哪个单词了,T开头的,终止程序,或用ABORT;
      

  3.   


       Halt; 这段要改成红色的,怎么没有成功,请大家注意一下,谢谢
    是因为你的这段文字首先受到‘’它的约束
      

  4.   

    Halt;
    是非正常的关闭程序的方法,会立即关闭程序,会导致有些须释放的资源没有释放Terminate;
    正常的关闭应用程序,会释放由VCL自动分配的资源,会执行Onclose中的代码...等LZ的程序,好像用不着Halt吧!!!
      

  5.   

    用 Application.Terminate  吧,