신청하기 바로 전에 사용 된 응용 프로그램과 이야기하고 싶습니다. 마지막으로 어떤 응용 프로그램에 마지막으로 초점이 맞춰 졌는지 어떻게 알 수 있습니까?응용 프로그램 z-order/focus를 어떻게 추적합니까?
답변
응용 프로그램 창을 만들기 전에 GetForegroundWindow를 호출하십시오. 그렇지 않으면 GetWindow (your_hwnd, GW_HWNDNEXT)를 호출하여 지정된 창 아래의 다음 창을 찾습니다.
동일한 것을 찾고 있습니다. 화면에 열린 상태로 유지되는 응용 프로그램을 가지고 있으며 사용자가 세 개의 타사 응용 프로그램 중 하나에 항목을 입력하면 사용자가 내 응용 프로그램에서 단추를 호출 할 수 있습니다.
내 앱에서 버튼을 클릭하면 대화 할 데이터베이스를 파악하기 위해 마지막으로 사용한 세 가지 애플리케이션을 결정해야합니다. GetForeGroundWindow와 GetWindow를 보았지만 GetWindow에서 얻은 창 핸들은 항상 제목이 M 인 창을 참조합니다. 관리되는 Windows API 도구에서 Winternal Explorer 도구를 사용했고 M 핸들을 찾을 수 있습니다. 반환 된 및 그 후 프로세스의 '자식'-하지만이 핸들에서 나는 프로세스 이름을 얻을 수 없습니다.
간단한 Windows 양식을 사용하여 간단한 예제 응용 프로그램을 만들었습니다. 그리고 저는 그것을 비웃었고 메모장에 집중 한 다음 내 단추를 클릭하고 핸들을 얻었습니다. 그러나 모든 프로세스의 MainWindowHandle을 보면, 그것은 나열되어 있지 않지만 Wintern Explorer를 사용하면 메모장 프로세스의 하위 프로세스임을 알 수 있습니다.
실제 프로세스 핸들 대신이 서브 프로세스 핸들 만 반환하는 이유에 대한 제안 사항은 무엇입니까 ??
샘플 코드는 다음과 같습니다 - 윈도우 XP SP 3 시스템에서 실행되는
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TestWindowsAPI
{
public partial class Form1 : Form
{
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IntPtr thisWindow = GetForegroundWindow();
IntPtr lastWindow = GetWindow(thisWindow, 2);
tbThisWindow.Text = thisWindow.ToString();
tbLastWindow.Text = lastWindow.ToString();
}
}
}
WIN32 Windows Hook을 사용하는 경우 타사 응용 프로그램에서 작업 할 때 코드가 자동으로 호출 될 수 있습니다. 자세한 내용은이 도움말을 참조하십시오. http://support.microsoft.com/kb/318804 – JBRWilkinson
- 1. 응용 프로그램과 함께 SMB의 파일을 어떻게 추적합니까?
- 2. X11에서 관련 창을 어떻게 추적합니까?
- 3. UIImage - 어떻게 색인을 추적합니까?
- 4. 쿼츠는 시간을 어떻게 추적합니까?
- 5. QRcode 사용을 어떻게 추적합니까?
- 6. 각 setInterval주기를 어떻게 추적합니까?
- 7. 디자이너를 어떻게 추적합니까?
- 8. UINavigationController는 어떻게 여러 UIViewController를 추적합니까?
- 9. 처리되지 않은 IIS 예외 - 어떻게 추적합니까?
- 10. Python에서 애니메이션 객체를 어떻게 추적합니까?
- 11. Firefox 경고 메시지를 어떻게 추적합니까?
- 12. 데이터베이스 변경 사항을 어떻게 추적합니까?
- 13. linq2sql은 데이터베이스 객체를 어떻게 추적합니까?
- 14. 앱이 표시되는 시간을 어떻게 추적합니까?
- 15. 어떻게 PHP로 세션 시간을 추적합니까?
- 16. BufferedReader는 읽은 행을 어떻게 추적합니까?
- 17. C에서 메모리 사용을 어떻게 추적합니까?
- 18. 어떻게 내 응용 프로그램
- 19. SQL Server 오류 감사 이벤트는 어떻게 추적합니까?
- 20. iPhone 앱 사용자 수를 어떻게 추적합니까?
- 21. CakePHP에서 양식을 제출 한 횟수를 어떻게 추적합니까?
- 22. ASP.NET 세션이 시간 초과되는 이유를 어떻게 추적합니까?
- 23. Litmus는 전자 메일 분석을 어떻게 추적합니까?
- 24. 어떻게 웹 응용 프로그램 페이지
- 25. 응용 프로그램 버전에 어떻게 액세스합니까?
- 26. Msn 봇을 만들기 위해 인터넷 요청 프로그램을 어떻게 추적합니까?
- 27. 외부 PostBackUrl이있는 버튼의 클릭을 어떻게 추적합니까?
- 28. SOA에서 웹 서비스 소비자 종속성을 어떻게 추적합니까?
- 29. 페이스 북에서 누군가의 IP 주소를 어떻게 추적합니까?
- 30. Windows USER 개체 누수를 어떻게 추적합니까?
이전 창이 닫힌 경우이 예를 들어, 작동하지 않습니다 상황이 있다는 것을 알고 있어야합니다. – JBRWilkinson