全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:7280
推到 Plurk!
推到 Facebook!

如何將 用ShellExecute 開啟的外部程式關掉??

尚未結案
chi30
一般會員


發表:5
回覆:17
積分:4
註冊:2005-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-02 18:25:15 IP:59.121.xxx.xxx 未訂閱
大家好, 請問要如何將 用ShellExecute 開啟的外部程式關掉?? 用ShellExecute 執行一程式沒問題.  不過在BCB 的程式裡將其關掉, 就有問題了.  我用的是PostMessage 的方法. 不知有無其它可行的方法.     我的source  如下.
//*.h
HWND m_Handle;    //--------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//執行 console
    m_Handle = ShellExecute(Handle,NULL,"cmd.exe",NULL,NULL,SW_MAXIMIZE);
}
//--------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    PostMessage(m_Handle,WM_CLOSE,0,0);
}    
YoHo~~~
------
YoHo~~~
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-03 11:38:40 IP:61.228.xxx.xxx 未訂閱
chi30, 使用ShellExecute開啟外部程式,無法使用你的方法去關閉它,因為ShellExecute回傳的碼並不是真正的視窗的HANDLE,它是為了相容於16bit的WINDOW而保留下來的. 2種方法提供給你作為參考: 1)用ShellExecute的話,你可以使用FindWindow去找到你要關閉的程式窗口,然後用PostMessage去關閉它. 2)用CreateProcess去開啟外部程式,開啟成功同時取得Process handle,你就可以利用TerminateProcess去關閉掉它. 細節部分你可以參考其他相關的討論或從MSDN中取得各個函數說明.
chi30
一般會員


發表:5
回覆:17
積分:4
註冊:2005-01-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-07 15:35:55 IP:59.121.xxx.xxx 未訂閱
謝謝George, 我已找到方法, 將方法與大家分享.     
    // variable declaration. 
DWORD rt;
STARTUPINFO si;
PROCESS_INFORMATION pi;
Cardinal hPro;    // vairable initialization
ZeroMemory(&si,sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));    // execute a external program. Open IE to browse a website. 
    if(!CreateProcess(NULL,"C:\\Program Files\\Internet Explorer\\iexplore.exe http://192.168.1.80/sippis/",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
    {
        ShowMessage("Didn't make it!");
    }    // close the program. 
    GetExitCodeProcess(pi.hProcess,(unsigned long*)&hPro);
    TerminateProcess(pi.hProcess,(unsigned int) hPro);    
YoHo~~~
------
YoHo~~~
tzengdandan41
一般會員


發表:0
回覆:1
積分:0
註冊:2005-10-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-09-26 13:36:44 IP:59.125.xxx.xxx 訂閱
讚....

系統時間:2017-12-15 16:26:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!