управление программой с помощью кнопки

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Пухич писал(а):Можно даже без потока.
Зачем усложнять задачу? К тому же функция GetMessage блокируется до получения сообщения, но можно будет юзать PeekMessage
Пухич писал(а):
P.S. для создания потока можно юзать функцию _beginthread
А не проще CreateThread? Я ее обычно вызывал.
по сути _beginthread это обертка для CreateThread и принимает меньше параметров.
Последний раз редактировалось izmmisha Пн окт 05, 2009 23:08:02, всего редактировалось 1 раз.
Реклама
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

izmmisha писал(а): по сути _beginthread это обертка для CreateThread и принимает меньше параметров.
Ага. Впрочем ненамного меньше. Зато старый добрый CreateThread привычнее. :wink:

Кстати, раз уж мне в руки попался программист, то я вот еще что у Вас спрошу - нет ли в винде аналога линуксового fork()?
Знание - сила!
Реклама
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Пухич писал(а): Кстати, раз уж мне в руки попался программист, то я вот еще что у Вас спрошу - нет ли в винде аналога линуксового fork()?
Такого блага в виндавсе нет (нативными способами) :))), возможно какие нибудь библиотеки существуют для этого.
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

izmmisha писал(а): Такого блага в виндавсе нет (нативными способами) :))), возможно какие нибудь библиотеки существуют для этого.
А жаль.... :(
Знание - сила!
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Не надо изобретать велосипед, я такое уже делал: http://forum.vingrad.ru/index.php?showt ... &p=1900105
Нельзя всё знать, достаточно понимать.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев

Сообщение Аксель »

mr_smit писал(а):Не надо изобретать велосипед, я такое уже делал: http://forum.vingrad.ru/index.php?showt ... &p=1900105
линк уже был на эту разработку в этой теме :

а как по поводу написать софт под юсб кнопку из трех копеечных деталей без всяких мк?
Скелет колобка состоит из черепа.
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Никак. Это тебе не LPT и не Com
Нельзя всё знать, достаточно понимать.
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

mr_smit писал(а):Никак. Это тебе не LPT и не Com
Да нет, Аксель хорошую идейку подкинул. Только пока мыслей нет.
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Юр, я в курсе, почему это происходит. В линуксе аналогично - сначала все процессы получают SIGTERM (пытаясь при этом завершиться корректно), а затем, если продолжают висеть (например нет обработчика данного сигнала), то их выносит рассылка SIGKILL. Не вполне ясно, почему в винде делается запрос на завершение, ну пусть будет так.
Это хорошо, что в курсе :) Вот как это в линуксе устроено - я не знал.
Тут вот что важно - прога по сути ГУИшная, а не консольная, т.к. есть форма, есть для нее модуль, но она не создается (нет вызова метода CreateForm), более того, я даже метод Application->Run() не вызывал. Форму я не создаю, чтобы не появлялось окно формы (отсутствие окна формы создает иллюзию того, что это служба ). Было бы хорошо, если бы ты вкратце описал, как эта петля делается. Она случаем не в стандартном try-catch спрятана? Как регистрировать прогу, как службу, я тоже не в курсе.
Значит всё правильно. Я исходников не смотрел пока, да и тему толком не читал, трудные времена у меня настали - на работе работать заставляют.... Попробую сегодня глянуть :)
Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE, и такое же хендлу приложения (Application.Handle), чтоб кнопка на панели задач не маячила.
Юр, ты тему читал?
начало и конец :oops: Чукча, как говорится, не читатель... вот и я до клавы дорвался :)
вследствие непонятного мне косяка у меня при отладке не срабатывают метод Form->Hide() и свойство Form->Visible. Т.е. я пытаюсь форму скрыть, а она не скрывается. Т.е. опять же окно будет торчать, це не гуд.
Кажется, вызов данных методов для главной формы приложения не работает, только для дочерних. Но не уверен, забыл уж всё... Посылка сообщений точно работает.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE
Прошу прощения, это не сообщение, а параметр АПИ-шной функции ShowWindow.

Вот, для примера, набросал за минуту... В методе формы Timer1Timer можно делать опрос порта. Окно скрывается при запуске.
Вложения
test.rar
(5.39 КБ) 223 скачивания
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Вообще надо так:

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

ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
Такого рода программы при запуске (автозапуске) сразу сворачиваются в трей (это рядом с часами) и тихо, молча ожидают "сигнала с кнопки", а затем выполняют нужные действия. Копирование на Делфи это элементарно. Можно даже прогресс бар поставить на копирование. А по завершении проиграть звук или зажечь светодиод. Камеры будут писать в какую нибудь папку, потом просто эта папка будет заливаться на флешку.
Можно даже ввести проверку свободного места на флешке перед заливкой.
Я уже привел готовое решение. Подключил - так сразу видишь что устройство... кнопка... всё нормально. Оборудование установлено и готово к использованию. Всё по взрослому.
Цена вопроса 120 руб. Аналогичные решения стоят 1500 руб (ссылка)

