Fokus Sezten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TischlerMichi.

    Hallo Leute

    Hab ein Programm geschrieben das beim Start Outlook öffnet Leider setzt es den Fokus dann auch auf Outlook und nicht auf mein Programm.
    Das heißt ich muss nach Start wieder Hineinklicken.

    Öffne mit diesem Befehle das Programm minimier es Gleich.


    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If Process.GetProcessesByName("outlook").Count > 0 Then
    3. '--- Tue nichts, alles fein ---
    4. Else
    5. '--- Outlook starten ---
    6. Dim si As New ProcessStartInfo("outlook")
    7. si.WindowStyle = ProcessWindowStyle.Minimized
    8. Process.Start(si)
    9. Application.DoEvents()
    10. End If
    11. Me.Focus() ' Geht nicht!!
    12. Me.Activate() ' Geht nicht!!
    13. End Sub


    :thumbdown: :cursing:

    TischlerMichi schrieb:

    VB.NET-Quellcode

    1. Form1_Load
    Hier ist die Form noch unsichtbar, kann also gar keinen Fokus haben.
    Mach das mal im Form_Shown-Event.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke RodFromGermny

    Hab ich schon Probiert geht leider nicht.


    :o{

    Danke auch KaskadekingDE

    Aber ich will Outlook im Hintergrund laden und dann weiterarbeiten um zeit zu Sparen


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TischlerMichi“ ()

    TischlerMichi schrieb:

    geht leider nicht.
    Ich habs mal probiert, so sollte es gehen.
    Der Witz ist, das WaitForInputIdle() iwie nicht wirkt.

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <DllImport("User32.dll")> _
    4. Private Shared Function SetForegroundWindow(hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
    5. End Function
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. Dim pr As New Process
    8. pr.StartInfo.FileName = "C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE"
    9. pr.StartInfo.WorkingDirectory = "C:\Program Files\Microsoft Office\Office14"
    10. pr.Start()
    11. System.Threading.Thread.Sleep(1000)
    12. pr.WaitForInputIdle(15000)
    13. SetForegroundWindow(Me.Handle)
    14. Me.Focus()
    15. Me.RichTextBox1.Focus()
    16. Me.RichTextBox1.AppendText("feddich")
    17. End Sub
    18. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod

    Auf so etwas Wäre ich nie im Leben gekommen! Man merkt Du verstehst was davon
    leider funktioniert das leider nicht im Form Load oder Shown Event. das ist das Problem.

    Wenn ich deinen Code einsetzt passiert Folgendes:
    das form startet Outlook setzt den Focus sauber in mein Form und wenn die zeit abgelaufen ist kommt erst recht wieder Outlook nach vorne!

    Danke aber für diene Bemühung wird mich noch etwas Spielen