Страница 4 из 4
Добавлено: Пн окт 05, 2009 23:00:13
izmmisha
Пухич писал(а):Можно даже без потока.
Зачем усложнять задачу? К тому же функция GetMessage блокируется до получения сообщения, но можно будет юзать
PeekMessage
Пухич писал(а):
А не проще CreateThread? Я ее обычно вызывал.
по сути _beginthread это обертка для CreateThread и принимает меньше параметров.
Добавлено: Пн окт 05, 2009 23:07:46
Пухич
izmmisha писал(а):
по сути _beginthread это обертка для CreateThread и принимает меньше параметров.
Ага. Впрочем ненамного меньше. Зато старый добрый CreateThread привычнее.
Кстати, раз уж мне в руки попался программист, то я вот еще что у Вас спрошу - нет ли в винде аналога линуксового fork()?
Добавлено: Пн окт 05, 2009 23:13:35
izmmisha
Пухич писал(а):
Кстати, раз уж мне в руки попался программист, то я вот еще что у Вас спрошу - нет ли в винде аналога линуксового fork()?
Такого блага в виндавсе нет (нативными способами)

, возможно какие нибудь библиотеки существуют для этого.
Добавлено: Пн окт 05, 2009 23:51:30
Пухич
izmmisha писал(а):
Такого блага в виндавсе нет (нативными способами)

, возможно какие нибудь библиотеки существуют для этого.
А жаль....

Добавлено: Вт окт 06, 2009 17:47:07
mr_smit
Добавлено: Вт окт 06, 2009 21:46:29
Аксель
линк уже был на эту разработку в этой теме :
а как по поводу написать софт под юсб кнопку из трех копеечных деталей без всяких мк?
Добавлено: Вт окт 06, 2009 22:20:05
mr_smit
Никак. Это тебе не LPT и не Com
Добавлено: Вт окт 06, 2009 23:53:17
Пухич
mr_smit писал(а):Никак. Это тебе не LPT и не Com
Да нет, Аксель хорошую идейку подкинул. Только пока мыслей нет.
Добавлено: Ср окт 07, 2009 06:55:17
ploop
Юр, я в курсе, почему это происходит. В линуксе аналогично - сначала все процессы получают SIGTERM (пытаясь при этом завершиться корректно), а затем, если продолжают висеть (например нет обработчика данного сигнала), то их выносит рассылка SIGKILL. Не вполне ясно, почему в винде делается запрос на завершение, ну пусть будет так.
Это хорошо, что в курсе

Вот как это в линуксе устроено - я не знал.
Тут вот что важно - прога по сути ГУИшная, а не консольная, т.к. есть форма, есть для нее модуль, но она не создается (нет вызова метода CreateForm), более того, я даже метод Application->Run() не вызывал. Форму я не создаю, чтобы не появлялось окно формы (отсутствие окна формы создает иллюзию того, что это служба ). Было бы хорошо, если бы ты вкратце описал, как эта петля делается. Она случаем не в стандартном try-catch спрятана? Как регистрировать прогу, как службу, я тоже не в курсе.
Значит всё правильно. Я исходников не смотрел пока, да и тему толком не читал, трудные времена у меня настали - на работе работать заставляют.... Попробую сегодня глянуть

Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE, и такое же хендлу приложения (Application.Handle), чтоб кнопка на панели задач не маячила.
Юр, ты тему читал?
начало и конец

Чукча, как говорится, не читатель... вот и я до клавы дорвался
вследствие непонятного мне косяка у меня при отладке не срабатывают метод Form->Hide() и свойство Form->Visible. Т.е. я пытаюсь форму скрыть, а она не скрывается. Т.е. опять же окно будет торчать, це не гуд.
Кажется, вызов данных методов для главной формы приложения не работает, только для дочерних. Но не уверен, забыл уж всё... Посылка сообщений точно работает.
Добавлено: Ср окт 07, 2009 09:09:25
ploop
Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE
Прошу прощения, это не сообщение, а параметр АПИ-шной функции ShowWindow.
Вот, для примера, набросал за минуту... В методе формы Timer1Timer можно делать опрос порта. Окно скрывается при запуске.
Добавлено: Ср окт 07, 2009 17:37:03
mr_smit
Вообще надо так:
Код: Выделить всё
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
Такого рода программы при запуске (автозапуске) сразу сворачиваются в трей (это рядом с часами) и тихо, молча ожидают "сигнала с кнопки", а затем выполняют нужные действия. Копирование на Делфи это элементарно. Можно даже
прогресс бар поставить на копирование. А по завершении проиграть звук или зажечь светодиод. Камеры будут писать в какую нибудь папку, потом просто эта папка будет заливаться на флешку.
Можно даже ввести проверку свободного места на флешке перед заливкой.
Я уже привел готовое решение. Подключил - так сразу видишь что устройство... кнопка... всё нормально. Оборудование установлено и готово к использованию. Всё по взрослому.
Цена вопроса 120 руб. Аналогичные решения стоят 1500 руб (
ссылка)
P.S.
А вообще кнопка в Вашем случае неуместна вовсе!!!!!!!! (я просто тему изначально полностью не прочел).
Всё делается программно!!!
В машине... тесно... пока флешку воткнешь.... ещё и кнопку нажимать...

