無法在彈跳視窗中執行keybd_event |
答題得分者是:herbert2
|
zolt
一般會員 發表:20 回覆:9 積分:5 註冊:2008-07-19 發送簡訊給我 |
請問大家:
對於在BCB下要對彈跳視窗(只有"確定"和"取消"兩種按鍵,預設focus在"確定"鍵上)作自動化控制的正確方式究竟為何? 我試了兩個方法但都無法正常動作: 1. 直接在彈跳視窗出現後,使用keybd_event(VK_SPACE,0,0,0)和keybd_event(VK_SPCAE,0,KEYEVENTF_KEYUP)指令, 讓程式自動執行"確定"按鍵功能,但並沒有反應; 2. 參考http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=97568修改執行後,發現在彈跳視窗出現後,我仍然必須要手動按下視窗按 鍵,程式才會執行之後Findwindow的動作(程式被彈出視窗卡住了?); 請問還忽略了哪些設定或步驟嗎? 想請大家幫忙提供建議了 謝謝! |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
因為『彈跳視窗』通常是以 ShowModal() 方式啟動,故當它出現時,焦點必在其上預設的focus的"確定"鍵上,
所以您所使用的 keybd_event(....) 根本要等『彈跳視窗』關閉後才會執行。 同理,Findwindow() 的動作也是要等到『彈跳視窗』關閉後才會執行。 如果您確定要自動關閉該『彈跳視窗』,則建議在主程式中用: 變數_『彈跳視窗』傳回值 = 0; if (狀況一) { 開啟『彈跳視窗』; // 等待操作人按確定或取銷; 變數_『彈跳視窗』傳回值數 = 『彈跳視窗』->ModalResult; } else { 不開啟『彈跳視窗』; // 類似自動按了確定 變數_『彈跳視窗』傳回值數 = mrOK; } if (變數_『彈跳視窗』傳回值 = mrOK) ( ...... } else { ...... } 的 方式,或許較為簡單。
編輯記錄
herbert2 重新編輯於 2012-07-26 00:35:42, 註解 無‧
|
zolt
一般會員 發表:20 回覆:9 積分:5 註冊:2008-07-19 發送簡訊給我 |
謝謝herbert2的說明建議
我會再試試看,謝謝! ===================引 用 herbert2 文 章=================== 因為『彈跳視窗』通常是以 ShowModal() 方式啟動,故當它出現時,焦點必在其上預設的focus的"確定"鍵上, 所以您所使用的 keybd_event(....) 根本要等『彈跳視窗』關閉後才會執行。 同理,Findwindow() 的動作也是要等到『彈跳視窗』關閉後才會執行。 如果您確定要自動關閉該『彈跳視窗』,則建議在主程式中用: 變數_『彈跳視窗』傳回值 = 0; if (狀況一) { 開啟『彈跳視窗』; // 等待操作人按確定或取銷; 變數_『彈跳視窗』傳回值數 = 『彈跳視窗』->ModalResult; } else { 不開啟『彈跳視窗』; // 類似自動按了確定 變數_『彈跳視窗』傳回值數 = mrOK; } if (變數_『彈跳視窗』傳回值 = mrOK) ( ...... } else { ...... } 的 方式,或許較為簡單。 |
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |