none
如何取得子視窗的識別碼 RRS feed

  • 問題

  • 各位大家好:

    請問各位大大
    開發一個專案A來顯示三個專案(B,C,D),但在使用專案A來切換B專案以及C專案或D專案時,
    會發生B專案或C專案的子視窗會被藏在最下層。

    如何使用API設定在做B、C專案、D專案切換時,仍可保留原有的編輯子視窗

    我是透由A專案切換B、C專案的。

    設計方式,

    在A專案有三個按鈕。即為B、C、D專案名。(B.exe、C.exe、D.exe是存放在D:temp)

    當我按下B專案名的按鈕,則會到D:temp執行B.exe專案(C專案、D專案也是如此)

    都是透由A專案去切換B.exe、C.exe、D.exe

    問題來了:

    在VB6的時候在A專案按下B專案名的按鈕A專案程式立即到D:\temp執行B.exe ,再把B.exe hwnd記錄起來,當再按下C專案名時, A專案程式立即到D:\temp執行c.exe ,再把c.exe hwnd記錄起來。

    在A專案再按下B專案名的按鈕程式會判斷該b.exe hwnd 是否有被記錄,有立即利用showwindown 、setforegroundwindow API將該hwnd視窗顯示出來。

    在VB6是可以顯示B.exe專案最後執行的子視窗也就是最後一個視窗畫面(在B.exe 需先主畫面再按下查詢按鈕進行查詢畫面、再顯示查詢後的結果畫面共三個)--->也就是會顯示查詢後的結果畫面

    *******************************************************************************

    反之在VB2008同樣的做法卻只顯示B.exe 主畫面查詢後的結果畫面卻被壓在最下面。

    請問各位大大,這是為什麼呢?

    如何在VB.net也能顯示B.exe(C.exe、D.exe)最後執行的畫面呢?

    整個程式的控制權都在A專案上,要如何記錄B.exe or C.exe or D.exe 的子視窗或都是有其他的方法?

    我已經用過getDesktopwindow、getforegroundwind...等取得現行的主要視窗hwnd但怎麼取得都是A專案的hwnd資訊。也試過了用enumchildwindows 透由父視窗取得子視窗的hwnd但顯示出來的結果卻是 B.exe or C.exe or D.exe 的父視窗 hwnd資訊-->顯示的是父視窗元件hwnd.

    請各位大大幫幫忙,小女子已測試很多方法了卻一直無法找出解決的方法。謝謝您們了

     

     

     


    2011年8月21日 上午 10:59

解答

所有回覆

  • 1. 請貼圖協助描述

    2. 請說清楚你現在問題到底是在 VB6 還是 VB2008

    3. 這篇先看一遍:

    http://social.msdn.microsoft.com/Forums/zh-HK/232/thread/99d3dbf2-edca-4232-803e-f4d9df6a0f96

    4. 立刻,有時才是問題,電腦執行速度很快,執行時,你的目標未必已經跑出來。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月21日 上午 11:21
  •  

    是VB2008有問題。

    ******************************************************************

    反之在VB2008同樣的做法卻只顯示B.exe 主畫面,查詢後的結果畫面卻被壓在最下面。

    請問各位大大,這是為什麼呢?

    如何在VB.net也能顯示B.exe(C.exe、D.exe)最後執行的畫面呢?

    ******************************************************************

    2011年8月22日 上午 03:01
  • 請問,如果設Form的TopMost屬性為True,可以嗎?
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年8月22日 上午 04:49
  • 是由透A專案來控制 這個三執行檔。若執行檔中的form form設為TopMost屬性為True

    則無法點選A專案,此部份已測試過了

    謝謝您哦。

    2011年8月22日 上午 06:34
  • VB2008 用 Process.Start 啟動,可直接使用 Process.MainWindowHandle 取得目標視窗的 hWnd 。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月22日 上午 11:56