Russian Qt Forum

Qt => Общие вопросы => Тема начата: Jkc от Март 18, 2005, 18:37



Название: Запуск браузера из программы.
Отправлено: Jkc от Март 18, 2005, 18:37
Вот какой вопрос.  Нужн по нахатию кнопки запускать дефолтовый браузер с введённой определённой URL строкой, в Win32Api это выглядит так.
void CRamblDlg::OnButton1()
{
       ::ShellExecute(NULL, "open", http://prog.org.ru/ ,NULL,
      NULL, SW_SHOWNORMAL);      
}
Как это сделать в приложении которое пишеться на Qt ?


Название: Запуск браузера из программы.
Отправлено: Keiko от Март 18, 2005, 20:01
точно также ?  :D


Название: Запуск браузера из программы.
Отправлено: Jkc от Март 20, 2005, 20:51
#ifdef __cplusplus
extern "C" {
#include <windows.h>
}
#include <qstring.h>
#endif /* __cplusplus */
void Form1::ShellExec()
{
   
 QString str = "www.prog.org";

   ShellExecute(NULL, "open", str ,  NULL,  NULL, SW_SHOWNORMAL);
}
Если вместо open поставить NULL то пишет тоже самое но уже про третий параметр.

Выводит следующее сообщение об ошибке.
ShellExecuteW cannot conwert parametr 2 from "char[5] ' to 'LPTSTR'
Types pointed to are unrelated; convertion requires reinterpret_cast,
style cast or function-style cast


Название: Запуск браузера из программы.
Отправлено: MIB от Март 20, 2005, 21:39
Попробуй сделать со вторым параметром следующее
QString("open").ucs2()

Тоесть
::ShellExecute(NULL, QString("open").ucs2(), str.ucs2(), NULL, NULL, SW_SHOWNORNAL)

Слушай а что не используеш вместо ShellExecute(), QProcess?


Название: Запуск браузера из программы.
Отправлено: Jkc от Март 21, 2005, 14:45
Так я не против QProcess, просто я недавно с Qt начал работать
скиньте пожалуйста ссылку на пример что бы взглянуть.


Название: Запуск браузера из программы.
Отправлено: MIB от Март 21, 2005, 22:45
Вот пример коммандного шела из книги М.Шлее "Qt. Профессиональное программирование на C++" с использованием класса QProcess

class Shell : public QVBox {
Q_OBJECT
private:
    QProcess*  m_process;
    QLineEdit* m_txtCommand;
    QTextEdit* m_txtDisplay;

public:
    // ------------------------------------------------------------------
    Shell(QWidget* pwgt = 0, const char* pszName = 0)
       : QVBox(pwgt, pszName)
    {
        m_process    = new QProcess(this);
        m_txtDisplay = new QTextEdit(this);

        QHBox*  phbx = new QHBox(this);
        QLabel* plbl = new QLabel("&Command:", phbx);

        m_txtCommand = new QLineEdit("dir", phbx);
        plbl->setBuddy(m_txtCommand);

        QPushButton* pcmd = new QPushButton("&Enter", phbx);

        connect(m_process,
                SIGNAL(readyReadStdout()),
                SLOT(slotDataOnStdout())
               );
        connect(m_txtCommand,
                SIGNAL(returnPressed()),
                SLOT(slotReturnPressed())
               );
        connect(pcmd, SIGNAL(clicked()), SLOT(slotReturnPressed()));
    }

public slots:
    // ------------------------------------------------------------------
    void slotDataOnStdout()
    {
        while (m_process->canReadLineStdout()) {
            m_txtDisplay->append(m_process->readLineStdout() + "\n");
        }
    }

    // ------------------------------------------------------------------
    void slotReturnPressed()
    {
        m_process->clearArguments();
#ifdef Q_WS_WIN
        m_process->addArgument("cmd.exe /C " + m_txtCommand->text());
#else
        QStringList list = QStringList::split(" ", m_txtCommand->text());

        QStringList::iterator it;
        for (it = list.begin(); it != list.end(); ++it) {
            m_process->addArgument(*it);
        }
#endif
        if (!m_process->start()) {
            m_txtDisplay->append("Error!");
        }
    }
};


Название: Запуск браузера из программы.
Отправлено: Keiko от Март 21, 2005, 23:42
Цитата: "Jkc"
Так я не против QProcess, просто я недавно с Qt начал работать
скиньте пожалуйста ссылку на пример что бы взглянуть.


Дык читай qt/examples и assistant :)


Название: Запуск браузера из программы.
Отправлено: Perchilla от Март 22, 2005, 23:19
Цитата: "MIB"
Вот пример коммандного шела из книги М.Шлее "Qt. Профессиональное программирование на C++" с использованием класса QProcess
слушай, а у тебя есть эта книженция в электронном виде?


Название: Запуск браузера из программы.
Отправлено: MIB от Март 23, 2005, 00:14
Только в бумажном  :D


Название: Запуск браузера из программы.
Отправлено: Racheengel от Март 25, 2005, 14:57
дык поскань, распознай - и в Нет !!  8)


Название: Запуск браузера из программы.
Отправлено: Zmey от Март 29, 2005, 13:09
Сканируй и клади - сами распознаем :)