FastLife Posted May 10, 2014 Posted May 10, 2014 hello i injected a new thread into a running process, the thread displays a MessageBox. This is working fine. However i want to get the handle (hwnd) of the running window to pass them as parameter in the MessageBox api, like: MessageBox(hWnd, str1,str1,1); but i can't retrieve the right handle of the window. i already tried api's such as Get(ForeGround)Window etc. Any ideas how to get the handle of the running window?
cipher Posted May 10, 2014 Posted May 10, 2014 are you trying to get the handle of the injected dll??? i mean the handle of the message box displayed using injected dll ?? or the handle of the injected process??
FastLife Posted May 10, 2014 Author Posted May 10, 2014 no dll just injected into a already running process with gui window.
mrexodia Posted May 10, 2014 Posted May 10, 2014 you could try FindWindow if you have the window title, otherwise you can try to enumerate all windows and find the process id they belong to. the window you need should have the process id of the process youre trying to find the window of. greetings
Teddy Rogers Posted May 11, 2014 Posted May 11, 2014 Just be aware the messagebox may not be a parent window or root owner window. if your enumerating and filtering out non-parent and owner windows you will never find it. Without knowing a bit more detail about how this messagebox appears I can't give you specific information. However since your injecting code in to a running process most likely you already know the processID. What I have done in the past is use EnumWindows API to cycle through all the top level windows for their handles and pass the results to GetWindowThreadProcessId API. If the handle returned from EnumWindow and GetWindowThreadProcessId match then I know I have the correct window handle. You can pass your processID for EnumWindows through lParam. EnumWindows_(@FindMysteryWindow(), YourKnownProcessID) Procedure FindMysteryWindow(hWnd, lParam) Protected PID.l If GetWindowThreadProcessId_(hWnd, @PID.l) If Not PID.l <> lParam ; Window and processID match, enter your code here... ProcedureReturn #False EndIf EndIf ProcedureReturn #True EndProcedureThere are a dozen methods to find window handles, you could also try EnumChildWindows API. Another method is to EnumWindows and use GetWindowText API to search for the messagebox window title. You can find a list of Windows window API functions here... http://msdn.microsoft.com/en-us/library/windows/desktop/ff468919%28v=vs.85%29.aspx Ted.
FastLife Posted May 14, 2014 Author Posted May 14, 2014 thanks for all the suggestions tuts4you! the problem is fixed using the method of post number 5. Thank you
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now