Ich möchte mit der Anwendung sprechen, die direkt vor meiner Anwendung verwendet wurde. Wie kann ich herausfinden, welche Anwendung den Fokus zuletzt hatte?Wie verfolge ich die Anwendung Z-Reihenfolge/Fokus?
Antwort
Bevor Sie ein eigenes Anwendungsfenster erstellen, rufen Sie GetForegroundWindow auf. Andernfalls rufen Sie GetWindow (your_hwnd, GW_HWNDNEXT) auf, um das nächste Fenster unterhalb des angegebenen zu finden.
Ich bin auf der Suche nach dem gleichen - Ich habe eine Anwendung, die auf dem Bildschirm geöffnet bleibt und der Benutzer kann eine Schaltfläche in meiner App aufrufen, sobald sie einen Eintrag in eine der drei Anwendungen von Drittanbietern vorgenommen haben.
Wenn sie auf die Schaltfläche in meiner App klicken, muss ich feststellen, welche der drei Anwendungen sie zuletzt verwendet haben, um zu wissen, mit welcher Datenbank sie sprechen. Ich habe den Weg der Betrachtung von GetForeGroundWindow und GetWindow gegangen, aber der Window-Handle, den ich von GetWindow bekomme, verweist immer auf ein Fenster mit Titel M. Ich habe das Winternal Explorer-Tool aus den Managed Windows-API-Tools verwendet und kann das M-Handle finden zurückgegeben und es ist ein "Kind" des Prozesses, nach dem ich bin - aber von diesem Handle kann ich den Prozessnamen nicht bekommen.
Ich habe ein kleines Beispiel-App mit einfachen Windows-Formen gemacht - und ich laue es und dann machen Editor den Fokus und klicken Sie dann auf meine Schaltfläche und ich bekomme den Griff - aber beim Blick auf den MainWindowHandle aller Prozesse, Es ist nicht aufgeführt, aber mit Winternal Explorer kann ich sehen, dass dies ein Unterprozess des Notepad-Prozesses ist.
Irgendwelche Vorschläge, warum ich nur dieses Subprozesshandle anstelle des eigentlichen Prozesshandles bekomme ??
Beispielcode ist unten - auf einem 3-Maschine sp XP Windows ausgeführt wird
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();
}
}
}
Wenn Sie einen WIN32-Windows-Hook verwendet haben, könnten Sie Ihren Code automatisch aufrufen lassen, wenn Sie einen Vorgang innerhalb der Drittanbieteranwendung ausführen. In diesem Artikel finden Sie weitere Informationen: http://support.microsoft.com/kb/318804 – JBRWilkinson
- 1. WCF: Wie verfolge ich Nachrichtentexte?
- 2. Wie verfolge ich die Größe des Ergebnissatzes mit Hibernate?
- 3. Wie verfolge ich bestehende Verbindungen mit WebSockets
- 4. Wie verfolge ich Tweet Button Klicks?
- 5. Wie verfolge ich verwaiste JDBC-Verbindungen, die nicht geschlossen sind?
- 6. Wie verfolge ich zuverlässig Kind-/Enkelprozesse auf einem POSIX-System?
- 7. Wie verfolge ich, wie oft ein externer Link angeklickt wird?
- 8. Wie verfolge ich den Fortschritt bei der Verwendung von Kanban?
- 9. Wie verfolge ich den Abwärtspfeil in der virtuellen Tastatur?
- 10. Wie verfolge ich lokale Änderungen/Änderungssets mit git-svn?
- 11. Wie verfolge ich Ansichten eines Artikels auf YouTube?
- 12. Wie verfolge ich alle Änderungen innerhalb einer Sharepoint-Site?
- 13. Ich benutze Amazon SES. Wie verfolge ich die Bounce-E-Mail-Nachrichten mit PHP?
- 14. angleytics: Wie verfolge ich die ng-Wiederholung, die mein Menü erstellt?
- 15. Wie verfolge ich, wie viele Anrufe an eine Funktion, für die mein Status gilt, ausgeführt werden?
- 16. Wie verfolge ich asynchrone Ergebnisse, die von einem Multiprocessing-Pool zurückgegeben wurden
- 17. C#: Wie verfolge ich Mausereignisse bei nicht rechteckigen Grafiken, die auf einem Panel gezeichnet wurden?
- 18. Wie verfolge ich, wo die rechte Callout-Zubehöransicht ist, als sie angetippt wurde?
- 19. Wie öffne ich die Einstellungen-Anwendung von meiner Anwendung?
- 20. Wie erstelle ich die Anwendung Edge Rails?
- 21. Warum sieht meine obere Kopfleiste so aus? Ich verfolge die Udemy bbc Klon Vortrag
- 22. Wie authentifiziere ich die Anwendung, während ich AJAX-Anrufe mache?
- 23. Wie verfolge ich das tatsächlich gerenderte Modell in einer Backbone Collection?
- 24. Wie verfolge ich einen Fortschritt beim Erstellen eines Modells mit dem Caret-Paket?
- 25. Wie verfolge ich eingehende IP-Adressen auf dem Windows 2003-Webserver?
- 26. Wie verfolge ich "Punkt" -Konfigurationsdateien in meinem Home-Verzeichnis mit git?
- 27. Wie kann ich eine Person mit seiner Lage im Android verfolge
- 28. Ich verfolge meine Android App auf Google Analytics. Warum scheint ich Macintosh-Benutzer zu haben?
- 29. Wie "veröffentliche" ich meine Anwendung?
- 30. Wie mache ich meine Anwendung kopieren Sie die Datei schneller
Beachten Sie, dass es einige Situationen, in denen dies nicht, zum Beispiel funktionieren, wenn das vorherige Fenster geschlossen wurde. – JBRWilkinson