Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запуск файла
 
 автор: Smak   (11.04.2007 в 16:03)   письмо автору
 
 

Вобщем я со всем этим общаюсь не очень но каким то боком сварганил на C++ Builder 5 мини прогу. Ее цель - запускать выбранный файл и все :D (эдакий анагол эксплорера)
Проблема в следующем - могу делать там все что задумал кроме запуска самого файла =P
Вообщем хелп!

  Ответить  
 
 автор: cheops   (11.04.2007 в 19:40)   письмо автору
 
   для: Smak   (11.04.2007 в 16:03)
 

Возможно вам подойдёт функция execlp() из библиотеки prosess.h
execlp("main.exe","main.exe",NULL);
execlp("Winword""Winword""doc1.doc""doc2.doc", NULL);

  Ответить  
 
 автор: Smak   (11.04.2007 в 20:10)   письмо автору
 
   для: cheops   (11.04.2007 в 19:40)
 

Эту функцию я пробовал но у меня не вышло - проблему описал под кодом

#include <vcl.h>
#pragma hdrstop
#include <process.h>
#include "Unit1.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TSE *SE;

__fastcall TSE::TSE(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TSE::FilesChange(TObject *Sender)
{
 Filename->Text = Files->FileName;
}
void __fastcall TSE::DriveChange(TObject *Sender)
{
 Dir->Drive = Drive->Drive;        
}
void __fastcall TSE::DirChange(TObject *Sender)
{
 Files->Directory = Dir->Directory;        
}
void __fastcall TSE::OpenClick(TObject *Sender)
{
 if(Filename->Text == "")
  {
   SE->Close();
  }
 //execlp("","",NULL);
}

У меня путь и имя файла могут идти от TEdit-a и TFileListBox-a там выходит AnsiString а надо Char. Превратить одно в другое и заставить работать не удалось увы.

  Ответить  
 
 автор: cheops   (11.04.2007 в 20:16)   письмо автору
 
   для: Smak   (11.04.2007 в 20:10)
 

Для того, чтобы перобразовать AnsiString в char * следует воспользоваться методом c_str()

 execlp(Filename->Text.c_str(),Filename->Text.c_str(),NULL);

  Ответить  
 
 автор: Smak   (11.04.2007 в 20:51)   письмо автору
75.9 Кб
 
   для: cheops   (11.04.2007 в 20:16)
 

Чет не запускается при этом молчит как партизан хоть бы ошибку выдал.
Прикрепил проект скажите что там не так. Зарание Спасибо.

  Ответить  
 
 автор: cheops   (12.04.2007 в 15:42)   письмо автору
 
   для: Smak   (11.04.2007 в 20:51)
 

А файл какой запускаете?

  Ответить  
 
 автор: Smak   (12.04.2007 в 17:20)   письмо автору
 
   для: cheops   (12.04.2007 в 15:42)
 

Любой выбранный в листбоксе. Прога должна работать как explorer - просто запускать выбранный файл автоматом определяя какой прогой это нуно делать(для примера щелкаем на рабочем столе на файл word.doc - запускается ворд запускается файл. или inet.html запускается браузер по умолчанию и файл). Возможно есть способ проще если ктото знает подскажите.
З.Ы.
Вариант execlp("main.exe","main.exe",NULL); тоже не прокатил хотя я пробовал запускать ехешник через прогу но результат тот же - нету результата

  Ответить  
 
 автор: cheops   (13.04.2007 в 13:58)   письмо автору
 
   для: Smak   (12.04.2007 в 17:20)
 

Чтобы выяснить имя программы, которая назначена данному расширению файла - нужно реестр потрошить... покрайней мере Windows, имена программ, соответствующих файлам берёт от туда, а уже потом передавать имя файла программе в качестве параметра
execlp("Winword""Winword""doc1.doc", NULL);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования