Fenster in Vordergrund holen

  • geschlossen
  • C#

  • ShinoX
  • 3539 Aufrufe 8 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fenster in Vordergrund holen

    Hallo,

    ich bin gerade dabei, einen KeyPresser zu schreiben.
    Er soll in x-Sekunden-Abständen immer eine Taste drücken.

    Nun stehe ich vor dem Problem, dass ich das Fenster nicht in den Vordergrund holen kann.

    Wie kriege ich es also hin, dass er einen Prozess (ein Fenster) in den Vordergrund holt, und dann die Tasten drückt?

    Das ist mein momentaner Code:

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. using System.Diagnostics;
    10. using System.Runtime.InteropServices;
    11. namespace KeyPresser
    12. {
    13. public partial class Presser : Form
    14. {
    15. public Presser()
    16. {
    17. try
    18. {
    19. InitializeComponent();
    20. lblRunTimeCount.Visible = false;
    21. lblFinishedRunTimeCount.Visible = false;
    22. lblRanFor.Visible = false;
    23. }
    24. catch(Exception ex)
    25. {
    26. throw ex;
    27. }
    28. }
    29. [DllImport('user32.dll')]
    30. static extern bool IsIconic(IntPtr hWnd);
    31. [DllImport('user32.dll')]
    32. private static extern
    33. bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
    34. // Win32 API Constants for ShowWindowAsync()
    35. public const int SW_HIDE = 0;
    36. public const int SW_SHOWNORMAL = 1;
    37. public const int SW_SHOWMINIMIZED = 2;
    38. public const int SW_SHOWMAXIMIZED = 3;
    39. public const int SW_SHOWNOACTIVATE = 4;
    40. public const int SW_RESTORE = 9;
    41. public const int SW_SHOWDEFAULT = 10;
    42. private void btnStart_Click(object sender, EventArgs e)
    43. {
    44. try
    45. {
    46. if (tbCharName.Text == "")
    47. {
    48. MessageBox.Show("Charname can not be empty!\nPlease enter a Character Name!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    49. }
    50. else if (tbCharServer.Text == "")
    51. {
    52. MessageBox.Show("Server can not be empty!\nPlease enter your Server!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    53. }
    54. else if (tbKeyToPress.Text == "" || tbKeyToPress.Text.Contains(" "))
    55. {
    56. MessageBox.Show("Key-Field is not correct!\nPlease enter a correct Value!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    57. }
    58. lblRunTimeCount.Visible = true;
    59. SwitchToProcess("notepad.exe");
    60. DirectInput.Send(tbKeyToPress.Text);
    61. }
    62. catch(Exception ex)
    63. {
    64. MessageBox.Show("A unforeseen error has occured", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    65. throw ex;
    66. }
    67. }
    68. private void btnStop_Click(object sender, EventArgs e)
    69. {
    70. try
    71. {
    72. string datetime = System.DateTime.Now.ToString();
    73. string runtimecount = lblRunTimeCount.Text;
    74. lblRunTimeCount.Text = "Stopped on " + datetime;
    75. lblFinishedRunTimeCount.Text = runtimecount;
    76. lblRanFor.Text = System.DateTime.Now.ToString();
    77. lblRanFor.Visible = true;
    78. lblFinishedRunTimeCount.Visible = true;
    79. }
    80. catch(Exception ex)
    81. {
    82. MessageBox.Show("A unforeseen error has occured", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    83. throw ex;
    84. }
    85. }
    86. private void timer_Tick(object sender, EventArgs e)
    87. {
    88. return;
    89. }
    90. private void SwitchToProcess(string m_processName)
    91. {
    92. }
    93. }
    94. }
    Alles anzeigen


    Grüße
  • Danke euch! :)

    Okay, doch noch nicht ganz geklärt :P Ich hab das "using" nun hinzugefügt, bekomme aber nur:

    Quellcode

    1. Microsoft.VisualBasic.VBCodeProvider


    ein "Interaction" gibt es garnicht im IntelliSense.

    Lieben Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword () aus folgendem Grund: Doppelpost => Regeln lesen!

  • Du musst auch noch den Punkt 2 von Biernase beachten.

    In Deinem Projektbaum gibt es ein Treeelement "Verweise".
    Dort fügt man (mittels rechtem Mausklich) den Verweis auf "Microsoft.VisualBasic" hinzu.

    Dann geht es.
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...