Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.05.2024
Сообщений: 4

Как сделать GUI приложение с ограниченной по времени работой

26.05.2024, 18:12. Показов 1004. Ответов 12

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Только недавно начал обучаться программированию(примерно месяцев 3 или 4), сам работаю на складе. Делаю программку на swing которая выводит мне список деталей и нажимая на деталь я вижу данные об этой детали которые мне нужны. Так вот вопрос: Как мне сделать эту программу чтоб она работала какое то время допустим условно 30 дней, а потом выходило объявление типа "Лицензия 30 дней закончилась". Искал в интернете, ютубе хоть какие то зацепки, но не нашел. Возможно я не полностью описал вопрос или может не правильно. Я просто никогда такое не делал и не видел. Подскажите где можно почитать про такое или есть ли у java какой то инструмент чтоб сделать такое. Типа обращение к времени компьютера где запускается прога->проверка прошла ли 30 дней с первого запуска. Если нет то работает дальше. Если срок прошел срок то объявление и последующее закрытие программы. Нооо хотелось бы, чтоб люди не меняли время на компе и не обманывали программу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2024, 18:12
Ответы с готовыми решениями:

Как сделать нормальное приложение с GUI?
Под 'нормальным' приложением я подразумеваю то приложение, которое имеет такой вид, как любая программа, которой многие пользуются...

Как сделать GUI приложение в IntelliJ IDEA 12
Здравствуйте , до этого времени писал в консоле только и работал с делфи. Но вот теперь нужно сделать программу с графическим интерфейсом...

Как сама жизнь необходимо сделать gui приложение с таймером
Помогите пожалуйста пню, как мне, разобрать как это все делать. Задание такое: Разработка GUI приложения с использованием графики и...

12
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
26.05.2024, 20:06
Цитата Сообщение от sagid Посмотреть сообщение
Как мне сделать эту программу чтоб она работала какое то время допустим условно 30 дней, а потом выходило объявление типа "Лицензия 30 дней закончилась".
Понять, что если вы реализуете это на Java, то сломают это за пару минут, изучить C++, написать защиту в нативе, и вынести туда часть кода. Стойкость возрастет на пару порядков.
И вообще, механизм лицензирования (надежный) это отдельная предметная область, которая включает в себя и криптографию, и архитектуру ОС.
0
Модератор
Эксперт Java
 Аватар для alecss131
2843 / 1352 / 403
Регистрация: 11.08.2017
Сообщений: 4,316
Записей в блоге: 2
26.05.2024, 21:22
Цитата Сообщение от Azathtot Посмотреть сообщение
Стойкость возрастет на пару порядков.
И нативы ломаются порой проще джавы.

Тут больше зависит от самого принципа защиты. Простой if "лечится" правкой пары байт. Код на джаве можно прилично запутать и обфусцировать, что слом станет ничуть не проще нативов. А так от тех кто хочет сломать не поможет ничего. Как показывает практика, сейчас самый действенный способ защиты это чтото по типу denuvo, но и то только потому что некому ломать.
Более менее надежная защита только в выносе функционала на свои сервера.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
26.05.2024, 21:31
Цитата Сообщение от alecss131 Посмотреть сообщение
И нативы ломаются порой проще джавы.
А это как написать, как написать... Во всем нужна сноровка, закалка, тренировка...
Цитата Сообщение от alecss131 Посмотреть сообщение
Более менее надежная защита только в выносе функционала на свои сервера.
Или на JavaCard ключи.
0
0 / 0 / 0
Регистрация: 26.05.2024
Сообщений: 4
27.05.2024, 15:01  [ТС]
Уважаемые форумчане. Так как у меня на работе нет понимающих в программировании, я просто хочу чтоб в мою программку никто не лазил и даже если скопирует сможет использовать ограниченное время. Если есть какое то простое решение, которое может быть и не самое лучшее в защите я буду очень рад. Что можно было бы добавить вначале кода перед запуском окна, что не давало бы открыться ему если лимит 30 дней превышен. Мне бы попроще что то, так как я сам не профессионал
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
27.05.2024, 15:03
Цитата Сообщение от sagid Посмотреть сообщение
Если есть какое то простое решение, которое может быть и не самое лучшее в защите я буду очень рад
Простого - нет.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.05.2024, 20:41
Лучший ответ Сообщение было отмечено sagid как решение

Решение

Цитата Сообщение от Azathtot Посмотреть сообщение
Простого - нет.
Ну почему ж. Какой-нибудь примитив можно организовать.
sagid, например. При запуске прога ищет в укромном месте некий файл. Если его нет, то создает и пишет туда нынешнюю дату. Если есть, читает дату и сравнивает с нынешней. Месяц прошел - сообщение и выход.
1
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
27.05.2024, 21:18
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Какой-нибудь примитив можно организовать.
по мне так лучше не делать никак, чем делать плохо...
Вариант с файлом к стати вполне себе рабочий, если добавить чуток шифрования и javassist по вкусу.
Но это не просто, согласитесь..
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.05.2024, 21:27
Ну если
Цитата Сообщение от Azathtot Посмотреть сообщение
добавить чуток шифрования и javassist по вкусу
То конечно непросто, согласен. А вот без этих фич, то вполне реально и ТСу самому это все написать.
В винде можно вместо файла в реестр ченьть писать. Если прав хватит разумеется )))
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
28.05.2024, 07:37
Цитата Сообщение от iSmokeJC Посмотреть сообщение
В винде можно вместо файла в реестр ченьть писать
На java... которая платфрмонезависима и про реестр ничего не знает... Так что опять JNI
0
0 / 0 / 0
Регистрация: 26.05.2024
Сообщений: 4
28.05.2024, 19:04  [ТС]
О а можно поподробнее про такой метод про создание спрятанного файла и проверки на дату. Думаю подойдет для моей цели и звучит не так уж сложно
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.05.2024, 19:20
Лучший ответ Сообщение было отмечено sagid как решение

