2017-08-02 64 views
0

我想找回更多幫助。 幾周前我仍然和我的問題在同一個項目上,但又陷入了另一個困境。Winmove()不適用於citrix應用程序

我有一個多屏幕(贏7)設置,並試圖編寫一個應用程序,將啓動一些應用程序,並將其移動/調整到正確的位置。我正在做vb.net中的控制檯應用程序。 在我收到我最後一個問題的幫助後,我現在可以啓動,移動,調整大小,關閉我需要的所有應用程序。 不幸的是我需要通過Citrix運行兩個應用程序。 一個是Excel工作表。 我可以找到這些窗口的窗口句柄,並選擇它們或關閉它們,但MoveWin()或SetWindowPos()似乎沒有做任何事情,雖然我想移動窗口的標題欄變成藍色,所以我知道它是選擇它.. 任何援助將不勝感激。 下面粘貼了一段代碼。我在Excel目前測試此,我將它移植到對面我的控制檯應用程序,一旦工作... 謝謝...

Public Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 

Public Const SWP_FRAMECHANGED = &H20 'Fully redraw the window in its new position. 

Sub MoveWin() 
    Dim retval As Long 
    Dim hwnd As Long 
    Dim RetWhnd As Long 

    hwnd = '123456' 

    retval = SetWindowPos(hwnd, RetWhnd, 0, 0, 600, 400, SWP_FRAMECHANGED) ' Application.hwnd 
End Sub 
+0

爲什麼我使用excel和vba可能會問?我寫了一個方便的實用程序,其行爲有點像spy ++ in。它列出了工作表上的所有進程和子進程,這樣我可以單擊一個句柄,然後單擊關閉或移動等,然後測試我的代碼不需要改變代碼的不同應用程序。這就是我所知道的關閉移動等,對於直接在Windows中運行的應用程序工作正常,但不適用於通過citrix運行的應用程序。對我來說有趣的是我可以移動主要的Citrix窗口jut沒有任何產生的過程... – perfo

+0

啊,我看到了關於vb.net的困惑我已經標記了問題vb.net。雖然我的測試不在vb.net,但我的最終解決方案是,我很樂意接受Vb.net或VB6的建議。我如何添加一個VB6標誌到我的問題?謝謝 – perfo

+0

會有人對以下內容有任何意見。如果我將移動代碼放到客戶端應用程序中,以便在啓動時將其自動移動到某個屏幕位置?這會工作嗎?我怎麼能發送它的信息告訴它去哪裏儘管是否有可能將一些東西添加到命令行語句中?我在Citrix論壇上提出了這個問題,但我認爲我是唯一的成員,並且我對自己沒有任何幫助;-) – perfo

回答

0

我不是在我家的機器,所以我無法證實這個,但我相當確定VB 6在編譯對話框(也許最後一個)上有一個標籤,它有一個與citrix相關的選項複選框。如果它不在那裏,它可能在項目屬性中。

+0

你知道這是否在VBA環境中可用?我有一個很好的搜索,但目前看不到它。我想另一個問題是,你知道它是什麼嗎?感謝您的回覆.... – perfo

+0

在我的會計應用程序中,我有一個使用Citrix的特定用戶。我不知道它具體做了什麼,但是我發現,既然我知道那個客戶端,我會檢查這個框,因爲它只是說明了使應用程序符合Citrix標準的影響。它並沒有影響我的整個用戶羣,所以我把它設置了。我懷疑它可用於VBA,我只在VB 6.0中看到它。 –

+0

謝謝,比爾,我似乎無法找到很多關於它的內容,但看起來它可能包含在已編譯的應用程序中,以使其作爲客戶端應用程序表現得更好。但我沒有任何問題運行其他vb.net或VBA的東西客戶端,所以不知道它是什麼。我會繼續尋找。 – perfo

0

以防萬一這可以幫助別人。我已經聯繫了思傑的人,他們基本上不知道答案。我至少想知道這是否可能。無論如何,據我所知,移動命令似乎不可能貫穿思傑的分歧。我提出的解決方案是將代碼的實際移動部分留在遠程運行的應用程序中。這是構建代碼到Citrix運行的應用程序,以查看本地計算機上的ini文件並從中接收指令。 這現在工作的很好,但只適用於有能力運行容器語言或可以以某種方式包裝的應用程序。

相關問題