P.S. А вообще кнопка в Вашем случае неуместна вовсе!!!!!!!! (я просто тему изначально полностью не прочел). Всё делается программно!!!
В машине... тесно... пока флешку воткнешь.... ещё и кнопку нажимать... :shock: да нафиг надо такое счастье.
Программа "мониторит" диски. Как только появился съёмные диск - копируем на него. (Для любителей экзотики можно файл какой нибудь на флешку запихнуть и его читать, типа что точно нужная флешка, а не на все подряд писать, либо читать серийник устройства).

И не парьтесь вы ни с какой кнопкой!!! Всё.

Если интересно, вот пример с треем. Правая кнопка на значке вызывает меню.
Вложения
System_Tray.rar
(171.62 КБ) 236 скачиваний
Нельзя всё знать, достаточно понимать.
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

mr_smit писал(а):Цена вопроса 120 руб. Аналогичные решения стоят 1500 руб (ссылка)
Многоуважаемый, прочитайте тему с начала до конца и идите на рынок продавать своё добро.
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Это вы сейчас к чему???

Я просто высказал своё мнение.
То что человек уже решил проблему это хорошо.
Нельзя всё знать, достаточно понимать.
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Кажется, вызов данных методов для главной формы приложения не работает, только для дочерних. Но не уверен, забыл уж всё... Посылка сообщений точно работает.
В том-то и суть, что всегда РАБОТАЛО. У меня с пяток приложений наберется за годы программирования, где я так делал. Причем последний раз - с полгода назад (делал тормозушку запуска HASP-сервера 1С). А тут как отрезало! :o
Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE, и такое же хендлу приложения (Application.Handle), чтоб кнопка на панели задач не маячила.
Вот это уже интереснее, это опять ново для меня. Т.е. кое-что я об этом слышал, но мои детские познания в программировании не включают полноценное знание этих вещей, дабы их применять. Буду копать, как время будет. Видимо в выходные. larik, вас там еще не задолбало это окно? :)
Прошу прощения, это не сообщение, а параметр АПИ-шной функции ShowWindow.
Ну это мы поняли. Впрочем его вполне можно назвать именно "сообщением". Строго говоря, например, SIGKILL тоже лишь мнемоника значения параметра для функции, а не сигнал, но кагбэ подразумевается сигнал. :)
mr_smit писал(а):Копирование на Делфи это элементарно.
Ну это я не умею. Если только речь не о копировании содержимого файлов (и то кумекать надо, если имена неизвестны). И потом - вариант с запуском батника универсальнее.
Программа "мониторит" диски. Как только появился съёмные диск - копируем на него. (Для любителей экзотики можно файл какой нибудь на флешку запихнуть и его читать, типа что точно нужная флешка, а не на все подряд писать, либо читать серийник устройства).
Якорный бабай, прочтите же тему! Об этом УЖЕ ГОВОРИЛИ. Добрый человек даже функцию отыскал. Но я ж не могу все ваши предложения ввести сразу же! В конце концов тут не "сеанс одновременной игры". Подождите же.... Или сами допишите. Сорцы есть. Форму сделать проще, чем компьютер включить. Форвертс! :)
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Вообще надо так: Код:

ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
Вообще обращение к полям и медотам своего же класса в языке Delphi допустимо без указания полного имени ;)

Так что внутри метода класса TForm1.FormActivate Application.MainForm.Handle = Self.Handle или = просто Handle
Буду копать, как время будет. Видимо в выходные.
Да там просто всё, глубоко копать не придётся :)

У меня вот сейчас необходимость "обкапывать" Qt, но без интернета как без воздуха :(
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

Пухич писал(а): larik, вас там еще не задолбало это окно? :)
неа просто удерживается ключик, с которого он типо запускается, 5 секунд и он вырубается :) жестко но уж на ночь не оставлять 7 ампер жрет однако
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Да там просто всё, глубоко копать не придётся
И все же надо элементарно добраться до компилятора. :)
У меня вот сейчас необходимость "обкапывать" Qt, но без интернета как без воздуха
Да я вот тоже чувствую, что придется с КуТэ разбираться.... Народ сейчас прет с нее, надо и мне переходить, дабы не отстать. Когда-то поленился даже поглядеть, когда начинал в линуксе писать. Решил, что "чистый Си рулит". :)
в языке Delphi
Дался тебе этот Дельфи. Пиши на Сях. :tea:
larik писал(а):неа просто удерживается ключик, с которого он типо запускается, 5 секунд и он вырубается Smile жестко но уж на ночь не оставлять 7 ампер жрет однако
Понятно. :)
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Не дался он мне, просто три года пишу на нем чуть ли не каждый день (на работе), вот и знаю хорошо :-)
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Не дался он мне, просто три года пишу на нем чуть ли не каждый день (на работе), вот и знаю хорошо :-)
А для души на чем пишешь? :)
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

А для души на чем пишешь?
А на душу пока времени не остаётся :( Ничего, скоро поправим!
Ответить

Вернуться в «Интеграция с ПК»