Wie kann ich Kraft meiner app, um nach vorne zu kommen und den Fokus?
Arbeite ich an einer Anwendung, die passiert werden die bootstrap für einen installer, ich bin auch arbeiten. Die Anwendung macht ein paar MSI-calls, um Informationen zu bekommen, die ich brauche für die Zusammenstellung des Assistenten, der meine Anwendung ein Hauptfenster, die bewirkt, dass ein Fenster zu öffnen, während die Informationen gesammelt werden und dann gehen Sie Weg, sobald das erledigt ist. Dann den Assistenten eingerichtet und gestartet. Mein problem ist, dass die Assistenten (von CPropertySheet abgeleitete) will sich nicht nach vorne zu kommen und die aktive Anwendung, ohne dass ich hinzufügen, die in ein paar Anrufe zu tun.
Ich habe das problem, bringen es auf der Vorderseite mit dem folgenden code in der OnInitDialog () - Methode:
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); //force window to top
SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); //lose the topmost status that the previous line gave us
Mein problem ist, dass ich immer noch nicht herausgefunden, wie man die Fenster selbst aktivieren (d.h., selbst derjenige sein, der den Fokus hat). SetFocus() funktioniert nicht in diesem Zusammenhang. Ich brauche etwas, das Sie zwingen wird das Fenster an den oberen Rand der Z-Reihenfolge und aktivieren Sie es, vorzugsweise in so wenigen anrufen wie möglich.
Meine Vermutung ist, dass Sie das Fenster geöffnet, bei dem Anfang von der MSI nennt die Ursache für das Hauptfenster zu vermasseln, aber ich habe keine Möglichkeit zu verhindern, dass das Fenster angezeigt wird. Auch würde es keinen Sinn machen, es zu verbergen, denn Sie ermöglicht es dem Benutzer, zu wissen, was Los ist, bevor das Hauptfenster kommt.
InformationsquelleAutor RobH | 2009-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andrew ist nicht ganz korrekt. Windows wird versuchen wirklich hart, um Sie zu stoppen, zu stehlen, gefasst, aber es ist möglich mit der folgenden Methode.
Ist und der code dafür würde wie folgt Aussehen:
Können Sie oder können nicht brauchen, um ausführen eines Programms mit administrativen Berechtigungen für diese zu arbeiten, aber ich habe diesen code, persönlich und es wurde die Arbeit erledigt.
InformationsquelleAutor Caleb Bartholomew
Können Sie nicht stehlen Fokus. Zeitraum.
Sehen, diese Alte Sache Neue Artikel:
https://blogs.msdn.microsoft.com/oldnewthing/20090220-00/?p=19083
Ich Stimme zu, und zwar in allen wahrscheinlich Haube dies gilt für den Autor, er (oder jemand anderes) vielleicht einen guten Grund haben, um diese Funktionalität benötigen (geschlossenes system, private oder computer zu Hause). Eine Empfehlung, die auf der Nutzung, aber nicht die Informationen auszublenden.
Ich hoffe, dass Microsoft wird - eines Tages - endlich alles fix-Fokus-Diebstahl ein für alle mal. Programmierer tun gefasst-zu stehlen, sollte nach Sibirien verbannt. Nackt.
Es klingt, wie es gilt genau für Ihre situation zu erhalten. Sie haben Ein Prozess starten Prozess B, und Sie möchten, Verfahren B, um den Fokus erhalten. Die Lösung, wie der Artikel erläutert, dass der Prozess Ein muss Prozess B Fokus - Prozess B können nicht den Fokus von sich selbst.
Für diejenigen, die Folgen: RobH situation ist GENAU der Grund, warum Sie sollten nicht stehlen Fokus. Wenn ich eine Anwendung starten startet einen Prozess können Sie Wetten, dass ich werde schreiben Sie eine E-Mail, während Sie warten, um zu laden. Jetzt kommt Sie Ihren Fokus zu stehlen-app, die die meisten wahrscheinlich Fragen, ob es okay ist, etwas zu tun, zur gleichen Zeit, ich bin schlagen Sie die EINGABETASTE. tun Sie es Gerade nicht.
InformationsquelleAutor Andrew Medico
nicht ShowWindow(youwindow,SW_SHOWNORMAL) arbeiten?
-don'
InformationsquelleAutor Don Dickinson
Werden Sie feststellen, dass BringWindowToTop oder SetForegroundWindow haben Anforderungen, die erfüllt werden müssen, bevor das Fenster wird tatsächlich gezwungen sein, die vor über allen anderen Fenstern (Anwendungen). Wenn diese nicht erfüllt sind, wird Windows nur die flash-Anwendung das Symbol in der Taskleiste. Diese Artikel stellt einen Weg um, aber so 1800-INFORMATIONEN betont, ist es nicht zu empfehlen. Ich denke, Sie müssen nur, es zu akzeptieren.
Danke. Ich habe bearbeitet meine Antwort.
InformationsquelleAutor Arnold Spence