Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.07.2017
Сообщений: 9

Не работает код

03.08.2018, 20:23. Показов 1767. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По моему плану, если цвета совпадают, то должен быть нажат Caps Lock, но почему-то ничего не происходит, объясните что не так?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package Bots;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class Bot_01 {
 
    public static void main(String[] args) throws AWTException {
        Robot x = new Robot();
         Color G = new Color(71,151,255);
        //1920X1080
        for(int f=1;f>1080;f++) {
        for(int i=1;i>1920;i++) {
            Color T = x.getPixelColor(i,f);
            if (G==T){
                x.keyPress(KeyEvent.VK_CAPS_LOCK);
            }
        }
        }
  }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2018, 20:23
Ответы с готовыми решениями:

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

Написал код в Full Debug, потом переделал в Release - и написанный код не работает
Кто сталкивался с проблемой, написал код в Full Debug потом переделал в Release и написанный код не работает (((

DirectX 9.0 Ищу нормальный рабочий код для вывода текста. В книгах код не работает!
Подскажите нормальный рабочий код для вывода текста на экран. Сложность в том, что при разных версиях DirectX разные коды. В интернете...

7
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
03.08.2018, 21:43
Не должен быть нажат Caps Lock
Проверьте без всякого условия.
Java
1
2
3
4
5
6
7
public class Bot_01 {
    public static void main(String[] args) throws AWTException {
         Robot x = new Robot();
         x.keyPress(KeyEvent.VK_CAPS_LOCK);
        
    }
}
1
0 / 0 / 0
Регистрация: 11.07.2017
Сообщений: 9
03.08.2018, 21:56  [ТС]
vvm28, проверил, нажимается.
Он не должен был нажиматься, правильно понимаю?
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
03.08.2018, 21:59
PS.
Java
1
2
3
4
  // проверить статус  CapsLock 
        boolean isCapsLockOn = java.awt.Toolkit.getDefaultToolkit().getLockingKeyState(
                                       java.awt.event.KeyEvent.VK_CAPS_LOCK); 
        System.out.println("isCapsLockOn = "+ isCapsLockOn);
Такое работает. Проверяет включен ли CapsLock.
1
0 / 0 / 0
Регистрация: 11.07.2017
Сообщений: 9
03.08.2018, 22:06  [ТС]
vvm28, Погодите, у меня на клавиатуре загорается огонёк, если Caps включен.
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
03.08.2018, 22:40
Что делает ваш код? Что вы хотите получить в результате?
Что бы загорался огонек программно? Сам включался без нажатия на кнопке?
1
0 / 0 / 0
Регистрация: 11.07.2017
Сообщений: 9
03.08.2018, 22:50  [ТС]
vvm28, Мой код должен находить на экране 1920x1080 пиксель определённого цвета Color(71,151,255), и в результате, должен быть нажат caps.
Кстати, после проверки пишет false, но капс работает.
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
04.08.2018, 03:22
Лучший ответ Сообщение было отмечено Darkfill как решение

Решение

Вот нашел :
Java
1
2
3
Toolkit toolkit = Toolkit.getDefaultToolkit(); 
toolkit.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, true); // включить 
toolkit.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, false); // выключить
Но у меня в Linux такое не работает. Выдает исключение.
Exception in thread "main" java.lang.UnsupportedOperationException: Toolkit.setLockingKeyState
at java.awt.Toolkit.setLockingKeyState(Tool kit.java:1426)

Не знаю, может в Windows можно программно включить caps.

Добавлено через 3 минуты
Попробуйте заменить
Java
1
2
3
if (G==T){
                x.keyPress(KeyEvent.VK_CAPS_LOCK);
            }
На
Java
1
2
3
if (G==T){
                  System.out.println("Работает ");
            }
Добавлено через 14 минут
Получилось!!!
Нужно выполнить две команды:
Java
1
2
 x.keyPress(KeyEvent.VK_CAPS_LOCK); // нажать капс
         x.keyRelease(KeyEvent.VK_CAPS_LOCK); // отпустить капс
И лампочка должна зажечься.

Добавлено через 30 минут
Цвет сравнивать наверное нужно так:
Java
1
     if (color1.equals(color2))
Но почему-то не находит такого цвета.

Добавлено через 48 минут
И еще тут:
Java
1
2
for(int f=1;f>1080;f++) {
        for(int i=1;i>1920;i++) {
Нужно наверное :
Java
1
2
for(int f=1;f < 1080;f++) {
        for(int i=1;i < 1920;i++) {
Иначе у вас ничего происходить не будет.

Добавлено через 57 минут
Я немного переделал. Вот что получилось. Всё работает:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
 
 */
package bots;
 
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
import java.awt.event.KeyEvent;
 
/**
 *
 * @author vvm
 */
public class Bot_01 {
 
    private Robot robot;
 
    public static void main(String[] args) throws AWTException {
 
        Bot_01 bt = new Bot_01();
        bt.robot = new Robot();
 
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Start in thread");
                Color color2 = new Color(255, 255, 255);
 
                for (int i = 100; i < 150; i++) {
                    for (int j = 100; j < 200; j++) {
                        Color color1 = bt.robot.getPixelColor(i, j);
 
                        System.out.println("Color print: Red = " + color1.getRed() + " Green = " + color1.getGreen() + " Blue = " + color1.getBlue());
                        if (color1.equals(color2)) {
                            System.out.print("Пиксел " + i + " " + j + " Yes ");
                            bt.robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                            bt.robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
 
                        } else {
                            System.out.print("Not found ");
                        }
                    }
                }
                System.out.println("Конец  цикла");
            }
        }).start();
 
    }
 
}
Запустил в потоке.
Тут я взял небольшой участок экрана. Если цвет совпадает, то лампочка CapsLock мигает.

Добавлено через 1 час 14 минут
Цитата Сообщение от Darkfill Посмотреть сообщение
Кстати, после проверки пишет false, но капс работает.
false - это состояние CapsLock. Значит он выключен. То есть находится в состоянии - "отжат",
если true - то состояние нажат.
Можно вручную нажать CapsLock , запустить
Java
1
2
3
boolean isCapsLockOn = java.awt.Toolkit.getDefaultToolkit().getLockingKeyState(
                                       java.awt.event.KeyEvent.VK_CAPS_LOCK); 
        System.out.println("isCapsLockOn = "+ isCapsLockOn);
Также вручную выключить CapsLock и проветрить этим же кодом.

PS. Можно еще включать , выключать Num Lock, если он есть на клавиатуре:

Java
1
2
3
     
             bt.robot.keyPress( KeyEvent.VK_NUM_LOCK);
             bt.robot.keyRelease(KeyEvent.VK_NUM_LOCK);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.08.2018, 03:22
Помогаю со студенческими работами здесь

Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код
Здравствуйте, столкнулся с такой проблемой. Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код....

Excel: Код в модуле и тот же код в кнопке НЕ РАБОТАЕТ
Здравствуйте! Вопрос такой: Код написан макросом (работает)и помещен в кнопку - НЕ работает. Почему так происходит. Пример в файле. ...

Код не работает в 2008 версии visual studio, но работает в 2005
Добрый день. Писала на университетском компьютере программу, считывающую данные из файла в список структур. Там стоит 2005 версия, и всё...

std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)
Как изменился синтаксис в Visual Studio 2012 данной строки? В VS 6.0 работает, в 2012 - нет. Кто подскажет, где можно взять список...

Код с пробелами работает в командной строке, но не работает из bat-файла
Помогите как откоректировать bat файл, чтобы он работал c: cd c:\Program Files (x86)\XMOS\xTIMEcomposer\Community_14.3.3 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru