線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1688
推到 Plurk!
推到 Facebook!

執行應用程式

尚未結案
leonard
一般會員


發表:42
回覆:42
積分:21
註冊:2003-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-25 14:50:21 IP:210.59.xxx.xxx 未訂閱
1.我想問一下當我用BCB呼叫我的應用程式出來 可是當我要執行應用程式指令例如ALT F5 可以在BCB視窗後景執行嗎 不要在應用程式視窗(前景)執行 2.我想執行指令ALT F然後在執行shift m 不知道該如何寫 謝謝 發表人 - leonard 於 2003/12/25 17:17:04
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-25 21:56:09 IP:61.30.xxx.xxx 未訂閱
leonard您好:
WinExec("背景程式.exe",SW_SHOW);
SetForegroundWindow(Application->Handle);
HWND hwnd1=FindWindow("背景程式ClassName",NULL);
PostMessage(hwnd1, WM_KEYDOWN, VK_MENU, 0); 
PostMessage(hwnd1, WM_KEYDOWN, 70, 0);
PostMessage(hwnd1, WM_KEYUP, VK_MENU, 0);
......
很笨很直接,不知是不是這樣 --==多看.多學.多聽==--
------
--==多看.多學.多聽==--
leonard
一般會員


發表:42
回覆:42
積分:21
註冊:2003-10-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-25 23:09:27 IP:210.59.xxx.xxx 未訂閱
我有試過應用程式有在背景地方 可是鍵盤指令沒反應耶???我的應用程式沒有執行鍵盤指令 還有就是執行完後發現鍵盤會當掉 發表人 - leonard 於 2003/12/26 00:12:20
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-26 13:01:57 IP:61.30.xxx.xxx 未訂閱
如果"應用程式"也是您寫的可以用視窗與視窗的 自訂Message傳遞方式就可以獲得解決. #define CM_MYINTMESSAGE (WM_APP 60).... keybd_event(xx,0,0,0);只會對最前景的視窗 產生作用,對背景程式得用 PostMessage(背景程式hwnd1,WM_KEYDOWN,70,0);去觸發 若是"應用程式"沒有執行鍵盤指令那就甭談了. 可攔截"應用程式"的Message,知道後在傳Message給 該"應用程式"使其動作. 如果可找到子視窗的代碼亦可縮||隱藏吧! --==多看.多學.多聽==--
------
--==多看.多學.多聽==--
leonard
一般會員


發表:42
回覆:42
積分:21
註冊:2003-10-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-27 23:26:07 IP:211.76.xxx.xxx 未訂閱
對不起呦 我有照你的方法去試 可是我的應用程式祇有開啟然後在(背景)而已 並沒有執行PostMessage等指令 不知道是什麼問題 視窗縮小化我已解決 謝謝!!!!!
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-27 23:38:19 IP:61.30.xxx.xxx 未訂閱
可以把部份的程式碼PO上來嗎? 好讓各位前輩們為您解答 如PostMessage內容次序如何?? --==多看.多學.多聽==--
------
--==多看.多學.多聽==--
leonard
一般會員


發表:42
回覆:42
積分:21
註冊:2003-10-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-28 15:12:20 IP:211.76.xxx.xxx 未訂閱
也就是這樣做 WinExec("C:\\bin\\cc_app.exe",SW_SHOW); SetForegroundWindow(Application->Handle); HWND hwnd1=FindWindow("/Simulator Studio",NULL); PostMessage(hwnd1, WM_KEYDOWN, 18, 0); PostMessage(hwnd1, WM_KEYDOWN, 70, 0); PostMessage(hwnd1, WM_KEYUP, 18, 0); .....
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-31 05:34:24 IP:61.30.xxx.xxx 未訂閱
 WinExec("Notepad.exe",SW_SHOW);
 Sleep (100);
 SetForegroundWindow(Application->Handle);
 HWND hwnd1,hwnd2;
 char ButtonName[256];
 hwnd1=FindWindow("Notepad",NULL);
 if(hwnd1)
 { Label1->Caption="1";
   hwnd2=GetWindow(hwnd1,GW_CHILD);//子視窗
   do{
     GetClassName(hwnd2,ButtonName,255);
     if(!strcmp(ButtonName,"Edit"))
     { Label1->Caption="2";
       PostMessage(hwnd2,WM_KEYDOWN,VK_MENU,0);
       PostMessage(hwnd2,WM_KEYDOWN,50,0);//2
       PostMessage(hwnd2,WM_KEYDOWN,56,0);//8
       PostMessage(hwnd2,WM_KEYUP,VK_MENU,0);
       PostMessage(hwnd2,WM_KEYDOWN,VK_RETURN,0);
       PostMessage(hwnd2,WM_CHAR,'F',0);  //F
       PostMessage(hwnd2,WM_CHAR,'O',0);  //O
     }
     hwnd2=GetWindow(hwnd2,GW_HWNDNEXT);
     }while(hwnd2);
   }
結果差強人意.Notepad的子視窗可背景打字,證明PostMessage有作用 RETURN也可以,不過就是這個Alt鍵有問題,送不過去 >
------
--==多看.多學.多聽==--
leonard
一般會員


發表:42
回覆:42
積分:21
註冊:2003-10-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-02 11:49:16 IP:210.59.xxx.xxx 未訂閱
不過還是要謝謝你 讓我受益匪淺
系統時間:2024-04-20 3:03:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!