Skip to content

Commit

Permalink
fix lost window
Browse files Browse the repository at this point in the history
  • Loading branch information
AJIOE1111 authored and AJIOE1111 committed Dec 4, 2024
1 parent 8214987 commit a6d962f
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 34 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dist
build
script.spec
.zip
release*
75 changes: 57 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# AutoClicker & Key Presser

![Interface Screenshot](interface.jpg)

## Описание

Expand All @@ -13,6 +10,8 @@
- Сбрасывать все удержания одной кнопкой.
- Поддерживает горячие клавиши для управления.

---

## Скриншот интерфейса

![Интерфейс программы](interface.jpg)
Expand All @@ -29,27 +28,39 @@
- `Alt + E`: Удержание клавиши `E`.
- **Список активных действий**: Интуитивный интерфейс показывает, какие действия активны.
- **Кнопка сброса**: Быстро завершает все удержания.
- **Автопроверка окон**: Программа продолжит работать даже если целевое окно не найдено.

---

## Установка
## Установка и запуск

Вы можете скачать готовую сборку в разделе **Releases** или использовать Python для запуска программы.

### 1. Скачивание готовой версии (.exe)
1. Перейдите в раздел **[Releases](https://github.com/ajioe1111/autoclicker-keypresser/releases)**.
2. Скачайте последний релиз (например, `AutoClicker-KeyPresser-v1.0.0.zip`).
3. Распакуйте архив.
4. Запустите файл `AutoClicker-KeyPresser.exe`.

1. **Клонируйте репозиторий**:
```bash
git clone https://github.com/ajioe1111/autoclicker-keypresser
cd autoclicker-keypresser
```
### 2. Запуск из исходного кода
Если вы хотите запустить программу из исходного кода, выполните следующие шаги:

2. **Установите зависимости**:
Убедитесь, что у вас установлен Python 3.8+.
```bash
pip install -r requirements.txt
```
#### Клонирование репозитория:
```bash
git clone https://github.com/ajioe1111/autoclicker-keypresser
cd autoclicker-keypresser
```

3. **Запустите программу**:
```bash
python script.py
```
#### Установка зависимостей:
Убедитесь, что у вас установлен Python 3.8+.
```bash
pip install -r requirements.txt
```

#### Запуск программы:
```bash
python script.py
```

---

Expand All @@ -64,6 +75,15 @@

---

## Горячие клавиши

- **Alt + ЛКМ**: Включить/выключить удержание ЛКМ.
- **Alt + W**: Удержание клавиши `W`.
- **Alt + S**: Удержание клавиши `S`.
- **Alt + E**: Удержание клавиши `E`.

---

## Зависимости

Список используемых библиотек:
Expand All @@ -75,7 +95,26 @@

---

## Известные проблемы

- Если окно игры не найдено, программа продолжит работать, но удержание ЛКМ или клавиш не будет активным.
- В некоторых играх античиты могут блокировать взаимодействие с эмуляцией событий клавиатуры и мыши.

---

## Лицензия

MIT License © 2024 [AJIOE1111](https://github.com/ajioe1111)
```
---
### Что нового в этом `README.md`:
1. **Добавлена секция про готовую сборку**:
- Пользователи могут скачать `.exe` из раздела **Releases**.
2. **Подробная инструкция для релиза**:
- Ссылки на раздел **Releases** с пояснением, как скачать и использовать готовую программу.
3. **Известные проблемы**:
- Добавлены ограничения, связанные с отсутствием окна или работой античитов.
41 changes: 25 additions & 16 deletions script.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,20 @@ def toggle_key(hwnd, key, key_code):
threading.Thread(target=press_inactive_key, args=(hwnd, key_code), daemon=True).start()


def setup_mouse_and_key_hooks(hwnd):
def setup_mouse_and_key_hooks(hwnd=None):
"""Настройка горячих клавиш для мыши и клавиатуры."""
mouse.on_button(
lambda: toggle_holding(hwnd) if keyboard.is_pressed('alt') else None,
buttons=('left',),
types=('down',)
)

keyboard.add_hotkey("alt+w", lambda: toggle_key(hwnd, "W", 0x57)) # VK_CODE для W
keyboard.add_hotkey("alt+s", lambda: toggle_key(hwnd, "S", 0x53)) # VK_CODE для S
keyboard.add_hotkey("alt+e", lambda: toggle_key(hwnd, "E", 0x45)) # VK_CODE для E
if hwnd:
mouse.on_button(
lambda: toggle_holding(hwnd) if keyboard.is_pressed('alt') else None,
buttons=('left',),
types=('down',)
)

keyboard.add_hotkey("alt+w", lambda: toggle_key(hwnd, "W", 0x57)) # VK_CODE для W
keyboard.add_hotkey("alt+s", lambda: toggle_key(hwnd, "S", 0x53)) # VK_CODE для S
keyboard.add_hotkey("alt+e", lambda: toggle_key(hwnd, "E", 0x45)) # VK_CODE для E
else:
print("Горячие клавиши работают, но окно игры не найдено.")


def reset_all():
Expand All @@ -106,7 +109,7 @@ def update_active_actions():
active_list.insert(tk.END, "Нет активных действий")


def create_interface(hwnd):
def create_interface(hwnd=None):
"""Создание графического интерфейса."""
global status_label, active_list

Expand All @@ -117,7 +120,14 @@ def create_interface(hwnd):
root.resizable(False, False) # Запрет на изменение размера

# Метка состояния
status_label = tk.Label(root, text="Статус: Управление", font=("Arial", 14), fg="blue")
if hwnd:
status_text = "Статус: Управление"
status_color = "blue"
else:
status_text = "Статус: Окно не найдено"
status_color = "red"

status_label = tk.Label(root, text=status_text, font=("Arial", 14), fg=status_color)
status_label.pack(pady=10)

# Список активных действий
Expand Down Expand Up @@ -162,12 +172,11 @@ def main():
game_title = "War" # Укажите часть названия окна игры
window = find_game_window(game_title)

hwnd = window._hWnd if window else None
if not window:
print("Игра не найдена. Убедитесь, что окно запущено.")
return

hwnd = window._hWnd
print(f"Найдено окно: {window.title}")
else:
print(f"Найдено окно: {window.title}")

# Настраиваем горячие клавиши мыши и клавиатуры
setup_mouse_and_key_hooks(hwnd)
Expand Down

0 comments on commit a6d962f

Please sign in to comment.