да нафиг надо такое счастье.
Программа "мониторит" диски. Как только появился съёмные диск - копируем на него. (Для любителей экзотики можно файл какой нибудь на флешку запихнуть и его читать, типа что точно нужная флешка, а не на все подряд писать, либо читать серийник устройства).
И не парьтесь вы ни с какой кнопкой!!! Всё.
Если интересно, вот пример с треем. Правая кнопка на значке вызывает меню.
Добавлено: Ср окт 07, 2009 18:25:08
izmmisha
mr_smit писал(а):Цена вопроса 120 руб. Аналогичные решения стоят 1500 руб (
ссылка)
Многоуважаемый, прочитайте тему с начала до конца и идите на рынок продавать своё добро.
Добавлено: Ср окт 07, 2009 20:38:30
mr_smit
Это вы сейчас к чему???
Я просто высказал своё мнение.
То что человек уже решил проблему это хорошо.
Добавлено: Чт окт 08, 2009 00:08:13
Пухич
ploop писал(а):Кажется, вызов данных методов для главной формы приложения не работает, только для дочерних. Но не уверен, забыл уж всё... Посылка сообщений точно работает.
В том-то и суть, что всегда РАБОТАЛО. У меня с пяток приложений наберется за годы программирования, где я так делал. Причем последний раз - с полгода назад (делал тормозушку запуска HASP-сервера 1С). А тут как отрезало!
Я бы посоветовал форму то создать, но сделать её невидимой, послав сообщение хендлу формы SW_HIDE, и такое же хендлу приложения (Application.Handle), чтоб кнопка на панели задач не маячила.
Вот это уже интереснее, это опять ново для меня. Т.е. кое-что я об этом слышал, но мои детские познания в программировании не включают полноценное знание этих вещей, дабы их применять. Буду копать, как время будет. Видимо в выходные.
larik, вас там еще не задолбало это окно?
Прошу прощения, это не сообщение, а параметр АПИ-шной функции ShowWindow.
Ну это мы поняли. Впрочем его вполне можно назвать именно "сообщением". Строго говоря, например, SIGKILL тоже лишь мнемоника значения параметра для функции, а не сигнал, но кагбэ подразумевается сигнал.
mr_smit писал(а):Копирование на Делфи это элементарно.
Ну это я не умею. Если только речь не о копировании содержимого файлов (и то кумекать надо, если имена неизвестны). И потом - вариант с запуском батника универсальнее.
Программа "мониторит" диски. Как только появился съёмные диск - копируем на него. (Для любителей экзотики можно файл какой нибудь на флешку запихнуть и его читать, типа что точно нужная флешка, а не на все подряд писать, либо читать серийник устройства).
Якорный бабай, прочтите же тему! Об этом УЖЕ ГОВОРИЛИ. Добрый человек даже функцию отыскал. Но я ж не могу все ваши предложения ввести сразу же! В конце концов тут не "сеанс одновременной игры". Подождите же.... Или сами допишите. Сорцы есть. Форму сделать проще, чем компьютер включить. Форвертс!

Добавлено: Чт окт 08, 2009 09:42:34
ploop
Вообще надо так: Код:
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
Вообще обращение к полям и медотам своего же класса в языке Delphi допустимо без указания полного имени
Так что внутри метода класса TForm1.FormActivate Application.MainForm.Handle = Self.Handle или = просто Handle
Буду копать, как время будет. Видимо в выходные.
Да там просто всё, глубоко копать не придётся
У меня вот сейчас необходимость "обкапывать" Qt, но без интернета как без воздуха

Добавлено: Чт окт 08, 2009 15:42:42
larik
Пухич писал(а): larik, вас там еще не задолбало это окно?
неа просто удерживается ключик, с которого он типо запускается, 5 секунд и он вырубается

жестко но уж на ночь не оставлять 7 ампер жрет однако
Добавлено: Чт окт 08, 2009 17:51:28
Пухич
ploop писал(а):Да там просто всё, глубоко копать не придётся
И все же надо элементарно добраться до компилятора.
У меня вот сейчас необходимость "обкапывать" Qt, но без интернета как без воздуха
Да я вот тоже чувствую, что придется с КуТэ разбираться.... Народ сейчас прет с нее, надо и мне переходить, дабы не отстать. Когда-то поленился даже поглядеть, когда начинал в линуксе писать. Решил, что "чистый Си рулит".
в языке Delphi
Дался тебе этот Дельфи. Пиши на Сях.
larik писал(а):неа просто удерживается ключик, с которого он типо запускается, 5 секунд и он вырубается Smile жестко но уж на ночь не оставлять 7 ампер жрет однако
Понятно.

Добавлено: Чт окт 08, 2009 18:43:51
ploop
Не дался он мне, просто три года пишу на нем чуть ли не каждый день (на работе), вот и знаю хорошо

Добавлено: Чт окт 08, 2009 22:12:07
Пухич
ploop писал(а):Не дался он мне, просто три года пишу на нем чуть ли не каждый день (на работе), вот и знаю хорошо

А для души на чем пишешь?

Добавлено: Пт окт 09, 2009 11:53:39
ploop
А для души на чем пишешь?
А на душу пока времени не остаётся

Ничего, скоро поправим!