iT邦幫忙

0

C# 將應用程式置頂以及取得應用程式座標的方法

  • 分享至 

  • xImage

各位大大好
想請問一下如果我想將指定應用程式置頂在最上層
或是讓指定應用程式顯示出來
(像是C# Form的Active屬性一樣,顯示在最上層)
除了使用User32.dll的方法之外
還有其他可以達成類似功能的方法嗎?
因為我發現有些程式好像會擋FindWindowEx
不是找不到程式就是程式會閃對
導致無法使用SetWindowPos、ShowWindow去更改視窗狀態

另外我還想要取得應用程式的X、Y座標
但如上面說的
如果FindWindowEx找不到應用程式的話
也無法使用GetWindowRect去捕捉視窗座標
麻煩各位大大解惑了

看更多先前的討論...收起先前的討論...
franx0722 iT邦新手 2 級 ‧ 2022-07-05 13:13:22 檢舉
FindWindow(類別,標題名稱)
如果不知道類別那就(null,標題名稱)
以上一樣是User32.dll的方法
得到hwnd後使用BringWindowToTop(hwnd)
皓皓 iT邦新手 3 級 ‧ 2022-07-05 13:29:49 檢舉
感謝 franx0722 大大
照這樣看來好像除了User32.dll的方法之外
也沒其他方法能達成這個功能了對吧
LowLaser iT邦新手 4 級 ‧ 2022-07-06 14:55:23 檢舉
請參考
https://github.com/strobejb/winspy
皓皓 iT邦新手 3 級 ‧ 2022-07-07 09:44:16 檢舉
謝謝 LowLaser 大大!!
我再來研究一下
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
allenlwh
iT邦高手 1 級 ‧ 2022-07-05 10:04:04

試試TopMost

frm.TopMost = true;
皓皓 iT邦新手 3 級 ‧ 2022-07-05 10:14:10 檢舉

allenlwh 大大你好
我記得TopMost不是Form自己的置頂屬性嗎?
應該是無法對其他應用程式控制才對

allenlwh iT邦高手 1 級 ‧ 2022-07-05 10:30:52 檢舉

你是要對"其他應用程式"置頂,抱歉 是我誤會了

皓皓 iT邦新手 3 級 ‧ 2022-07-05 10:39:10 檢舉

對~ 抱歉抱歉是我沒說明清楚

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-05 20:14:55

Google到這篇的第二高票解答(66)供參考

除非有不得已的原因
否則建議別花太多心力在這功能上
因為
如果真的有可以讓程式置頂於其他所有程式之上的方法
那麼很可能你的程式不是唯一「置頂」的程式
那麼電腦桌面會如何顯示/處理一大堆都要求置頂的程式
/images/emoticon/emoticon06.gif

皓皓 iT邦新手 3 級 ‧ 2022-07-05 23:36:34 檢舉

謝謝 海綿寶寶 大大~
我只是最近在寫一些工具程式
突然想到這個問題的
想說有沒有辦法透過foreach捕捉所有應用程式
就能直接控制視窗的功能

皓皓 iT邦新手 3 級 ‧ 2022-07-05 23:54:16 檢舉

或者也不用一定要視窗至頂
如果有辦法判斷視窗是否為顯示的狀態
不是的話就將它顯示出來
也可以達成我希望的效果

我要發表回答

立即登入回答