[решено] Узнать запущена ли игра на компьютере ...

Аватара пользователя
FlatX007

Re: [решено] Узнать запущена ли игра на компьютере ...

Сообщение FlatX007 »

А, что обратные исключения трудно задать ? ... темже самым способом. Я ради примера ...
Аватара пользователя
FlatX007

Re: [решено] Узнать запущена ли игра на компьютере ...

Сообщение FlatX007 »

Особо строго несудите ...автоитом занимаюсь недавно мож чего незнаю сделал как умел ... если что лишнее модератор поправьте Изображение



У меня работает проверял!

А простите исправил - сделал бесконечный цикл без паузы у меня в акурат скрипт проц загрузил на 50% Изображение





Код:

Код: Выделить всё

;~ #NoTrayIcon
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
#include 
; СПИСОК ИГР ИСКЛЮЧЕНИЙ. Точное название "окна" игры списываем значение из диспечера задачь вкладка - приложения
Dim $My_Title[3]
$My_Title[0] = "Left 4 Dead"
$My_Title[1] = "FlatOut 2"
$My_Title[2] = "DiRT"
;~ $My_Title[3] = "моя игра 1"
;~ $My_Title[4] = "моя игра 2"
While 1
    Sleep(1000)
    If _IsFullScreen() = 1 Then
        Sleep(3000)
        $WinList = WinList("")
        For $iWin = 0 To $WinList[0][0]
            If _IsFullScreen() = 1 Then
                If WinActive($WinList[$iWin][0]) Then
                    Select
                        Case $My_Title[0] = $WinList[$iWin][0]
                            ContinueLoop
                        Case $My_Title[1] = $WinList[$iWin][0]
                            ContinueLoop
                        Case $My_Title[2] = $WinList[$iWin][0]
                            ContinueLoop
;~                      Case $My_Title[3] = $WinList[$iWin][0]
;~                          ContinueLoop
;~                      Case $My_Title[4] = $WinList[$iWin][0]
;~                          ContinueLoop
                        Case 0 = 0
                            If _IsFullScreen() = 1 Then
                                WinKill($WinList[$iWin][0])
                                ; Сообщение для примера :)
                                MsgBox(48,"Ого!","Запуск этой игры запрёщён злым админюгой это компа!",10)
                            EndIf
                    EndSelect
                EndIf
            EndIf
        Next
    EndIf
WEnd
Func _IsFullScreen()
    Local $hWnd = DllCall('user32.dll', 'hwnd', 'GetForegroundWindow')
    $hWnd = $hWnd[0]
    If (@error) Or ($hWnd = 0) Then
        Return SetError(1, 0, -1)
    EndIf
    If (StringInStr(WinGetClassList($hWnd), 'SHELLDLL_DefView') = 0) And (BitAND(WinGetState($hWnd), 2) = 2) And (_WinAPI_GetClientWidth($hWnd) = @DesktopWidth) And (_WinAPI_GetClientHeight($hWnd) = @DesktopHeight) Then
        Return 1
    EndIf
    Return 0
EndFunc
Аватара пользователя
Pozia

Re: [решено] Узнать запущена ли игра на компьютере ...

Сообщение Pozia »

FlatX007, чудненько. А можете прикрутить список исключений полноэкранных прог? Пусть все же LA и тому подобные плеера работают )
Аватара пользователя
Pozia

Re: [решено] Узнать запущена ли игра на компьютере ...

Сообщение Pozia »

FlatX007, вы бы лучше новым сообщением писали. И благодарность бы получили и народ бы в курсе был того что вы поправили. А то я сюда сейчас чисто случайно зашел. Спасибо. Буду тестить.



FlatX007, проверил сейчас на предмет исключения плеера LA. Не работает, так как его название в диспетчере имеет вид: название фильма - Light Alloy. Следовательно при разных фильмах скрипт не верно обрабатывает исключение. Можно ли сделать так чтобы скрипт не конкретно цеплялся за имя программы в диспетчере, а допустим если есть хоть часть из названия программы из диспетчера в спсике исключений то он уже не закрывал процесс? Или как то еще?
Ответить

Вернуться в «AutoIt»