ShellExecute(Self.Handle, nil, 'CALC', nil, nil, SW_SHOWMAXIMIZED);Self.Handle:用这个窗口作为计算器的父窗口句柄,可是我的程序都退出来了,那个老不死的计算器怎么还在那儿啊,为什么不退出啊

解决方案 »

  1.   

    发送个windows消息把它关了不就行了
      

  2.   

    好像得发消息!
    procedure TForm1.CloseAppClick(Sender: TObject);//确定标题 
    var
    Exehandle:Thandle; 
    begin
    //获得句柄-->标题确定 
    ExeHandle:=findWindow(nil,'文件管理器');//返回句柄 
    //关闭程序
    if ExeHandle<>0 then 
    SendMessage(ExeHandle,WM_Close,0,0) 
    Else 
    Application.MessageBox('没有打开"文件管理器"!','提示', 
    MB_IconInformation+MB_OK); 
    end; 
      

  3.   

    这只是Parent的Handle,而不是Owner
      

  4.   


    var
      ExeHandle:Thandle;
    begin
      ExeHandle:=FindWindow(nil,pchar('计算器'));
      if ExeHandle<>0 then
        SendMessage(ExeHandle,WM_Close,0,0);   //关闭进程
    end;
      

  5.   


    可以findwindow来找到它的窗口句柄,然后sendmessage来关闭,如3楼
      

  6.   


    我有个问题,我要是把桌面进程Explorer结束掉,话能看到其他运行的程序吗,
    能不能把进程也设为从属关系呢?
      

  7.   


    Explorer结束掉,其他程序仍然在运行,也能看到
      

  8.   


    我的想法就是,把我的程序当作Explorer,把计算器当作一个程序,这样我的程序退出来了,至少计算器应该看不见对吧。