Announcement

Collapse
No announcement yet.

Focus Entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Focus Entfernen

    Folgendes Problem.
    Ich schreibe ein Programm das sich automatisch aktiviert sozusagen ein popup macht. Nun will ich das wenn ich aber z.b. mit Word was schreibe ich den Focus bei Word behalte und nicht beim hochpopen der anwendung den Focus der Anwendung habe. Wie bekomme ich den Focus der vorherigen Anwendung heraus die vor den Popup Ereignis den Focus hatte.
    Gruß Andreas

  • #2
    Habs alleine gefunden ich überprüfe vor den Popup der Anwendung welches zuvor den Focus hat logisch:
    lastwindow:=GetActiveWindow;
    und dann übergebe ich einfach diesen Fenster wieder den Focus:
    Form1.show;
    SetActiveWindow(lastwindow);
    Wenn´s immer so einfach wäre
    Gruß Andrea

    Comment


    • #3
      Jo, wenns so einfach wäre ist es aber nicht !! Deine Methode mag zwar unter Win9x funktionieren, unter NT/2000 sollte es aber Probleme geben. Der Focus selber ist nur Prozessintern veränderbar und dem MainThread zugeordnet. Du solltest also vor und nach dem Prozess/Threadübergreifendem Verändern eines Fensterfocuses mit AttachThreadInput() den aktuellen Thread mit dem Zielthread verbinden.

      Gruß Hage

      Comment


      • #4
        Also ich hab deins kurz getestet, geht bei mir leider auch nicht vielleicht habe ich da ja noch ein Fehler (gedanklich). Habe jetzt aber was anderes ausprobiert. Ich benutze jetzt an statt getactiveWindow getforegroundwindow. Und siehe da es scheint zu gehen. Werde dies aber unter anderen Systemen noch testen. Benutze 2000. Aber das mit AttachThreadInput muß ich mir wohl auch mal genauer anschauen.

        Gruß
        Andrea

        Comment


        • #5
          Hi

          Hier im Forum mal nach "Cursor/Caret einer fremden Anwendung" oder s.ä. suchen. Da habe ich schon einen Source gepostet. Dieser erfragt zwar das aktuelle Caret und dessen Position, bzw. Fensterhandle einer fremden Anwendung, die Nutzung von AttachThreadInput() ist aber identisch.

          Gruß Hage

          Comment

          Working...
          X