Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kigoron

Цитата:
потом получить ссылку на файл выбранной программы.

Расшифруй фразу. Лично я понинял так:
1. Через OpenDialog получаем имя файла с путем к нему. За это у тебя отвечает строчка
Код:
if Opendialog1.Execute then
.
2. Выбранный файл открываем с помощью rundll32.exe. Это у тебя тоже прописано.
 

Цитата:
Как мне получить имя файла с путем выбранной программы?

Имя файла - OpenDialog1.FileName. А что ты подразумеваешь под "путем выбранной программы"? Тебе нужен путь к rundll32.exe? Тогда GetSystemDirectory тебе в помощь.


----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 07:04 23-02-2009
kigoron

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Имя файла - OpenDialog1.FileName. А что ты подразумеваешь под "путем выбранной программы"? Тебе нужен путь к rundll32.exe? Тогда GetSystemDirectory тебе в помощь.

В OpenDialog1.FileName имя выбранного файла, а мне нужно получить имя выбранной программы, чтоб её запускать через определенный интервал времени.

Всего записей: 9 | Зарегистр. 05-08-2008 | Отправлено: 11:16 23-02-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kigoron
А можно всю задачу целиком? Ато есть ощущение, что сама постановка задачи не верна.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 11:52 23-02-2009 | Исправлено: Frodo_Torbins, 19:27 23-02-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kigoron
Думаю, что следует по имени файла найти прогу в реестре.

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 12:19 23-02-2009
kigoron

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А можно всю задау целиком? Ато есть ощущение, что сама постановка задачи не верна.

Выбрать одну из установленных на компе программ, интервал запуска и завершения. Программа должна автоматом запускать выбранную через заданный промежуток времени и закрывать через другой заданный интервал. Заказчик сказал, то реестром не нужно пользоваться, а просто нужно выбирать из списка программ, который выдается при выборе программы при открытии файла ("открыть с помощью").

Всего записей: 9 | Зарегистр. 05-08-2008 | Отправлено: 13:28 23-02-2009 | Исправлено: kigoron, 13:30 23-02-2009
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kigoron
Эту программу необходимо каждый раз заново определять или это будет одна и та же? Во втором случае проще всего записать путь к программе в файл настроек и не мудрить лишний раз. Да и бОльшую часть работы можно переложить на at и "Планировщик заданий" Windows.

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 15:46 23-02-2009 | Исправлено: Tantos, 15:48 23-02-2009
kigoron

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Эту программу необходимо каждый раз заново определять или это будет одна и та же? Во втором случае проще всего записать путь к программе в файл настроек и не мудрить лишний раз. Да и бОльшую часть работы можно переложить на at и "Планировщик заданий" Windows.

Та же, пока пользователь не прервал выполнение программы и не выбрал другую.
 

Всего записей: 9 | Зарегистр. 05-08-2008 | Отправлено: 16:18 23-02-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Заказчик сказал, то реестром не нужно пользоваться, а просто нужно выбирать из списка программ, который выдается при выборе программы при открытии файла ("открыть с помощью").

Этот список все равно похоже берется из реестра, так что свой диалог наверно будет лучше.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 19:33 23-02-2009
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Чем же лучше то, Фродо?
 
kigoron
X:\Program Files\Borland\DelphiX\Demos\Doc\filmanex.dpr
Использование реестра не предусмотрено, нет там в юнитах Registry. Да и демонстрацию эту давно уже несправедливо обходят стороной.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:02 23-02-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Тем что из него по крайней мере можно будет узнать какую программу выбрали.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 21:10 23-02-2009
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Тогда это вопрос к MSDN, которая содержит функции/интерфейсы для замены тупого использования ветки HKEY_CLASSES_ROOT. Мне кажется задание изначально идиотское, реестр (если его читаешь) не изменится, а вот эти функции с ближайшим апдейтом могут уйти в аут.
 
Добавлено:
kigoron
Можно мониторить процессы, и выбрать из ближайших двух появившихся. Если один из них известный антивирус, то сделать вид, что мы ничего не заметили. В этом то и идиотизм.
 
Добавлено:
А можно использовать секюрити, чтобы получить PID запущенного ShellExecuteEx процесса.
 
Добавлено:
У открытого вами процесса привилегии и среда будут только теми, которые у вас.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 21:42 23-02-2009
dmit000



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Установил компаненты Raize Components. Побаловался. Затем решил их убрать с формы, заменив стандартными компанентами. Убрал.
Вопрос:
Как (только не руками) убрать описание того чего уже нет на форме из раздела USES?

Всего записей: 483 | Зарегистр. 07-06-2004 | Отправлено: 11:26 24-02-2009 | Исправлено: dmit000, 11:28 24-02-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmit000 использовать наверно придется какой нить эксперт... либо самому написать либо найти...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 13:30 24-02-2009
Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmit000
Попробуй ето: http://www.peganza.com/products_icarus.htm

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 15:31 24-02-2009
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins

Цитата:
StalkerSoftware
Цитата:
Этого я сделать не могу, так как Key это var параметр обработчика нажатия клавиши OnKeyPress.
 
Ну и? Обьявите новую переменную AnsiChar, присвойте ей значение key...

Пробовал, но что то я видать не так делаю.
 
cKey :AnsiChar;
 
 cKey := Key  
или
 cKey := AnsiChar(Key)
 
В первом случае D2009 просто ругается на несовместимость типов, во втором случае хотя и запускается, но идет неправильное преобразование типов.
 
Вопрос: Как правильно преобразовать из Char в AnsiChar ?
 
 

Всего записей: 683 | Зарегистр. 23-06-2008 | Отправлено: 17:07 24-02-2009
Dmiro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Изврат, конечно, но так работает.
 
Var
  ch:AnsiChar;
  s:AnsiString;
begin
  s:=Key;
  ch := s[1];
  if CharInSet( ch, ['а'..'я', 'А'..'Я']) then  

Всего записей: 100 | Зарегистр. 15-04-2002 | Отправлено: 14:55 25-02-2009
dmit000



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Mandor Sawall
Спасибо!

Всего записей: 483 | Зарегистр. 07-06-2004 | Отправлено: 15:35 25-02-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Вариант от Dmiro действительно будет работать. Но раз уж решили переходить на юникод, то и методы надо использовать соответствующие. Согасно карте юникода кирилические символы можно определить так:
Код:
if (Ord(Key) >= $400) and (Ord(Key) <= $4FF) then
Возможно ктото не согласится с таким методом, но мне он кажется более правильным.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 19:20 25-02-2009 | Исправлено: Frodo_Torbins, 19:23 25-02-2009
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dmiro
Frodo_Torbins
 
А что в D2009 нет функции для конвертирования строк (String, Char) из unicode В нужный CodePage и обратно ?

Всего записей: 683 | Зарегистр. 23-06-2008 | Отправлено: 20:21 25-02-2009
Dmiro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
 
Вот нашел в JEDI Code Library
 
function WideStringToStringEx(const WS: WideString; CodePage: Word): AnsiString;
var
  InputLength,
  OutputLength: Integer;
begin
  InputLength := Length(WS);
  OutputLength := WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, nil, 0, nil, nil);
  SetLength(Result, OutputLength);
  WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, PAnsiChar(Result), OutputLength, nil, nil);
end;

Всего записей: 100 | Зарегистр. 15-04-2002 | Отправлено: 12:28 26-02-2009
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru