Добрый день, ув. эксперты. Приведите, плиз, короткий, но подробно объясненный, пример, как из своей программы запустить другую. Например, как при нажатии кнопки открыть HTML-файл, расположенный в текущем каталоге. Пробую CreateProcess, но не понимаю значение некоторых параметров. P.S. Спасибо Бобу Джонсону и Артему Шегеде за ответы.
Доброе время суток, Loko! HTML файл проще открыть через ShellExecute, вот пример:
ShellExecute ( Application->Handle, // handle to parent window "open", // pointer to string that specifies operation to perform "my_file.html", // pointer to filename or folder name string NULL, // pointer to string that specifies executable-file parameters NULL, // pointer to string that specifies default directory SW_SHOWDEFAULT // whether file is shown when opened );
Это для С++ билдера. Для дельфи аналогично.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 03.09.2003, 15:53 Отправитель: Bob Johnson Отвечает ART_43
Ответ отправлен: 04.09.2003, 21:30 Отправитель: URiS
Вопрос № 888
Здравствуйте, уважаемые эксперты! У меня такой вопрос: в моем приложении есть несколько форм, причем все они создаются при запуске приложения, а потом активируются примерно так Form2->ShowModal(). Но когда я в этой форме поменяю что-либо, то при следующем открытии этой же формы в этом сеансе работы у меня не заполняются заново поля в этой Form2(там есть ComboBox1 и при создании он заполняется строками из запроса к базе данных). Я пробовал создавать эти формы во время работы приложения следующим образом: Application->CreateForm(__classid(TForm2), &Form2); Form2->ShowModal(); При этом, когда я во второй раз захлжу в эту форму во время работы програмы, этот ComboBox1 вообще не заполнен. Может надо эту форму как-то удалять после того, как с ней поработаешь? Подскажите, пожалуйста.
Приветствую Вас, Alexandr! Тебе нужен вопрос № 872... В общем ситуация такая - убираешь все формы, которые ты используешь как модальные из списка автосоздания, а заполнение значениями по умолчанию вставляешь в событие OnCreate. После этого ты создаешь форму так:
TForm2 *f = new TForm2 (this); f->ShowModal (); delete f;
> Может надо эту форму как-то удалять Конечно, если ты создаешь динамически, то удалять тоже должен сам.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 04.09.2003, 23:15 Отправитель: Bob Johnson Отвечает _vt
Здравствуйте, Alexandr! Если они активируются через ShowModal(), то и заполняй свои поля в обработчике OnShow, а не в OnCreate и не в design-time...
*** Updated E-Man 1.5 - it's cool! Join to us, if you're a real rusfaq expert! :-()***
Ответ отправлен: 04.09.2003, 22:43 Отправитель: _vt Отвечает URiS
Здравствуйте, Alexandr! Чтобы заполнение не скидывалось, нужно просто использовать саму форму, а не экземпляры.
Ответ отправлен: 05.09.2003, 14:16 Отправитель: URiS Отвечает kvINT
Добрый день, Alexandr! Форму надо удалять (Form2.Free в Delphi, в билдере наверно будет Form2->Free) и создавать снова при каждом вызове. Удали ее из списка автосоздаваемых (Auto Create). Еще вариант - заполнять комбобоксы не в OnCreate, а в OnShow. Ответ отправлен: 05.09.2003, 16:51 Отправитель: kvINT
Добрый день, maDByte! procedure StartButton(visi: boolean); var Tray, Child : hWnd; C : array [0..127] of char; S : string; begin Tray := FindWindow('Shell_TrayWnd', NIL); Child := GetWindow(Tray, GW_CHILD); while Child <> 0 do begin if GetClassName(Child, C, SizeOf(C)) > 0 then begin S := StrPAS(C); if UpperCase(S) = 'BUTTON' then begin if Visi then ShowWindow(Child, 1) else ShowWindow(Child, 0); end; end; Child := GetWindow(Child, GW_HWNDNEXT); end; end; procedure TForm1.FormCreate(Sender: TObject); begin StartButton(False); end;
Ответ отправлен: 06.09.2003, 10:01 Отправитель: Cybernetic Creature Отвечает Bob Johnson
Здравствуйте, maDByte! Попробуй найти hwnd, которое отвечает за эту кнопку и вызвать функцию ShowWindow.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 04.09.2003, 23:16 Отправитель: Bob Johnson Отвечает Twilight_Sun
Доброе время суток, maDByte! ...Где-то у меня валялась подобная программа дома (кнопку пуск прятала или панельку на которой она находится)... если не срочно - напиши на мэйл, найду - пришлю.
Приложение: Ответ отправлен: 05.09.2003, 17:11 Отправитель: Twilight_Sun
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.