googleandy 發表於 17-1-14 10:10

請教 VB 的 FOCUS 問題



如圖, 我以 VB2010寫了兩個程式. 以滑鼠按 程式A, 會聚焦(Focus) 程式A視窗
以滑鼠按 程式B, 會聚焦(Focus) 程式B視窗

程式A是我的”主程式”,我希望大部份時間, Focus在程式A視窗.
但是, 程式B執行中, 有時會 "自動"把聚焦搶過去.
此時, 就只好 以滑鼠按 程式A, 再度聚焦 程式A視窗.

請問 ~~~~~~
有沒辦法, 讓 程式B "不要自動" 搶聚焦 ?或是,以程式碼控制碼,儘量大部時間, Focus 留在A程式?
THANKS!

googleandy 發表於 17-1-14 10:39

補充說明: "程式A是我的”主程式”,我希望大部份時間, Focus在程式A視窗."
   ---> 因為程式A, 有用到很多鍵盤"快速鍵",
          如果"失焦",快速鍵就沒作用了.

tinyding 發表於 17-1-14 15:16

底下並不是 VB 環境 ... 不曉得有沒有什麼幫助? ... :

Set Focus到特定的視窗Delphi K.Top

AGWZ 發表於 17-1-14 15:48

要不要加一個小段在執行B程式後

立刻執行回A程式

譬如控制滑鼠去按A

googleandy 發表於 17-1-14 17:19

AGWZ 發表於 17-1-14 15:48
要不要加一個小段在執行B程式後

立刻執行回A程式


現在關鍵問題仍是⋯⋯B程式為何會自動"搶"Focus.

B程式是券商給的API,
我在上面添加一些自寫的程式碼⋯⋯即每10秒讀我的庫存部位,

會不會這就是B程式自動搶Focus的原因?

googleandy 發表於 17-1-14 17:25

補充說明:B程式也有使用連結 EXCELDDE,以顕示最新商品報價。

tinyding 發表於 17-1-14 17:27

googleandy 發表於 17-1-14 17:19
現在關鍵問題仍是⋯⋯B程式為何會自動"搶"Focus.

B程式是券商給的API,


底下的網頁, 不知有沒有什麼幫助? ... :

Visual Basic ReferenceActivate, Deactivate EventsMSDN.Microsoft

googleandy 發表於 17-1-14 17:58

tinyding 發表於 17-1-14 17:27
底下的網頁, 不知有沒有什麼幫助? ... :

Visual Basic ReferenceActivate, Deactivate EventsMSDN.M ...

哦,看起來問題的關鍵似乎這裡面,我得花一些時間逐項慢慢研究,有結果再回覆。感謝T大。

googleandy 發表於 17-1-15 10:59

本帖最後由 googleandy 於 17-1-15 11:20 編輯

tinyding 發表於 17-1-14 17:27
底下的網頁, 不知有沒有什麼幫助? ... :

Visual Basic ReferenceActivate, Deactivate EventsMSDN.M ...
請教T大(或任何高手),

如果, 現在程式 B 是activate狀態, 我打算~~
   讓 程式 B Deactivate, 而且, 程式 A 變成 activate

請問如何處理? thanks.
(我試過,模擬滑鼠click可以做到,但不是好方法.)

因為現在程式 B 是activate狀態,讓 程式 B Deactivate 似乎可以用
Call Form1_Deactivate(sender, e)

但如何讓 程式 A 變成 activate ?


Sirius 發表於 17-1-15 11:54

用Windows API應該可以達成你的需要
這篇參考看看

tinyding 發表於 17-1-15 12:10

googleandy 發表於 17-1-15 10:59
請教T大(或任何高手),

如果, 現在程式 B 是activate狀態, 我打算~~


參考一下底下的例子 ... 其中第一個並不是 VB 環境 ... :

[代码]Delphi实现窗体始终前台显示且获得焦点ET民工

Me.Activate() not working in Deactivate EventVisual Studio

Seer_et 發表於 17-1-15 12:20

這裡有解 :

https://www.douban.com/note/522136806/

iwillbeback44 發表於 17-1-16 09:15

如果B程式 只是去讀你的倉位
那我看你的A程式直接WRAP B程式裡的API 還比較快一點
畢竟B 如果在A 裡面就好控制多了

googleandy 發表於 17-1-16 12:22

iwillbeback44 發表於 17-1-16 09:15
如果B程式 只是去讀你的倉位
那我看你的A程式直接WRAP B程式裡的API 還比較快一點
畢竟B 如果在A 裡面就 ...

I大的建議是好建議。

A程式是MENU
其實除了B程式,還有C、D、E、F程式。

謝謝I大,感恩。

googleandy 發表於 17-1-16 12:27

綜合以上,我試過以 SetForeGroundWindow 基本上可以解決問題。非常感謝大家熱心討論和建議。
頁: [1] 2
查看完整版本: 請教 VB 的 FOCUS 問題