none
Programm permanent aktiv im Vordergrund halten? RRS feed

  • Frage

  • Hallo,

    ich möchte ein Programm permanent im Vordergrund und aktiv halten, sprich, wenn das Programm den Focus verliert (User schaltet z.B. mit ALT-TAB um) soll sich das Programm dennoch sofort wieder in den Vordergrund bringen und aktivieren. Hintergrund: Es soll eine Anwendung werden, welche auf einem Rechner ohne Monitor läuft, an welchem der User Barcodes einscannen kann und entsprechende Ausdrucke erhält. Wäre soetwas möglich? Wenn ja, wie?

    Für Eure Tipps dankend,

    Klaus


    No Brain - No Pain
    Montag, 23. Mai 2011 14:41

Antworten

Alle Antworten

  • Hallo Klaus,

    Obwohl es technisch machbar ist, würde ich davon abraten. Siehe:


    Raymond Chen - How do I create a topmost window that is never covered by other topmost windows?
    http://blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx

    Ich denke: Wenn Deine Anwendung keinen Monitor benötigt, dann benötigt sie auch keine Benutzeroberfläche, oder? Vielleicht könntest Du dir mal POS anschauen.

    Microsoft Point of Service for .NET
    http://www.microsoft.com/windowsembedded/de-de/products/readyproducts/posready/overview.mspx

    Gruß
    Marcel

    Montag, 23. Mai 2011 15:02
    Moderator
  • Hallo Klaus,

    solche Anforderungen gibt es und das ist (dann) vollkommen ok und das ist natürlich möglich.
    Wenn das abgesprochen ist mit dem Kunden und dies auch der Sinn der App ist, würde ich dann in dem Fall davon nicht abraten.

    Es ist nun entscheidend, ob und was noch alles verhindert werden soll/muss.

    Zunächst würde man natürlich zumindest das TopMost = true benutzen. Etwa:

     this.TopMost=true;
     // this.ControlBox=false;
    

    Dann kann man zum Beispiel einen Timer benutzen, der das Fenster ggf. mittels SetForeGroundWindow in den Vordergrund holen.

    Bei stärken Anforderungen zum Beispiel:

    [How to disable windows start key, (Alt +F4), (ctrl + Alt +Del ) in c# windows application C# .NET]
    http://www.eggheadcafe.com/community/aspnet/2/10076502/how-to-disable-windows-start-key-alt-f4-ctrl--alt-del--in-c-windows-application.aspx 

     


    ciao Frank
    Montag, 23. Mai 2011 15:23
  • Hi,

    danke Euch für Eure Tipps! Der Kunde bin ich in diesem Fall selbst :) Daher habe ich auch wenig Bedenken, eine solche Lösung einzusetzen. Ich hab nur keinen Bock mehr darauf, mich jeden Tag per Remote durch x Rechner zu hangeln und eine alte Access-Anwendung in den Vordergrund zu klicken oder irgendwelche USB-Drucker neu anzupassen. Die Drucker hab ich schon im Griff, die drucken jetzt auch ohne Treiber. Und mit dem Programm will ich halt auf Nummer sicher gehen :) Hab nur leider keinen Plan, wie ich mein o.g. Problem lösen könnte. SetForeGroundWindow habe ich mir schon angeschaut, ist aber eben nur die halbe Miete. Ich brauch den Focus wieder auf meiner Anwendung....

    Schöne Grüße,

    Klaus


    No Brain - No Pain
    Montag, 23. Mai 2011 15:47
  • Hallo Klaus,

    • Ich brauch [noch] den Focus ...

    Lösungen diesbzgl. zum Beispiel (zunächst mal ungeprüft) :

    [winforms - C# Force Form Focus - Stack Overflow]
    http://stackoverflow.com/questions/46030/c-force-form-focus

     


    ciao Frank
    • Als Antwort markiert Klaus Mayer Montag, 23. Mai 2011 17:54
    Montag, 23. Mai 2011 16:19
  • Hallo Frank,

    dickes Danke! für den Link. Habs hinbekommen :)

    Schöne Grüße,

    Klaus


    No Brain - No Pain
    Montag, 23. Mai 2011 17:54
  • Hallo Klaus,

    Und was machst Du bei einem UAC-Prompt? Oder bei einem anderen wichtigen, systemmodalen Dialog? - Wie willst Du denn da die Anwendung "permanent im Vordergrund und aktiv halten"? - Bevor Du mit copy & paste den verlinkten Code wiederkehrend ausführst,  lies Dir doch die Dokumentation zur SetForegroundWindow-Funktion durch (vor allem die "Remarks"). Das erspart Dir spätere Enttäuschung und evtl. Datenverlust. Windows ist ein kooperatives Betriebsystem und ist nicht dafür gedacht, eine einzige Anwendung auszuführen.

    Gruß
    Marcel

    Montag, 23. Mai 2011 18:07
    Moderator
  • Hallo Klaus,

    • dickes Danke! für den Link. Habs hinbekommen :)

    freut mich, gern.


    ciao Frank
    Montag, 23. Mai 2011 18:25