Вопрос № 31314: Здраствуй народ. Работаю под W2000 SP4 с Delphi 7. Вопрос вот в чем: Моя программа выполняет файловые операции, довольно продолжительное время. Если ее закрыть другим приложением, а потом это-же приложение свернуть, то моя программа "с лица спад...Вопрос № 31328: Здравствуйте уважаемые эксперты!
Помогите пожалуйста!!!
1. Можно-ли сделать так, чтобы при нажатии на левую кнопку мыши комп думал, что я нажал на F.
P.S. Это должно происходить в другой запущеной прогамме.
2. Если можно, то как?
...Вопрос № 31332: Здравствуйте эксперты !
Вопрос такой как можно узнать запущенна определённая прога или нет и если нет то выполнить определённую функцию, а запущенно то ничего не делать(известен только заголовок проги) если можно с небольшим исходничком
...
Вопрос № 31.314
Здраствуй народ. Работаю под W2000 SP4 с Delphi 7. Вопрос вот в чем: Моя программа выполняет файловые операции, довольно продолжительное время. Если ее закрыть другим приложением, а потом это-же приложение свернуть, то моя программа "с лица спадает", т.к. никаких обновлений формы я не делаю (заисключением процента выполнения), что бы не тормозить работу. Как можно востановить форму, когда программа становиться видимой (если возможно, частично видомой, т.е. не полностью закрыта другим приложением),
а так же как вывести на верх мое приложение с обновлением формы при выборе моего приложения в нижней строке "Панели инструментов".
Отвечает: Werewolf
Здравствуйте, Карасев Алексей Александрович!
В цикле обработке пропишите
Application.ProcessMessages;
Это позволит обработать очередь сообщений окна формы а затаем продолжить цикл.
Но правильнее организовывать обработку отдельным потоком, а затем методом Synchronize выводить прогресс.
Удачи.
Ответ отправил: Werewolf (статус: Студент)
Отправлен: 12.12.2005, 11:46
Отвечает: streetcat
Здравствуйте, Карасев Алексей Александрович!
попробуй обновлять окно на onActivate формы. Но это вряд ли сработает. Если "файловые операции" выполняются циклом, то вставь в него что-то типа:
Application.ProcessMessages или аналогично на WinAPI
т.е. чтоб твое приложение в процессе работы отвечала на сообщения винды, например, на то же развертывание окна из значка на таскбаре.
это не будет сильно тормозить работу.
Ответ отправил: streetcat (статус: 8-ой класс)
Отправлен: 12.12.2005, 15:08
Вопрос № 31.328
Здравствуйте уважаемые эксперты!
Помогите пожалуйста!!!
1. Можно-ли сделать так, чтобы при нажатии на левую кнопку мыши комп думал, что я нажал на F.
P.S. Это должно происходить в другой запущеной прогамме.
2. Если можно, то как?
За ранее Спасибо! До свидания!
Отправлен: 12.12.2005, 15:53
Вопрос задал: MaCC (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, MaCC!
Это можно сделать, послав сообщение:
SendMessage(Window, WM_KEYDOWN, $46, 0);
Это стандартная посылка сообщения, где:
Window - хэндл окна, для которого сообщение предназначено
WM_KEYDOWN - это собственно сообщение и есть
$46 - код буквы F
В последний параметр обычно запихивают скан-код клавиши, кол-во повторений и т.п. чепуху.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.12.2005, 18:33 Оценка за ответ: 5 Комментарий оценки: Спасибо ОГРОМНОЕ sir henry вы очень помогли (причём второй раз).
Вопрос № 31.332
Здравствуйте эксперты !
Вопрос такой как можно узнать запущенна определённая прога или нет и если нет то выполнить определённую функцию, а запущенно то ничего не делать(известен только заголовок проги) если можно с небольшим исходничком
Отправлен: 12.12.2005, 17:05
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, Dimon007!
Через API-функцию FindWindow. Примерно так:
Var H: HWnd;
...
H:=FindWindow('nil','Заголовок');
if (H > 32) then begin {действия, если программа запущена} end
else begin {не запущена} end;
--------- В то время как остальные процессоры уже закончили работу, процессоры VIA продолжают работать, работать и работать! :))
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 12.12.2005, 17:15
Отвечает: Zubex
Здравствуйте, Dimon007!
В приложении код, который ищет запущена программа или нет, если запущена, то посылает ей сообщение, а если не запущена то запускает ее...
Приложение:
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 3-ий класс)
Отправлен: 12.12.2005, 17:34
Отвечает: REFERI
Здравствуйте, Dimon007!
В приложении полный код.
Все что вам нужно знать это имя программы.
Удачи в кодинге!
Приложение:
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 12.12.2005, 18:48
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Dimon007!
Используйте API функцию FindWindow (Выдержка из SDK дана в приложении)
в lpClassName в вашем случае передается NIL.
в lpWindowName - заголовок искомого окна.
Если функция найдет данное окно, то вернет указатель на окно, иначе NIL...