2013-10-22 20 views
3

好日子,C++事件循環中的子應用程序的DLL

我有以下問題: 我有寫文本文件到磁盤的一個EXE應用程序,而EXE源不可用。 客戶詢問,當用戶按下數字鍵盤5時,會彈出一個新窗口,並執行一些文件操作。

問題是,numpad 5 + new應用程序彈出窗口必須只在應用程序運行並且有焦點(他們使用numpad 5進行其他操作)時才能工作。

我想過這個

  1. 創建一個表單和按鈕一個DLL,做必要的行動
  2. 注入DLL的過程中

但我努力理解,如果有一種方法可以在dll中創建一個「按鍵循環」。

請注意,我是一個初學者在c + +和形式,但我只需要一個可行性檢查和方向。

是否有可能創建一個窗口應用程序,等待注入的DLL中的按鍵? 這裏有沒有簡單的例子?使用谷歌像一個瘋子,我無法找到這個引用,所以我認爲我有一個適當的條款問題。

我的主要問題是,dllmain顯然是一次性例程,我不明白如何創建一個「事件循環」。

感謝您提供的任何信息。

回答

1

如果您已經成功地將您的DLL注入到traget進程中,請使用DllMain中的_beginthread API啓動一個新線程,並且在該線程中可以創建一個對話框並以通用方式創建消息循環。

+0

我無法創建對話框。我所有的嘗試都會導致一些荒謬的包容錯誤或其他錯誤。我創建了不同的其他項目並試圖包含它們,但是這種嘗試也失敗了。 我不知道如何從dllmain創建對話框/窗體。 希望有人可以幫助解決這個問題。 – roamcel

+0

您也可能忘記了注入想法,並有一個獨立的進程/應用程序監視傳統EXE的激活,在必要時顯示並隱藏彈出窗口。監控可以通過Hooking API完成。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589.aspx和http://msdn.microsoft.com/en-us/library/windows/desktop/ms644991.aspx你真的想要走「注入」路線嗎? – manuell

+0

感謝您的合理建議 – roamcel