如何檢測當前會話是否是VB6應用程序中的終端服務(遠程桌面)會話?如何檢測是否在VB6的終端服務會話中?
回答
使用SM_REMOTESESSION
標誌調用GetSystemMetrics
function會告訴您應用程序是否在終端服務會話中運行。
要調用從VB 6,你需要聲明它的模塊中,像這樣:
Const SM_REMOTESESSION As Long = &H1000
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
如果您在終端服務環境中運行,返回值將是非零。
...但是,您應該確實修復您的居中代碼,而不是試圖通過不同的行爲解決此問題,具體取決於您是否在終端服務會話中運行。這隻會爲你帶來更多的工作,並引入更多的錯誤。不幸的是,我無法告訴你,如果您使用的是居中代碼而沒有看到它有什麼問題。
@克雷格:這不是鏈接問題的答案。問題是您的代碼中心窗口不正確。它做出了一些正常工作的假設,但在終端服務下運行時會崩潰。 – 2012-03-12 07:07:16
@克雷格:啊,我明白你在說什麼了。您沒有編寫表單居中代碼,您正在設置屬性並讓VB處理它。所以這個錯誤在於VB關於屏幕座標的假設,而不是你可以修復的東西。是的,我瞭解TS配置工具的含義,但這並不能改變居中代碼錯誤的事實,只是如果您無法訪問源代碼,則可以解決此問題。 – 2012-03-12 09:41:47
最好的辦法是使用'SPI_GETWORKAREA'手動對齊表格。VB忽略任務欄停靠位置並且不會在分辨率更改時重新加載屏幕大小。你的bug不太常見,也沒有那麼令人討厭。 – wqw 2012-03-12 15:07:39
我有同樣的問題。據我瞭解,你的表單將你想要的東西放在你想要的地方(例如屏幕中央)。您的應用程序在普通桌面上運行良好,但在終端環境中將會最大化。如果是這樣,我發現了一個小竅門。把一個計時器該窗體上,使其interval=1
和timer1_timer
事件
Me.WindowState = 0
'then put the movement code like this
formname.Top = (Screen.Height/2) - (formname.Height/2) -400 '(400 for form title bar)
formname.Left = (Screen.Width/2) - (formname.Width/2)
timer1.interval=0
timer1.enabled=false
就是這樣寫的。 [email protected]
我通過向表單加載和激活事件添加了'Form.WindowState = vbNormal'來解決了這個問題。 – CJ7 2012-06-03 03:01:21
- 1. 如何知道我是否在終端服務(TS)會話中?
- 2. 如何知道wpf應用程序是否在終端服務會話中?
- 3. 訪問在終端服務會話
- 4. 如何檢測我的服務是否在TSE會話中運行?
- 5. 終端服務會話中的Web瀏覽如何工作?
- 6. 如何檢查WCF客戶端通道(服務)是否終止?
- 7. 如何檢測Windows終端服務器是否處於安裝模式
- 8. 正確檢測終端服務
- 9. 在Windows 7上枚舉Delphi 2007中的終端服務會話
- 10. 檢測PHP會話是否存在
- 11. 如何從腳本中檢測stderr是否連接到終端?
- 12. 如何檢測終端中是否按了某個鍵?
- 13. 如何檢測Java System.out是否是終端?
- 14. 是否啓用SoapUI終端服務器?
- 15. 如何檢查會話是否存在?
- 16. 如何檢查會話是否存在?
- 17. 終端服務器會話中的獨立命名管道
- 18. 檢測由自助服務終端應用程序啓動的Citrix會話的終止
- 19. 如何檢測sys.stdout是否連接到終端?
- 20. 如何在python中檢測http和https服務是否正常?
- 21. 如何檢測我是否在單一服務中運行?
- 22. localhost在Windows終端服務服務器中的含義是什麼?機器還是會話?
- 23. php - 檢查服務器上是否存在會話文件
- 24. 在終端服務器2008上運行緩慢的VB6 ActiveX DLL
- 25. 如何判斷當前終端會話是否在GNU屏幕中?
- 26. 如何檢測我是否在InnoSetup腳本的終端服務器上進行安裝?
- 27. 終端服務命令「查詢會話」在C#
- 28. 服務器端JavaScript會話
- 29. VB6如何檢查進程ID是否已終止
- 30. 任何方式來檢測瀏覽器運行終端服務?
你可以嘗試迫使窗口恢復(未最大化)負載狀態,看看是否有幫助。 – Deanna 2012-03-12 12:07:27
你是什麼意思? 'Form.WindowState'或一些API調用? – CJ7 2012-03-12 12:20:21
是的,'Form.WindowState = vbNormal'。 – Deanna 2012-03-12 12:29:59