2015-11-07 29 views
0

夥計們,如果這聽起來像是一個新手問題,我很抱歉,但我對Windows開發並不熟悉整個。所以我得到了App A,它做了很多事情,一個特定的功能是呈現一張鴨子圖片。在內部,它創建了標題爲'DrawingBoard'的窗口,稍後當程序準備渲染時,它將嘗試找到這個「DrawingBoard」窗口。我只是告訴我,這是一個應用程序如何找到窗口,以使鴨子:如何在應用B中創建一個窗口,以便應用A可以使用它來渲染而不是使用它自己的窗口

 static const TCHAR TITLE_NAME[] = "DrawingBoardParent"; 
    static const TCHAR TITLE_CLASS_NAME[] = "DrawingBoard"; 

    HWND parent = FindWindowExA(NULL, NULL, NULL, TITLE_NAME); 
    while (parent != NULL) 
    { 
     //find the child window by window title 
     window = findWindowRecursive(parent, TITLE_CLASS_NAME); 
     if (window != NULL) 
     { 
      break; 
     } 
     //no child by the given title name found, go down one level 
     parent = FindWindowExA(NULL, parent, NULL, TITLE_NAME); 
    } 

現在我需要創建應用程序B和我想創建一個在App B.我自己的「畫板」窗口,因爲一個應用程序使用上述算法找到渲染窗口,而不是使用它自己的應用程序「DrawingBoard」窗口,它將使用我的應用程序B「DrawingBoard」窗口。

問題:

1)這是可能的,在所有的領域內? 2)說如果兩個應用程序A & B具有兩個具有相同標題「DrawingBoard」的窗口。 3)如果FindWindowEx總是返回應用程序A「DrawingBoard」窗口的句柄,我該如何解決它,所以它會返回App B「DrawingBoard」窗口。

感謝您的幫助鄉親。

+0

您需要修復被完全破壞的應用程序A. –

+0

不幸的是,我沒有應用程序A的源代碼:( –

+0

因此,您必須刪除有缺陷的應用程序,或使用不同的窗口名稱 –

回答

0

說,如果這兩個應用程序一個& B具有兩個窗口標題相同"DrawingBoard"。哪一個呢FindWindowEx(NULL, NULL, NULL, ""DrawingBoard")回報?

也就是說虐待定義,它會返回其中的一個,你不能影響它h返回。

如果FindWindowEx總是返回應用程序A「DrawingBoard」窗口的句柄。我如何破解它,以便它將返回應用程序B「DrawingBoard」窗口。

你不能。其他應用已損壞。它搜索一個它創建的窗口被破壞了,因爲它可能產生錯誤的窗口,從另一個進程的窗口。

您可以避免被這個應用程序通過爲您的窗口使用不同的名稱。但是,您確實應該修復或刪除有缺陷的程序。這是前進的理智之路。

相關問題