Fenster im windowed mode (alt+Enter) + screenshot... geht aber delay!

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Amokossi.

    Fenster im windowed mode (alt+Enter) + screenshot... geht aber delay!

    VB2010

    Moin,

    folgendes Problem. Ich nutze den Hotkey F10 um Screenshots vom aktiven Fenster (fifa14) zu machen.

    Nun möchte ich aber das vorher atl+Enter bei F10 getriggert wird (FensterModus) *delay 4 sekunden* Screenshot.

    Es klappt auch, doch das delay wirkt sich auch immer auf das sendkeys aus. Also ich denke es liegt daran das die eien sub die andere aufruft und diese wieder die andere:

    Im letzten Codebereichbereich ist das sendkeys und der Aufruf der "CheckFocus" in der auch das delay drin ist. Ich habe erwartet, das er das sendkeys direkt macht und dann erst das checkfocus abarbeitet. Aber das sendkeys ist nun auch delayed um 4sek.

    Wie könnte ich das anders lösen?

    Visual Basic-Quellcode

    1. Private Sub TakeScreen()
    2. My.Computer.Audio.Play(My.Resources.camera1, AudioPlayMode.Background)
    3. g.CopyFromScreen( _
    4. Screen.PrimaryScreen.Bounds.Location, _
    5. New Point(0, 0), Screen.PrimaryScreen.Bounds.Size)
    6. 'PictureBox1.Image = b
    7. If String.IsNullOrEmpty(My.Settings.SpeicherOrt) Then
    8. TB_SpeicherPfad.Text = OrtEigeneDateien
    9. Else
    10. TB_SpeicherPfad.Text = My.Settings.SpeicherOrt
    11. End If
    12. Dim screenshotName As String = "Fifa-Mods.de_Liga" & "_" & Counter & "_" & My.Settings.team_id & "_" & My.Settings.user_id & "_" & dateString
    13. Dim captureSavePath As String = String.Format(TB_SpeicherPfad.Text & "\" & screenshotName & ".jpg")
    14. Directory.CreateDirectory(Path.GetDirectoryName(captureSavePath))
    15. 'b.Save("c:\\MyScreenShotBMP.BMP", Imaging.ImageFormat.Bmp)
    16. 'b.Save("c:\\MyScreenShotJPG.jpg", Imaging.ImageFormat.Jpeg)
    17. Dim myEncoderParameter = New EncoderParameter(myEncoder, 100&)
    18. myEncoderParameters.Param(0) = myEncoderParameter
    19. 'b.Save("c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters)
    20. b.Save(captureSavePath, jgpEncoder, myEncoderParameters)
    21. TextBox1.Text = Counter
    22. Counter = Counter + 1
    23. 'SendKeys.Send("%{ENTER}") 'for Ctrl-C
    24. 'If My.Settings.OS = "7" Or My.Settings.OS = "Vista" Then
    25. ' DwmEnableComposition(True)
    26. 'End If
    27. End Sub


    Visual Basic-Quellcode

    1. Private Sub CheckFokus()
    2. Dim pList() As Process
    3. Dim processID As Int32
    4. Dim processName As String = Process.GetProcessById(processID).ProcessName
    5. GetWindowThreadProcessId(GetForegroundWindow(), processID)
    6. pList = Process.GetProcesses
    7. 'MsgBox(Process.GetProcessById(processID).ProcessName)
    8. 'MsgBox(Process.GetProcessById(processID).MainWindowTitle)
    9. For Each p As Process In pList
    10. If Process.GetProcessById(processID).MainWindowTitle = "FIFA 14" And Process.GetProcessById(processID).ProcessName = "fifa14" Then
    11. 'If Process.GetProcessById(processID).ProcessName = "firefox" Then
    12. System.Threading.Thread.Sleep(4000)
    13. TakeScreen()
    14. Return
    15. Else
    16. MsgBox("Screenshots sind nur InGame möglich!")
    17. Return
    18. End If
    19. Next
    20. End Sub


    Visual Basic-Quellcode

    1. Protected Overrides Sub WndProc(ByRef m As Message)
    2. If m.Msg = WM_HOTKEY Then
    3. SendKeys.Send("%~")
    4. CheckFokus()
    5. End If
    6. MyBase.WndProc(m)
    7. End Sub



    Danke
    Amokossi