Решение

Да куда ж подробней?
Придумай место какое-нибудь на компе. C:/Temp/Systemfolder/
Почитай, как файл создать/прочитать/записать.
Для даты используй LocalDate. Получение текущей, сравнение и все остальное там реализовано.
Вот ссылко, там оч. хорошо написано
1
wound up as Aussie
324 / 105 / 19
Регистрация: 15.05.2019
Сообщений: 427
29.05.2024, 22:32
Лучший ответ Сообщение было отмечено sagid как решение

Решение

Та он так навряд ли напишет что-то, раз сюда написал.
Вот написал только что самое простое (наверное, хотя не знаю, никогда раньше это было не надо) :
(первый раз запустишь, потом второй, посмотри в консоли разницу. Потом поменяй дату на компе на месяц вперёд, и запусти третий раз. Имя пользователя поменяй на своё. ).
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package daylimittestgeneral;
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
 
public class DayLimitTestGeneral {
 
    JFrame mainProg = new JFrame();
    myPanel jp = new myPanel();
 
    public DayLimitTestGeneral() {
        mainProg.setBounds(200, 200, 300, 300);
        mainProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainProg.add(jp);
        mainProg.setVisible(true);
    }
 
    class myPanel extends JPanel {
 
        @Override
        public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
            g2.clearRect(0, 0, 300, 300);  // Очищаем содержимое экрана
            g2.setColor(Color.red);
            g2.fillOval(100, 100, 20, 20);
            g2.setColor(Color.yellow);
            g2.fillOval(100, 120, 20, 20);
            g2.setColor(Color.green);
            g2.fillOval(100, 140, 20, 20);
        }
    }
 
    public static void main(String[] args) {
        try {
            int x = timetester();
            if (x == -1) {
                System.out.println(" это -1 ");
                JFrame jf = new JFrame();
                JLabel lb = new JLabel("       Более 30 дней");
                jf.setBounds(100, 100, 150, 150);
                jf.add(lb);
                jf.addWindowListener(new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent e) {
                        System.exit(0);
                    }
                });
                jf.setVisible(true);
            } else if (x == 1) {
                System.out.println(" это +1 ");
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        new DayLimitTestGeneral();
                    }
                });
 
            }
        } catch (IOException ex) {
            Logger.getLogger(DayLimitTestGeneral.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    }
 
    public static int timetester() throws FileNotFoundException, IOException {
        LocalDate dateNow = LocalDate.now();
        int count = 0;
        File myFile = new File("C:\\Users\\[COLOR="Red"]ИмяПользователя[/COLOR]\\time.txt");
        int intDate = dateNow.getDayOfYear();
        if (myFile.exists()) {
            try (FileInputStream inputStream = new FileInputStream(myFile)) {
                int result = inputStream.read();
                int newIntDate = dateNow.getDayOfYear();
                if (newIntDate - result > 30) {
                    count = -1;
                } else {
                    count = 1;
                }
                System.out.println(" чтение из файла = " + result);
                inputStream.close();
            }
        } else {
            myFile.createNewFile();
            try (FileOutputStream outputStream = new FileOutputStream(myFile)) {
                outputStream.write(intDate);
                count = 1;
                System.out.println(" запись в файл = " + intDate);
                outputStream.close();
            }
        }
        myFile.setReadOnly();
        return count;
 
    }
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2024, 22:32
Помогаю со студенческими работами здесь

Как сделать gui приложение с использованием скорости анимации по кнопкам?
Разработка GUI приложения с использованием графики и анимации: повторить визуализацию алгоритма из файла 19.gif. Предусмотреть ...

Есть ява приложение с GUI. нужна фукнция для программы. как сделать ?
Есть прикладная задача - управление приточно-вытяжной установкой по уровню CO2 (замеряемому настольным датчиком) с помощью ИК сигналов ...

Как запустить GUI приложение (например, notepad.exe) без отображения GUI?
Добрый день. Интересует есть ли такая возможность, как запустить GUI приложение (например, notepad.exe) без отображения GUI?

Как переделать консольное приложение в приложение с GUI?
Есть приложение, работающее в консоли, захотелось сделать с графическим интерфейсом, уперся в непонимание) Объясните, как: а) заменить...

Можно ли сделать приложение у которого будет консоль и GUI одновременно?
С помощью консоли удобно отлаживать, хотелось бы запускать одновременно с GUI консоль в которую печатать по необходимости отладочный код с...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru